如何替换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的迁移,然后把被替换的机器下线,这个咱们在下篇文章中介绍。

行之所向,莫问远方。

相关推荐
OceanBase数据库官方博客2 天前
阳振坤:云时代数据库的思考 | OceanBase发布会实录
oceanbase·分布式数据库·年度发布会
RestCloud2 天前
OceanBase数据库结合ETLCloud快速实现数据集成
数据库·oceanbase·etl·分布式存储·数据集成·数据传输
OceanBase数据库官方博客2 天前
云+AI 时代的 OceanBase
oceanbase·分布式数据库·1024程序员节·年度发布会
筱筱打工人2 天前
DBerver 连接oceanBase 配置
oceanbase
不叫猫先生2 天前
【OceanBase探会】云与 AI 赋能一体化数据库的创新之旅
数据库·ai·oceanbase·1024程序员节
szial2 天前
深入解析 OceanBase 数据库中的局部索引和全局索引
数据库·oceanbase
OceanBase数据库官方博客4 天前
如何排查断连问题——《OceanBase诊断系列》十三
oceanbase·分布式数据库·故障排查·运维管理
OceanBase数据库官方博客5 天前
OceanBase 安全体系解析之身份鉴别
安全·oceanbase·分布式数据库·产品特性
小至尖尖8 天前
OB案例、金融行业核心系统跑批SQL优化
sql·oceanbase·sql优化
杨若瑜9 天前
MySQL、MariaDB、OceanBase远程异地定时备份脚本
mysql·oceanbase·mariadb