OceanBase集群技术架构、动态扩容和缩容、扩容基本步骤、集群扩容、租户扩容、缩容基本步骤

1,539 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第11天,点击查看活动详情

@[toc]

第三章:OceanBase集群技术架构

2. 动态扩容和缩容

2.1 动态水平扩展的场景

在这里插入图片描述• 以上图为例,假设一个三副本的集群,每个Zone都有3000个分区的副本,扩容后,OceanBase自动将1500个分区的副本(含主副本)迁移到新服务器中的资源Unit中 • OceanBase可以很好的帮助业务线性的进行扩容和缩容,低成本的应对大型促销等活动

2.2 动态扩容和缩容技术实现

上图假设一个表有8个分区,扩容后,在每个Zone内,OceanBase自动将4个分区的副本(含有主副本)迁移到新服务器的租户资源单元中,实现Zone内各个OB Server的负载均衡。整个扩容过程是在线动态扩容,对业务无感知,可以降低运维难度 在这里插入图片描述

2.2.1 Step1购买资源

大促之前,准备扩容服务器,并安装OceanBase软件

2.2.2 Step2追平数据

新增服务器OB Server2到集群后,OB会自动选择一些副本,动态的由OB Server1复制到OB Server2中(存量复制+redo logo增量复制),这个过程对业务无影响

2.2.3 Step3切换服务

数据追平后,OB Server1中的主副本停止服务,由OB Server2中的新的主副本接管服务,删除OB Server1中的旧副本,这个过程对业务也无影响

2.2.4 Step4缩容

洪峰流量过去后,做反向动作,将OB Server2中的副本迁回到OBServer1中,业务重新访问OB Server1中的副本

2.2.5 Step5退回资源

释放扩容服务器的资源

2.3 扩容基本步骤

  1. 为每个zone添加新的物理机器
  2. 在每台新添加的机器上,以正确的方式启动observer服务
  3. 为每个新添加的observer进程执行alter system add server;命令,将observer服务添加到集群中
  4. 执行alter resource pool unit_num = ;命令,扩充资源池中的unit个数
  5. OceanBase自动启动“rebalance”过程,将部分数据从旧的unit在线复制到新的unit上。此过程可能会花费数十分钟,具体时间取决于数据量
  6. 每个分区的数据复制完成后,OceanBase自动将服务切换到新的unit上,并删除旧unit中分区上的数据数据复制的过程是否已经完成?查看__all_virtual_sys_task_status表,是否有comment like '%partition migration%'的任务

2.4 集群扩容

在这里插入图片描述• 集群扩容后,租户obcp_t2的资源单元迁移到扩容机器上了(172.18.3.18/16/14) • 但租户obcp_t1和obcp_t2资源单元的数量还是3个,每个zone各有1个

2.5 租户扩容

在这里插入图片描述• 对租户obcp_t1和obcp_t2进行扩容后,租户的资源单元由3个变为6个; • 6个资源单元负载均衡到6台服务器上;

2.6 租户扩容 – 通过扩大资源池规格实现纵向扩展

在这里插入图片描述

2.6.1 扩容前集群及租户资源情况:

• 3-3-3-3-3集群,共5个Zone • 租户资源池使用Zone1、Zone2、Zone3 • 规格为1C2G • 资源单元数量为1(Unit Num=1)

2.6.2 扩容后集群及租户资源情况:

• 将租户资源池规格由1C2G扩容为2C8G

2.7 租户扩容 – 通过增大资源池Unit Num实现横向扩展

在这里插入图片描述

2.7.1 扩容前集群及租户资源情况:

• 3-3-3-3-3集群,共5个Zone • 租户资源池使用Zone1、Zone2、Zone3 • 规格为1C2G • 资源单元数量为1

2.7.2 扩容后集群及租户资源情况:

• 将租户资源池的Unit Num由1扩容成3

2.7.3 负载均衡

• 基于负载均衡原则,会自动迁移部分数据到新Unit中(在Zone内迁移) • 数据追平后,新Unit中将选举出主副本,从而分流业务流量

2.8 租户扩容 – 增加系统可用性三副本扩容至五副本

在这里插入图片描述

2.8.1 扩容前集群及租户资源情况:

• 3-3-3-3-3集群,共5个Zone • 租户资源池使用Zone1、Zone2、Zone3 • 规格为1C2G • 资源单元数量为1

2.8.2 扩容后集群及租户资源情况:

• 将租户资源池的由3个Zone扩容成5个Zone

2.8.3 负载均衡

从原来的3个Zone内的主副本那里复制数据(Paxos组成员有3个增加到5个) • 数据追平后,新Unit中将选举出主副本,从而分流业务流量(根据Praimary Zone的配置等情况)

2.9 缩容基本步骤

  1. 执行alter resource pool unit_num = ;命令,缩减资源池中的unit个数
  2. OceanBase自动启动“rebalance”过程,将一部分数据从待下线机器上的unit在线复制到同zone内其它机器的unit上
  3. 每个分区的数据复制完成后,OceanBase自动将服务切换到新的unit上,之后删除待下线机器的unit中分区上的数据
  4. 为每台要下线的机器执行alter system delete server;命令,完成机器下线的操作
  5. 手工终止已下线机器上的observer进程,并执行关机等操作数据复制的过程是否已经完成?查看__all_virtual_sys_task_status表,是否有comment like '%partition migration%'的任务。