开启掘金成长之旅!这是我参与「掘金日新计划 · 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 扩容基本步骤
- 为每个zone添加新的物理机器
- 在每台新添加的机器上,以正确的方式启动observer服务
- 为每个新添加的observer进程执行alter system add server;命令,将observer服务添加到集群中
- 执行alter resource pool unit_num = ;命令,扩充资源池中的unit个数
- OceanBase自动启动“rebalance”过程,将部分数据从旧的unit在线复制到新的unit上。此过程可能会花费数十分钟,具体时间取决于数据量
- 每个分区的数据复制完成后,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 缩容基本步骤
- 执行alter resource pool unit_num = ;命令,缩减资源池中的unit个数
- OceanBase自动启动“rebalance”过程,将一部分数据从待下线机器上的unit在线复制到同zone内其它机器的unit上
- 每个分区的数据复制完成后,OceanBase自动将服务切换到新的unit上,之后删除待下线机器的unit中分区上的数据
- 为每台要下线的机器执行alter system delete server;命令,完成机器下线的操作
- 手工终止已下线机器上的observer进程,并执行关机等操作数据复制的过程是否已经完成?查看__all_virtual_sys_task_status表,是否有comment like '%partition migration%'的任务。