Mesos 集群在使用 replicated_log 时无法选举 master

Mesos cluster fails to elect master when using replicated_log

https://gist.github.com/mitel/67acd44408f4d51af192

EDIT:显然是防火墙的问题。对我所有的安全组应用了允许所有类型的规则,现在我有了一个稳定的主控。一旦我弄清楚是什么阻碍了通信,我就会 post 在这里。

首先,让我为后代简要说明标志的含义。 --registry 不影响领导者选举,它指定了注册表的持久化策略(Mesos 跟踪应该在故障转移时携带的数据)。 in_memory 值不应在生产中使用,将来甚至可能会被删除。

leader 选举由 zookeeper 执行。根据您的日志,您使用了以下 zookeeper 集群:zk://10.1.69.172:2181,10.1.9.139:2181,10.1.79.211:2181/mesos.

现在,从你的日志来看,集群没有选主失败,实际上选了两次:


I0313 18:35:28.257139  3253 master.cpp:1710] The newly elected leader is master@10.1.69.172:5050 with id edd3e4a7-ede8-44fe-b24c-67a8790e2b79
...
I0313 18:35:36.074087  3257 master.cpp:1710] The newly elected leader is master@10.1.9.139:5050 with id c4fd7c4d-e3ce-4ac3-9d8a-28c841dca7f5

我不能说为什么领导者被选举两次,因为我还需要来自其他 2 个主人的日志。根据您的日志,最后选出的 master 在 10.1.9.139:5050,这很可能不是您提供日志的那个。

我在日志中看到的一件可疑的事情是相同 IP:port 的主 ID 不同。你知道为什么吗?

I0313 18:35:28.237251  3244 master.cpp:374] Master 24ecdfff-2c97-4de8-8b9c-dcea91115809 (10.1.69.172) started on 10.1.69.172:5050
...
I0313 18:35:28.257139  3253 master.cpp:1710] The newly elected leader is master@10.1.69.172:5050 with id edd3e4a7-ede8-44fe-b24c-67a8790e2b79

发现mesos masters也在5050上发起到其他masters的连接。在master的安全组中添加egress规则后,集群稳定,master选举如期进行。 firewall rules

更新:对于那些试图在 mesos/zk/.. 的各个组件之间建立内部防火墙的人 - 不要这样做。最好像 Mesosphere DCOS

那样设计安全性