搭建一个集群(2个zone,每个zone只有1个server)遇到的问题汇总

Oceanbase版本:4.3.5

今天在演练使用OBD搭建2副本集群(2个zone,每个zone只有1个server)时,安装和部署过程比较顺利。创建资源和租户的时候都已经设置启用两个zone(zone1、zone2)。业务系统连接数据库的方式是通过obproxy。

目前测试的时候发现两个问题:

1.在做灾难演练的时候估计停掉其中一台server(关机,非obproxy所在机器),这个时候业务系统已经连不上集群里,这个有点不太明白,我是用obproxy和2个zone的直接目的就是想其中一台server出现故障的时候可以集群还能用另外一个zone继续服务,现在的情况却是强制关掉其中一个server会导致整个集群挂掉(后来经过测试等机器重新启动之后执行obd start就行了,但是这存在时间滞后并且需要人工干涉,并不是我期待中的理想结果),如何能做到集群中的多个zone其中一个挂掉不影响集群对外提供服务?

2.在使用obproxy测试多个zone的负载均衡的时候(通过压力测试业务系统http接口,http接口查询其中一张表),发现最终落在两个zone的比例非常不均衡,别说对半,可能是1:99这样(根据sql_audit的svr_ip),造成这样的负载不均衡的原因是社么?有什么办法能影响负载的策略麽?

希望得到协助,感谢

  1. 需要三个 zone 每个 zone内 仅仅会有一个副本 , 其中一个zone 挂掉 ,服务才能保证正常,当您仅仅两个zone挂掉一个,就不会正常了

  2. 这个表普通表的话 , 多个zone仅仅有一个leader副本 , 没有读写分离的情况下 ,leader提供读和写服务 ,其他节点 不提供读写服务, 如果是读写分离了 ,其他节点可能会有链接。 如果是分区表 , 看访问的数据在哪里 select * from dba_ob_table_locations

仅仅leader 提供读和写 ,没有读写分离。

@论坛小助手

ob是推荐三个zone工作的,只允许其中一个zone不可用,还可以继续提供服务。
zone节点有多数派判断。

2zone本来就不推荐,挂掉一个zone,只有一个zone在工作,集群也不能正常服务的。
不做多数派判断,怎么判断是脑裂呢?

OB高可用是需要保证多数派的原则。需要大于1/2 zone数正常状态,方可支持运行