部署consul集群的最佳做法是什么?

时间:2016-07-19 15:51:25

标签: consul

我正在尝试将consul群集用于生产目的。我没有找到有关部署consul集群的最佳实践的更多信息。假设我想拥有一个包含3个节点的集群。我想知道以下场景之间有什么区别,哪个是首选场景。

  • 在每个节点上运行consul agent -server -data-dir /tmp/consul
  • 正在运行consul agent -server -data-dir /tmp/consul --bootstrap 只有第一个节点。
  • 在每个节点上运行consul agent -server -data-dir /tmp/consul --bootstrap-expect 1还是仅在第一个节点上运行?
  • 在每个节点上运行consul agent -server -data-dir /tmp/consul --bootstrap-expect 3还是仅在第一个节点上运行?

完成此初始步骤后,我应该如何将所有3个节点聚集在一起?我应该在每个节点或第一个节点上运行consul join <ip_node_1> <ip_node_2> <ip_node_3>吗?

如果我想在docker容器中运行consul代理,将-data-dir目录作为卷挂载到主机框中是一个好习惯吗?

1 个答案:

答案 0 :(得分:3)

我相信每个节点上带有-bootstrap-expect的子弹#4是首选方法。

来自Consul bootstrapping documentation

  

建议的引导方法是使用-bootstrap-expect配置选项。此选项通知Consul预期的服务器节点数,并在有许多服务器可用时自动引导。为了防止不一致和裂脑情况(即多个服务器认为自己是领导者的集群),所有服务器应该为-bootstrap-expect指定相同的值,或者根本不指定任何值。只有指定值的服务器才会尝试引导群集。

根据docs for -bootstrap-expect表示将-bootstrap标记描述为&#34;遗产&#34;

,不建议使用您的子弹#2

至于加入,我使用auto-join feature of the Atlas integration,因此我不需要手动加入或指定节点IP。

This forum Q&A也帮助确认了这种方法,并提供了使用-bootstrap-expect时会发生什么的详细信息。