背景
许多用户都会借助OCP平台来进行OceanBase集群的运维与监控,且因为考虑单节点的OCP部署,在遇故障时可能会短时间出现无法管控 OceanBase集群,多数用户倾向于采用多节点方式来部署OCP,即 OCP的 metadb集群也是三节点的集群部署。
不过,在图形化部署OCP平台的时候,虽然OCP是多节点部署,OceanBase也是集群部署,但是也很容易造成单点故障。那就是OCP连接metadb的时候,因为本身不具备负载均衡能力,虽然在部署时部署了多个obproxy,但是实际OCP在连接metadb时,还是会只通过一个obproxy进行连接,而当这个obproxy出现故障时,OCP将无法连接metadb,导致OCP不可用。
因此就有了修改OCP连接metadb集群的需求,即在metadb的多个obproxy之上,通过搭建一个负载均衡,将OCP连接metadb的方式修改为连接 VIP 或者域名等方式,从而实现高可用。
实际修改连接方式,总共分三个步骤;
第一步:修改配置文件,修改OCP连接metadb的jdbc_url,然后填写连接ocp_meta租户和ocp_moniotr租户的信息;
第二步:修改状态文件,因为在第一步修改完配置文件之后,命令行提升可能需要重新部署(redeploy)集群,这个时候千万不要按照提示重新部署,这会导致集群数据全部丢失,需要修改成状态为NEED_RESTART;
第三步:带参数重新启动OCP集群。
下面就分步骤详细介绍下:
修改配置文件
在配置文件中,只需要修改ocp-server-ce下面的内容,默认在配置文件中,是没有关于OCP jdbc_url以及ocp_meta、ocp_monitor连接方式的配置,因此是需要将这些手动加上,默认配置大致文件如下:
ocp-server-ce:style: defaultpackage_hash: bd4512f9f708fb510d98f245b1be0b03a05e2cbaversion: 4.3.1release: 20240805192406.el7depends:- oceanbase-ce- obproxy-ceservers:- name: server2ip: 11.161.xx.xxglobal:home_path: /home/admin/ocpsoft_dir: /home/admin/ocp/softwarelog_dir: /home/admin/ocp/logsocp_site_url: http://11.161.xx.xx:8080port: 8080admin_password: xxxxxxmemory_size: 6Gmanage_info:machine: 10
首先,需要获取jdbc_url相关信息,这个可以在部署OCP时使用的obd命令的日志中(默认在~/.obd/log目录),过滤出jdbc_url信息,在日志里可以看到最初启动OCP时,连接metadb使用的连接串。在获取到这个连接串之后,将其修改为最新的 VIP 或者域名,填写到配置文件里,例如VIP为10.10.10.10,我过滤出来的jdbc_url如下
jdbc_url: jdbc:oceanbase://11.161.xx.xx:2883/meta_database
修改jdbc_url为如下,然后填入到配置文件中
jdbc_url: jdbc:oceanbase://10.10.10.10:2883/meta_database
接着再将ocp_meta和ocp_monitor两个租户的连接信息填入配置文件,最终结果如下:
使用obd cluster edit-config <deploy_name> 来修改配置文件
ocp-server-ce:style: defaultpackage_hash: bd4512f9f708fb510d98f245b1be0b03a05e2cbaversion: 4.3.1release: 20240805192406.el7depends:- oceanbase-ce- obproxy-ceservers:- name: server2ip: 11.161.xx.xxglobal:home_path: /home/admin/ocpsoft_dir: /home/admin/ocp/softwarelog_dir: /home/admin/ocp/logsocp_site_url: http://11.161.xx.xx:8080port: 8080admin_password: xxxxxxmemory_size: 6Gmanage_info:machine: 10jdbc_url: jdbc:oceanbase://10.10.10.10:2883/meta_databaseocp_meta_tenant:tenant_name: ocp_metaocp_meta_username: root # User to use under ocp meta tenantocp_meta_password: xxxxxx # Password used to connect to ocp meta tenantocp_meta_db: meta_database # Database used to store ocp meta dataocp_monitor_tenant:tenant_name: ocp_monitorocp_monitor_username: root # User to use under ocp monitor tenantocp_monitor_password: xxxxxx # Password used to connect to ocp meta tenantocp_monitor_db: monitor_database # Database used to store ocp meta data
然后 :wq 保存退出
$obd cluster edit-config metadb
Search param plugin and load ok
Search param plugin and load ok
Parameter check ok
Save deploy "metadb" configuration
Use `obd cluster redeploy metadb` to make changes take effect.
Trace ID: b885716c-71a9-11ef-9ff0-00163e046d79
If you want to view detailed obd logs, please run: obd display-trace b885716c-71a9-11ef-9ff0-00163e046d79
这个时候,会提示你需要重新redeploy集群,不过千万不要执行 obd cluster redeploy metadb 来重新部署,我们可以通过修改obd记录的状态文件,绕过这个redeploy,所以第二步,就是来修改这个状态文件
修改状态文件
默认状态文件是在 ~/.obd/cluster/<deploy_name> 目录下的 .data 这个文件,vim打开之后,关注config_status这个变量,可以看到当前状态是NEED_REDEPLOY,需要将其修改为NEED_RESTART。
name: metadb
components:oceanbase-ce:hash: 736ac0f3379032dd41436c1b5a229f8d42b44e21version: 4.2.1.4obproxy-ce:hash: 0aed4b782120e4248b749f67be3d2cc82cdcb70dversion: 4.2.1.0ocp-server-ce:hash: bd4512f9f708fb510d98f245b1be0b03a05e2cbaversion: 4.3.1
status: STATUS_RUNNING
config_status: NEED_REDEPLOY
修改完之后,就可以使用命令行重启集群
重启集群
重启集群时,使用 obd cluster restart <deploy_name> --wp 的方式进行重启,--wp 的含义是 --with-parameter,即用于让重启生效的配置项生效。
重启完成之后,此时 OCP 连接metadb的方式,就从原来的单一obproxy,修改为了通过10.10.10.10这个 VIP连接的方式了。
进一步,还可以进行测试,即任意关闭metadb的obproxy,看下OCP访问是否出现断开情况。
以上修改方式,都是基于OCP 4.2.x和4.3.x版本做的测试,未来相信官方也会对这块进行优化,使 OCP 在安装部署的时候,直接可以填写 VIP 或者 域名,从而真正达到 OCP 的高可用。
OceanBase 云数据库现已支持免费试用,现在申请,体验分布式数据库带来全新体验吧 ~