如何替换OCP节点(一):使用oat | OceanBase应用实践

前言:

OceanBase Cloud Platform(简称OCP),是 OceanBase数据库的专属企业级数据库管理平台。

在实际生产环境中,OCP的安装通常是第一步,先搭建OCP平台,进而依赖OCP来创建、管理和监控我们的生产集群。但此后,可能由于机房调整或其他需求,可能会出现需要迁移或替换OCP服务器的情况。

这里,通过两篇文章分别介绍两种OCP节点的替换方法,一种是使用oat平台来替换,另一种就是使用antman脚本替换。(注:本文的环境的OCP负载均衡使用的f5,所以新的机器需要先配置f5,其他负载均衡场景同理)

环境背景:

大家如果有接触ob生产环境的经验的话,可以能会了解,前期版本,安装ocp的时候,需要安装ocp软件/metadba/obproxy三个docker包,后期ocp版本将db+proxy集成在了一个docker包里,oat的话只能纳管db+proxy

集成的metadb,分开的情况还需要使用antman脚本来替换。

>本篇文章主要介绍使用oat替换,下面说下我的软件信息

1.ocp软件:ocp-all-in-one:3.3.3-20220906114643

2.metadb+proxy:OB2277_OBP320_x86_20220429

3.oat:4.1.1_20230519_x86

操作过程:

(一)环境检查/准备

  • 检查替换机器环境,包括分盘,创建admin用户,安装docker软件等,安装好后检查下。

    cd /root/t-oceanbase-antman/clonescripts/
    sh precheck.sh -m ocp

  • 安装oat平台

    1. 上传oat软件包并解压
      Tar -xvf oat-all-in-one-x86-411.tar
    2. Load oat包
      csocpth:~ # cd oat-all-in-one-x86/
      csocpth:~/oat-all-in-one-x86 # docker load -i oat_4.1.1_20230519_x86.tgz
      06f6bfff6616: Loading layer [==================================================>] 230.8MB/230.8MB
      e1505344677e: Loading layer [==================================================>] 3.072kB/3.072kB
      01ede0eada53: Loading layer [==================================================>] 690.2MB/690.2MB
      f5323b31fcbe: Loading layer [==================================================>] 8.704kB/8.704kB
      07f573d3f476: Loading layer [==================================================>] 229.9MB/229.9MB
      d9994e0d00fd: Loading layer [==================================================>] 156.3MB/156.3MB
      aaaf3b3d3500: Loading layer [==================================================>] 56.32kB/56.32kB
      Loaded image: reg.docker.alibaba-inc.com/oceanbase/oat:4.1.1_20230519_x86
      csocpth:~/oat-all-in-one-x86 # docker images
      REPOSITORY TAG IMAGE ID CREATED SIZE
      reg.docker.alibaba-inc.com/oceanbase/oat 4.1.1_20230519_x86 7efa444ce0b9 3 weeks ago 1.28GB
    3. 运行oat
      csocpth:~/oat-all-in-one-x86 # oat_image=docker images | grep oat | head -1 | awk '{printf $1":"$2"\n"}'
      csocpth:~/oat-all-in-one-x86 # docker run --name=oat -d -e DEPLOY_MODE=generic -v /home/oat/data_dir:/data -v /home/oat/db_dir:/var/lib/mysql -p 7000:7000 --restart on-failure:5 $oat_image
      7ea6e4d2b930445afddb026a794f0e7ca533d41fc5e5f53a63d324159cd16aec

    观察启动日志,确保无报错信息

    docker logs -f oat

####前台登录oat,使用[ip]:7000连到前台页面,第一次登录初始密码aaAA11__ 输入后设置密码#####

  • 确保替换机器及需要替换机器的ocp平台的机器的hostname都设置了,可以hostname -i 检查一下。

  • 检查ocp组件信息

    OCP-3:~/t-oceanbase-antman # docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    f5a1125aa84a reg.docker.alibaba-inc.com/oceanbase/ocp-all-in-one:3.3.3-20220906114643 "/usr/bin/supervisor..." 5 months ago Up 8 weeks ocp
    65a0722edbea reg.docker.alibaba-inc.com/antman/ob-docker:OB2277_OBP320_x86_20220429 "/usr/bin/supervisor..." 5 months ago Up 5 months metadb
    #####oat纳管meta有问题,可以修改meta的docker名字,docker rename META_OB_ZONE_2 metadb

  • 检查ocp meta 集群信息

    OCP-3:~/t-oceanbase-antman # mysql -h111.11.11.112 -P2883 -uroot@sys#obcluster -p'CqVgg9}Aut' -Doceanbase

    MySQL [oceanbase]> select a.svr_ip,a.zone,b.name,b.info from __all_server a,__all_zone b where a.zone=b.zone and b.name in ('idc','region');
    +---------------+----------------+--------+------+
    | svr_ip | zone | name | info |
    +---------------+----------------+--------+------+
    | 111.11.11.111 | META_OB_ZONE_1 | idc | c6 |
    | 111.11.11.111 | META_OB_ZONE_1 | region | jn |
    | 111.11.11.112 | META_OB_ZONE_2 | idc | c6 |
    | 111.11.11.112 | META_OB_ZONE_2 | region | jn |
    | 111.11.11.113 | META_OB_ZONE_3 | idc | c6 |
    | 111.11.11.113 | META_OB_ZONE_3 | region | jn |
    +---------------+----------------+--------+------+
    6 rows in set (0.00 sec)
    ###确认需要替换机器的zone,idc。oat纳管ocp机器时机房和地域需要填写一致

    SHOW PARAMETERS LIKE 'obconfig_url'
    #####确认obconfig_url设置不是要被替换掉的机器吧,正常有负载均衡的ocp设置的都是负载均衡的ip###

(二)oat纳管metadb和ocp产品

  • 通过oat将ocp机器和要替换的机器纳管

#####机房和地域信息与集群中的信息匹配

######添加后的机器用途应ob产品服务和observer都有的

  • 将需要纳管的组件的镜像包传入oat本地,ps:(纳管metadb需要输入metadb的sys租户的root密码,如果没有的话可以找安装ocp时的antman目录下有getpass.sh的脚本执行下默认密码会输出)

    ###复制到oat的本地目录
    cp OB2277_OBP320_x86_20220429.tar /home/oat/data_dir/images/
    cp ocp333.tar.gz /home/oat/data_dir/images/

  • 先纳管组件,后纳管 ocp产品,纳管时会有镜像本地扫描,扫描之后就能识别到刚才传的镜像包

  • 纳管 ocp

(三)新节点加入

  • 刚纳管的ocp产品添加新的机器

#####等任务跑完,就可以去替换机器上看下,ocp的docker就起来了,可以通过8080去使用该节点登录ocp的前台页面了

复制代码
csocpth:~ # docker ps
CONTAINER ID        IMAGE                                                                      COMMAND                  CREATED             STATUS              PORTS                              NAMES
bdd7deede099        reg.docker.alibaba-inc.com/oceanbase/ocp-all-in-one:3.3.3-20220906114643   "/usr/bin/supervisor..."   17 seconds ago      Up 15 seconds                                          ocp
  • 纳管的meta 库加入新机器,PS:(该版本oat的metadb组件在添加新机器的时候有报错,文末会有分享处理办法)

检查集群中新的节点已经加进来了,meta库的docker也起来了,并且登录集群可以看到server也起来。

复制代码
csocpth:~ # docker ps
CONTAINER ID        IMAGE                                                                      COMMAND                  CREATED             STATUS              PORTS                              NAMES
c143f7252956        reg.docker.alibaba-inc.com/antman/ob-docker:OB2277_OBP320_x86_20220429     "/usr/bin/supervisor..."   4 minutes ago       Up 4 minutes                                           metadb
bdd7deede099        reg.docker.alibaba-inc.com/oceanbase/ocp-all-in-one:3.3.3-20220906114643   "/usr/bin/supervisor..."   11 minutes ago      Up 11 minutes                                          ocp
MySQL [oceanbase]> select * from __all_server;
+----------------------------+----------------------------+---------------+----------+----+----------------+------------+-----------------+--------+-----------------------+--------------------------------------------------------------------------------------+-----------+--------------------+--------------+----------------+-------------------+
| gmt_create                 | gmt_modified               | svr_ip        | svr_port | id | zone           | inner_port | with_rootserver | status | block_migrate_in_time | build_version                                                                        | stop_time | start_service_time | first_sessid | with_partition | last_offline_time |
+----------------------------+----------------------------+---------------+----------+----+----------------+------------+-----------------+--------+-----------------------+--------------------------------------------------------------------------------------+-----------+--------------------+--------------+----------------+-------------------+
| 2023-01-08 12:17:49.336751 | 2023-01-08 12:18:04.683418 | 111.11.11.111 |     2882 |  1 | META_OB_ZONE_1 |       2881 |               1 | active |                     0 | 2.2.77_20211210235205-46f61a1b0a27dfa2ea1f65366cbedd77e5c4e785(Dec 11 2021 00:24:34) |         0 |   1673151479695641 |            0 |              1 |                 0 |
| 2023-01-08 12:17:49.373647 | 2023-01-08 12:18:06.015801 | 111.11.11.112 |     2882 |  2 | META_OB_ZONE_2 |       2881 |               0 | active |                     0 | 2.2.77_20211210235205-46f61a1b0a27dfa2ea1f65366cbedd77e5c4e785(Dec 11 2021 00:24:34) |         0 |   1673151482026856 |            0 |              1 |                 0 |
| 2023-01-08 12:17:49.339787 | 2023-01-08 12:18:06.037221 | 111.11.11.113 |     2882 |  3 | META_OB_ZONE_3 |       2881 |               0 | active |                     0 | 2.2.77_20211210235205-46f61a1b0a27dfa2ea1f65366cbedd77e5c4e785(Dec 11 2021 00:24:34) |         0 |   1673151482049381 |            0 |              1 |                 0 |
| 2023-06-14 15:37:24.042744 | 2023-06-14 15:37:36.893865 | 143.33.33.32  |     2882 |  4 | META_ZONE_4    |       2881 |               0 | active |                     0 | 2.2.77_20211210235205-46f61a1b0a27dfa2ea1f65366cbedd77e5c4e785(Dec 11 2021 00:24:34) |         0 |   1686728254897197 |            0 |              0 |                 0 |
+----------------------------+----------------------------+---------------+----------+----+----------------+------------+-----------------+--------+-----------------------+--------------------------------------------------------------------------------------+-----------+--------------------+--------------+----------------+-------------------+

(四) 旧节点剔除

####OCP节点剔除同理##########

报错记录及处理:

  • 添加新机器到metadb组件的爆粗

需要在oat的docker里去修改上图的python脚本,修改完后重启下相关组件

复制代码
[root@7ea6e4d2b930 oat]# supervisorctl status
airflow_scheduler                RUNNING   pid 266, uptime 1 day, 1:41:52
backend                          RUNNING   pid 267, uptime 1 day, 1:41:52
[root@7ea6e4d2b930 oat]# supervisorctl restart airflow_scheduler
airflow_scheduler: stopped
airflow_scheduler: started
[root@7ea6e4d2b930 oat]# supervisorctl status
airflow_scheduler                RUNNING   pid 23812, uptime 0:00:14
backend                          RUNNING   pid 267, uptime 1 day, 1:42:19

总结:

到这里使用oat去替换ocp机器的操作就结束了,可能大家看这篇文章感觉还比较简单,但是整个过程来回做了好几遍,为了别人以后少踩坑,所以写这篇文章分享。ocp软件的docker替换基本没有问题,主要是metadb的替换,其实从上面可以看出oat替换ocp的时候,新加机器是在metadb中新创建了一个zone,然后再把被替换机器下掉,其中还涉及新建资源池修改Locality,增加副本数等操作。其实使用antman脚本的话这个步骤就不太一样,他是将新机器加入到需要替换机器的同一个zone内,然后做同zone内unit的迁移,然后把被替换的机器下线,这个咱们在下篇文章中介绍。

行之所向,莫问远方。

相关推荐
冰 河2 天前
《Mycat核心技术》第21章:高可用负载均衡集群的实现(HAProxy + Keepalived + Mycat)
分布式·微服务·程序员·分布式数据库·mycat
韩曙亮5 天前
【系统架构设计师】数据库系统 ② ( 分布式数据库 | 分布式数据库 特点 | 分布式数据库 分层模式 | 两阶段提交协议 - 2PC 协议 )
数据库·分布式·系统架构·分布式数据库·软考·dbms·两阶段提交协议
ActionTech6 天前
ChatDBA VS DeepSeek:快速诊断 OceanBase 集群新租户数据同步异常
oceanbase·deepseek·chatdba·爱可生
码农老起7 天前
从Oracle到OceanBase数据库迁移:全方位技术解析
数据库·oracle·oceanbase
OceanBase数据库官方博客7 天前
数据文件误删除,OceanBase中如何重建受影响的节点
oceanbase·分布式数据库·运维管理·实践经验
码农老起11 天前
OceanBase数据库基于脚本的分布式存储层性能深度优化
数据库·分布式·oceanbase
码农老起11 天前
万亿级数据量的OceanBase应用从JVM到协议栈立体化改造实现性能调优
jvm·oceanbase
OceanBase数据库官方博客12 天前
OceanBase 读写分离最佳实践
oceanbase·分布式数据库·读写分离·最佳实践
OceanBase数据库官方博客14 天前
网易云信架构升级实践,故障恢复时间缩至8秒
oceanbase·分布式数据库·架构选型·布道师计划
OceanBase数据库官方博客16 天前
自然语言秒转SQL—— 免费体验 OB Cloud Text2SQL 数据查询
数据库·sql·ai·oceanbase·分布式数据库·向量·text2sql