oceanbase各组件服务自启方式有什么推荐的方式吗

【 使用环境 】
测试环境
【 OB or 其他组件 】
libobclient-2.0.1-3.el7.x86_64.rpm
obclient-2.0.1-2.el7.x86_64.rpm
ob-deploy-1.3.3-11.el7.x86_64.rpm
obproxy-ce-3.2.3-2.el7.x86_64.rpm
oceanbase-ce-3.1.3-10100032022041510.el7.x86_64.rpm
oceanbase-ce-devel-3.1.3-10100032022041510.el7.x86_64.rpm
oceanbase-ce-libs-3.1.3-10100032022041510.el7.x86_64.rpm
oceanbase-ce-utils-3.1.3-10100032022041510.el7.x86_64.rpm
【 使用版本 】
oceanbase-ce-3.1.3
【问题描述】

应用场景

我们在项目部署阶段,经常是临时电,随时可能断电,各种条件不太完善,服务器可以做到自启,但是还要手动上去启动服务器,是比较麻烦的。即使到了正式运行阶段也是有机房维护也是会断电的。

目前我在论坛中看到有如下两篇帖子相关:

oceanbase的组件目前都不能自启,官方文档里对自启配置也没有相关说明

服务启动方式

目前我想到的自启方式有两种:

  1. 在每台机器上自启对应服务的脚本
  2. 使用OBD命令开机自启

第一种方式需要了解每个服务的运行命令(目前我还不是特别清楚),而且我看到例如ob进程命令里有一些配置相关的参数,我比较担心这种方式启动后会脱离OBD控制(例如OBD修改了配置但是服务每次还是会用原来的配置)。
第二种方式由OBD管理,我认为更好,但是OBD所在机器启动的时候,不能保证所有机器都已经完成开启,启动太早肯定会造成启动失败,我认为比如延时5分钟启动更好

进程启动方式

关于Linux系统的启动方式,以往我常使用的启动方式有两种:

  1. 将启动脚本写在/etc/rc.d/rc.local
  2. 写成*.service做成系统服务

通常情况下我会选择写系统服务,但是系统服务使用OBD启动应该不太好写

目前的打算

目前我的打算还是用OBD启动命令写在rc.local文件里,有什么更好的方式推荐吗?或者说oceanbase集群并不适合开机自启,手动启动一下比较好?

对于第一种方式,无需担心。对于一个已经启动的集群,可以不带参数再次启动。observer会读取之前持久化的配置进行启动。
不适合开机自启,自启动有时钟跳变的风险。机器刚启动的时候时钟同步可能还未完成,这时候去启动observer,就可能会发送时钟跳变。

1 个赞

那就想办法延时开启自启,应该就没问题了吧

还是存在风险。
相比之下建议使用OBD,OBD会进行时间同步的检查。

1 个赞

没用ocp?

打算要用,但是ocp也不能自启吧,还是要登上网页点一下,只是方便了点,目前我担心OCP的资源占用太多导致一些比较小的项目没有搭建条件,打算OBD部署有条件再用OCP接管

1 个赞

嗯嗯,我还是更倾向于从官方提供的OBD或者OCP的角度去解决