本文主要描述把 OceanBase DNS 替换成 F5 VIP 的变更步骤。
适用版本
OceanBase 数据库 V3.x 版本。
资源背景
- OBDNS 域名
- OCP:xxx.old.com
- OCP OBProxy: xxx-obproxy.old.com
- F5 域名:
- OCP:xxx.new.com ○ OCP OBProxy:xxx-obproxy.new.com
- 新的域名服务器:192.xxx.xxx.111
操作步骤
更新
/etc/resolv.conf。在所有 OBServer、OCP 服务器上,更新
/etc/resolv.conf,添加新的 nameserver 地址 192.xxx.xxx.111。options timeout:1 attempts:1 nameserver <ocp01_ip> nameserver 192.xxx.xxx.111验证新域名。
验证新域名是否能被解析,以及通过 OCP 和 OCP OBProxy 新域名验证服务是否正常:
- 解析可以用 ping 命令验证,有 IP 返回表示正常。
- OCP 通过在浏览器输入上一个步骤解析出的 IP 加 F5 端口号的方式验证,如果能登录,表示正常。
- OBProxy:可以通过 MySQL 命令连接 SYS 租户验证,能连接,表示正常。
修改业务集群以及 OceanBase Meta 集群的 obconfig_url。
- 验证新域名的 OCP 可用,在任意一台 OBServer 上执行如下命令。
curl -u "admin:root" -L "http://xxx.new.com:80/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=admin&ObRegion=obcluster"正确返回示例:
{"Code":200,"Cost":1,"Data":{"ObCluster":"obcluster","Type":"PRIMARY","ObRegionId":100000,"ObClusterId":100000,"RsList":[{"sql_port":2881,"address":"192.xxx.xx.111:2882","role":"LEADER"},{"sql_port":2881,"address":"192.xxx.xx.115:2882","role":"FOLLOWER"},{"sql_port":2881,"address":"192.168.80.148:2882","role":"FOLLOWER"}],"ReadonlyRsList":[],"ObRegion":"obcluster","timestamp":0},"Message":"successful","Server":"192.xxx.xx.115","Success":true,"Trace":"b9253c697c7f492b"}验证通过后,登录 OCP,将业务集群的 obconfig_url 更新成新域名的值。
点击左上角导航栏的 集群,在 集群列表 中点击集群名进入相应的集群管理页面,点击 参数管理,搜索参数名搜索框中输入"obconfig_url",点击 修改值**,替换成新的域名和端口号。比如:
http://xxx.new.com:80/services?Action=ObRootServiceInfo&User_ID=alibaba&UID=ocpmaster&ObRegion=new无需重启即可生效。
用类似的步骤修改 OCP Meta 集群的 obconfig_url。
更新 OCP 元数据。
在 OCP 首页,点击 系统管理 下的 系统参数,修改以下 5 个值。
参数 参数值 示范值 ocp.monitordb.host ${OBPROXY_VIP} xxx-obproxy.new.com ocp.monitordb.port ${OBPROXY_VPORT} 2883 ocp.site.url http://${OCP_VIP}:${OCP_VPORT} http://xxx.new.com:80 ocp.system.obproxy.address ${OBPROXY_VIP} xxx-obproxy.new.com ocp.system.obproxy.port ${OBPROXY_VPORT} 2883 重启 OBAgent。
修改 OBServer 上的 OBAgent 配置并重启。
说明
OCP V2.5 以后,OCP Agent 有了自动同步 OCP 地址变更的能力,可以跳过这一步。
修改配置 OBAgent 配置
/home/admin/obztools_agent/conf/config.conf。配置文件替 api_url 一行替换成
api_url = http://ocp.new.com:80/services。重启 OBAgent:
cd /home/admin/obztools_agent &&export PYTHONPATH=/home/admin/obztools_agent:/home/admin/ocp_agent/libs ./ob_agent.py stop agent ./ob_agent.py stop proxy_agent cd /home/admin/obztools_agent &&export PYTHONPATH=/home/admin/obztools_agent:/home/admin/ocp_agent/libs ./ob_agent.py start agent proxy_agent进入 OCP 服务器上的 OB docker,修改 OBAgent 配置并重启。
docker exec -it META_OB_ZONE_1 bash
参考上面修改 OBAgent 配置文件,并重启 OBAgent。在 OCP 页面观察集群监控数据是否正常。
重新部署业务集群使用的 OBProxy。
由于修改业务集群 OBProxy 的 obproxy_config_server_url 操作比较繁琐,可以通过 OCP 白屏逐个卸载并重新安装 OBProxy 的方式完成基于新域名 OCP 的 OBProxy 变更。
重装 OCP docker。
由于 OceanBase Meta 的连接域名变了,OCP 容器又通过环境变量获取连接串信息,容器无法动态变更环境变量,所以需要重装 OCP 容器:
修改 obcluster.conf
lb_mode=f5 OBPROXY_F5_VIP=ocp-obproxy.new.com OBPROXY_F5_VPORT=2883 OCP_F5_VIP=ccbocp.ccb.com OCP_F5_VPORT=80执行:
cd /root/t-oceanbase-antman ./install.sh -i 7 -c 7
安装完成后,登录 OCP,检查是否正常。
去掉
/etc/resolv.conf中旧的 nameserver。确认 OCP、OBProxy、OBAgent 工作正常后,可以将
/etc/resolv.conf中旧的 nameserver 删掉。