三人行必有我师

ES集群跨机房的性能和脑裂问题

Elasticsearch | 作者 wangxinrong | 发布于2020年10月23日 | 阅读数:2504

我试过阿里云同地区不同可用区的ECS上的ES节点组成一个集群,运行的时候没有问题,机房间的延时也就几毫秒。
 
如果是异地机房,延时有几十毫秒甚至上百毫秒的情况下,性能会怎样呢,特别是写入性能,同一个索引的主分片有的分布在A机房有的在B机房,这时A、B机房都有应用去写数据,这些数据的写入性能是不是按照最长的网络延时情况来估算,会差到什么程度,有没有人有过类似的经验。
 
另外就是机房故障的问题,如果3个master节点,1个在A机房,2个在B机房,配置discovery.zen.minimum_master_nodes: 2,配置Shard Allocation Awareness机房感知,保证两个机房都有完整的一份数据。
如果是A机房故障或A、B机房之间线路断开,那还好,A不可用,B上集群正常。但如果是B机房完全故障,那么整个集群就变得不可用。
 
如果换成A、B机房各放一个master,以及数据节点,另外在第三方机房C放一台master,可以在A或B完全故障时保证另一个机房集群正常。但如果出现A、B机房之间线路断开,这时AC、BC之间互相能通信,master之间又会怎样处理呢,会脑裂吗?
 
还有在ES7的版本下,已经没有minimum_master_nodes配置的概念,如果出现上述的A、B机房故障,或机房间的网络断开,它会怎么样呢?
已邀请:

要回复问题请先登录注册