1、有zone1 zone2 zone3三个zone
2、每个zone上有2个observer 进程
3、创建的pool unit_num=2,此时可以创建成,因为一个observer上只有能有一个unit,满足条件可以创建pool成功,假设 zone1上一个observer挂掉,此时不满足条件,会发生什么情况?
谢谢!
应该是2:2:2部署架构,并且unit_num=2, 如果挂掉一个observer,此时是2:2:1架构,unit_num=2就不满足了,此时会怎么报错?
此时还是满足多数派原则,可能产生切主等操作,可以通过白屏或者黑屏修改该zone的unit个数,待节点修复完成后再修改unit_num从新进行副本均衡
这个问题我在4.2.1.8下测试也感觉有点疑惑,我这里的情况如下:
1.2+2+2模式下,unit数量为2,我模拟zone2的observer进程被关闭
2.高可用肯定没问题,但是副本补全有点问题,因为一个observer只能启动一个unit,zone2就缺少一个unit,这时候副本从以下语句看没有被补全,只有zone1和zone3。
SELECT DATABASE_NAME,TABLE_NAME,TABLE_ID,ZONE,SVR_IP,SVR_PORT,LS_ID FROM oceanbase.DBA_OB_TABLE_LOCATIONS where database_name =‘xxx’ and table_name=‘xxx’;
3.从DBA_OB_ROOTSERVICE_EVENT_HISTORY里看问题节点是被permanent_offline了
并且有start_add_ls_replica和finish_add_ls_replica,提示data_source为zone问题节点,destination为zone2剩余节点
4.“通过白屏或者黑屏修改该zone的unit个数” 这个操作从ocp上执行也是会报错,需要将zone2的ob进程重新拉起来才行。
5. ocp下尝试将2+2+2、unit为2场景下某个机器直接删除,会提示报错,“剩余的server数不能小于租户[test2]在zone=zone2下的unit数”
疑惑的是:
1.4.2.1版本下因为有unit和ls对应关系,是不是需要unit有足够资源才能补足副本
2.相关告警感觉有缺失,没有从ocp上发现相关副本不足的提示
3.start_add_ls_replica和finish_add_ls_replica这个提示针对的是什么呢
此时会报错大概意思就是没有足够的节点来分配这个资源。 这种情况下就是资源不足。需要尽快修复挂掉的 节点进程。
集群拓扑 2-2-2 下,如果租户是 1-1-1 ,任意一个 zone 有节点故障,该zone 的另外一个节点是可以自动补齐受影响的租户的副本(也有个前提是剩余节点的剩余资源足够分配)。如果租户拓扑也是 2-2-2 ,那么有 zone 的节点故障,这里就没有补齐一说了(因为没有剩余资源可分配)。
此时再调整 unit_num 从你描述来看也是不可以的。此时剩下的方案就是尽快修复故障机器,或者加新机器到故障节点所在zone。那时候才会逐步有副本补齐动作。
以上逻辑从 OB 1.0就是这样的,4.0 后日志流重构,也没有改变这个逻辑。
多谢指导。就是说副本补齐和unit资源是否足够其实是强相关的。
另外这块告警逻辑我看OCP上的告警只有observer_process_stop(测试场景通过kill ob进程模拟),没有相关的副本不足告警,是有其他逻辑在吗
副本不足是人为判断,ocp 好像是没有这个告警。节点进程告警也够了。节点进程掉了,是要及时处理。如果资源充足的话(能副本自动补齐),节点进程告警就不紧急了,可以慢悠悠的处理;如果资源不足(没有副本自动补齐),那就紧急了。
在生产环境,大部分业务,比较稳妥的是 业务集群规模2-2-2,租户拓扑都 1-1-1 。 节点资源利用率和负载控制在 50% 上下。金融业务一般都是这样。 只有少数业务的租户拓扑是 2-2-2 或更多。
嗯,我是想着至少留一个空闲机器放那,真没法恢复故障机器了,备用机就直接顶进去