微服务管理--Docker搭建Consul集群
一台主机上搭建Consul集群并测试
借助Docker容器,已经启动了一个server节点,并能够与之通信。 接下来,希望借助Docker来搭建consul集群。以启动3个consul集群节点为例:
1、启动第一个节点
启动第一个节点的时候没有使用了 -bootstrap 参数, 而是使用了 -bootstrap-expect 3, 使用这个参数节点会等到所有三个端都连接到一起了才会启动并且成为一个可用的cluster。
$ docker run -d --name node1 -h node1 consul agent -server -bootstrap-expect 3
2、查看节点IP
我们需要知道这个container的内部IP, 使用下面的命令我们吧这个IP放到了环境变量 JOIN_IP 里。
$ JOIN_IP="$(docker inspect -f '{{ .NetworkSettings.IPAddress }}' node1)"
3、启动第二个节点
启动 node2并且告诉他通过 $JOIN_IP 加入到 node1:
$ docker run -d --name node2 -h node2 consul agent -server -join $JOIN_IP
4、启动第三个节点
同样的方法我们启动 node3:
$ docker run -d --name node3 -h node3 consul agent -server -join $JOIN_IP
现在我们就有了一个拥有3个节点的运行在一台机器上的集群。注意,根据Consul Agent的名字给container起了名字。
我们没有暴露出任何一个端口用以访问这个集群, 但是我们可以使用第四个agent节点以client的模式(不是用 -server参数)。这意味着他不参与选举但是可以和集群交互。而且这个client模式的agent也不需要磁盘做持久化。
$ docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node4 progrium/consul -join $JOIN_IP
现在我们可以就可以通过这几个暴露的端口和集群交互了, 也可以试着杀死、添加或者重启集群中的几个节点看看集群是如何管理这些节点的。