如何替换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数据库官方博客21 小时前
半连接转内连接 | OceanBase SQL 查询改写
sql·oceanbase·分布式数据库
OceanBase数据库官方博客1 天前
解析在OceanBase创建分区的常见问题|OceanBase 用户问题精粹
oceanbase·分布式数据库·分区
OceanBase数据库官方博客1 天前
半连接转内连接规则的原理与代码解析 |OceanBase查询优化
sql·oceanbase·分布式数据库
IT培训中心-竺老师4 天前
OceanBase 数据库分布式与集中式 能力
数据库·分布式·oceanbase
靖顺4 天前
【OceanBase 诊断调优】—— OceanBase 数据库网络速率配置方案
网络·数据库·oceanbase
尚雷558012 天前
OceanBase 社区版 4.0 离线方式升级bp1至bp2 指南(含避坑总结)
oceanbase
五月高高12 天前
Linux部署oceanbase
linux·oceanbase
靖顺15 天前
【OceanBase 诊断调优】—— 统计信息自动收集超时导致的估行不准 SQL 选择错索引
数据库·sql·oceanbase
it界的哈士奇16 天前
Oceanbase离线集群部署
oceanbase