1 查找consul镜像

sudo docker search consul

2 下载官方consul镜像

sudo docker pull docker.io/consul

3 集群的配置和启动

假设需要部署到一个数据中心的三台机器上,内网IP分别是:

  • 主机一:192.168.0.1
  • 主机二:192.168.0.2
  • 主机三:192.168.0.3

实战结论:云服务器只能绑定内网IP,无法绑定外网IP,但是可以通过外网IP访问到。

3.1 在主机上创建数据和配置文件存放的目录

mkdir -p /data/consul_data/data
mkdir -p /data/consul_data/conf

3.2 启动任意一个consul服务并作为leader

sudo docker run —net=host —name consul -v /data/consul_data/data:/consul/data -v /data/consul_data/conf:/consul/config -d docker.io/consul consul agent -server -bind=192.168.0.1 -bootstrap-expect=3 -data-dir /consul/data -config-dir /consul/config

指令解释

—net=host :
采用主机网络配置,若采用默认的bridge模式,则会存在容器跨主机间通信失败的问题
-v /data/consul_data/data:/consul/data :
主机的数据目录挂载到容器的/consul/data下,因为该容器默认的数据写入位置即是/consul/data
-server -bind:192.168.0.1:
consul以server模式启动,并绑定到主机IP 192.168.0.1 上
-bootstrap-expect=3:
server要想启动,需要至少3个server
-data-dir /consul/data:
指定容器内consul的数据目录

3.3 其余主机加入leader集群

sudo docker run —net=host —name consul -v /data/consul_data/data:/consul/data -v /data/consul_data/conf:/consul/config -d docker.io/consul consul agent -server -bind=192.168.0.3 -bootstrap-expect=3 -data-dir /consul/data -config-dir /consul/config -join 192.168.0.1
就比上一步多了一个 -join,代表加入ip为xxx的集群中

4 检查集群状态

4.1 命令行模式进入容器

sudo docker exec -it 容器id /bin/sh

4.2 查看集群信息

consul members

4.3 查看当前节点信息

比如是否是leader等:consul info