OCP扩容OBServer节点,OBShell启动失败

图片

当前集群三个节点的agent版本信息

上述报错的 cluster agent 指的是你集群中已存在的 obshell 节点的版本号是 4.2.3.0,扩容到集群中的 obshell 节点的版本号是 4.2.4.2。
至于为什么会出现这个情况,稍等我确认一下。
非常抱歉!

上周我用OBD扩容,最后obshell启动不了也是这个问题。

我不理解为什么新扩容的节点,任何组件不是完全按照已有节点的版本来进行。

存量ob节点 obshell版本: 4.2.4.2

新扩容ob节点,obshell版本:4.2.3.0

是很奇怪,马上排查!

麻烦你连接 ob 看下 select * from oceanbase.__all_server;

最下面那台就是55,扩容应该是扩容进去了

这是OCP里面看到的,状态也是正常的

是的,到 start obshell 这一步的时候,observer 其实是已经扩容进去了的。
麻烦再问一下,您使用 obd 部署这个集群的时候,也是指定了 ob 的版本是4.3.4.0 吗?
或者说你期间有做过 ob 的升级之类的吗?

另外,如果这个问题有阻塞到你的话,可以直接在 ocp 上跳过这个任务,不会影响后续的集群运维的。
然后我们在一块排查 obshell 的问题。

我再等等你们吧,我目的就是想顺利扩容一个节点,以后再慢慢继续扩。

嗯嗯好的 ,非常感谢,另外这个信息您看能提供一下吗。

当初OBD初始化集群应该是V4.3的低版本,然后随着你们发布新版本,一路OBD升级到当前的V4.3.4的。

昨天用obd web部署了独立metadb的OCP,今天用OCP接管了集群,然后扩容新节点,然后卡在obshell这一步。

解决办法:

  1. kill 掉所有节点(包括55)上 obshell 的进程 server 和 daemon(守护) 都要kill掉,kill 掉之后 check 一下没有 obshell 进程。
  2. 删除所有节点(包括55)/oceanbase/obtest/oceanbase/下的 .meta 文件。
  3. 连接 ob 集群,删除 ocs 数据库。drop database ocs
  4. 将 55 机器上的二进制文件 /oceanbase/obtest/oceanbase/bin/obshell 替换到其他节点中。
  5. 在任一节点上执行 export OB_ROOT_PASSWORD=“你的密码”; /oceanbase/obtest/oceanbase/bin/obshell cluster start -a

请放心操作,这些动作并不会影响到集群或者 ocp 的运维。

5、 是任一节点 还是所有节点都有执行?

应该是所有节点启动吧

分析学习

任一节点就可以的,obshell 会自动拉起其他节点的

按照步骤执行,有两点补充

1、拷贝的obshell文件要注意属性

chmod 755 obshell

2、在其中一台启动obshell它并没有去拉起其他的,逐台执行启动obshell后正常

目前所有obshell已经统一版本,并且启动成功。

我再次执行之前失败的任务,依然超时,估计是还是任务杀掉obshell,但是因为密码特殊字符导致的无法启动。

我现在还是在55上手动启动,然后绕过这个任务,继续扩容?

不用了,直接 跳过这个任务继续执行后面的任务就可以了,此时扩容实际上已经完成了。

如果发现 55 上的 obshell 被杀掉了就直接 通过 obshell agent start 拉起来就可以了

ok了,不容易啊。

感谢支持!

明天我再研究一下扩容ob后续怎么分配资源。