需要至少3个ActiveMQ实例和3个ZooKeeper服务器来运行具有复制的LevelDB存储的主/从设置的原因是什么?如果使用至少需要3台服务器的ZooKeeper强制要求,那么ZooKeeper要求至少3台服务器提供可靠性的理由是什么?
或者还有其他原因吗?
谢谢!
答案 0 :(得分:0)
Zookeeper需要至少3台服务器才能选择新的Activemq Master。 Zookeeper需要多数(n / 2 + 1)来选举新的主人。如果没有多数,则不会选择主设备,系统将失败。这与您使用奇数个Zookeepers服务器的原因相同。 (EG.3服务器为您提供与4相同的故障率,因为大多数,仍然只能丢失1台服务器。)
对于Activemq,至少3台服务器的必要性来源于消息的同步方式,以及当选择新的主机时,它至少需要一定数量的节点(N / 2 + 1)才能识别最新的更新。 ActiveMQ将与1个从站同步消息,然后以OK响应。然后它将与所有其他从属异步同步。如果节点出现故障时不存在仲裁,则Zookeeper无法区分哪个节点最新更新。这是当您最初只有2个节点时会发生的情况,因此建议至少使用3个节点。
From ActiveMQ site,如何运作:
需要同步到磁盘的所有消息传递操作都将等待更新在完成之前复制到节点的法定数量。因此,如果您使用副本配置商店=" 3"那么法定人数是(3/2 + 1)= 2。主服务器将在本地存储更新,并在报告成功之前等待另外一个从服务器存储更新。另一种思考方式是,商店将同步复制到法定数量的复制节点,并将异步复制复制到任何其他节点。
当选择新的主服务器时,您还需要至少一个在线的法定数量的节点才能找到具有最新更新的节点。具有最新更新的节点将成为新的主节点。因此,建议您至少使用3个副本节点运行,这样就可以在不遭受服务中断的情况下关闭节点。