1、拉取consul镜像 这里指定了版本,你也可以不指定版本
docker pull consul:1.4.4
2、创建单机版consul,单机版 Consul,单机肯定需要安装 Server 模式的 Consul
docker run -d -p 8500:8500 -v /data/consul:/consul/data -e CONSUL_BIND_INTERFACE='eth0' --name=consul_server_1 consul:1.4.4 agent -server -bootstrap -ui -node=1 -client='0.0.0.0' -d:参数指定 Docker 网络类型,有 bridge、overlay。 -P :是容器内部端口随机映射到主机的高端口。 -p : 是容器内部端口绑定到指定的主机端口。 –net=host docker参数, 使得docker容器越过了netnamespace的隔离,免去手动指定端口映射的步骤 -server consul支持以server或client的模式运行, server是服务发现模块的核心, client主要用于转发请求 -advertise 将本机私有IP传递到consul -bootstrap-expect 指定consul将等待几个节点连通,成为一个完整的集群 -retry-join 指定要加入的consul节点地址,失败会重试, 可多次指定不同的地址 -client consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1 -bind 该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0 -allow_stale 设置为true, 表明可以从consul集群的任一server节点获取dns信息, false则表明每次请求都会经过consul server leader --name DOCKER容器的名称 -client 0.0.0.0 表示任何地址可以访问。 -ui 提供图形化的界面。-agent
: 表示启动 Agent 进程。-server
:表示启动 Consul Server 模式。-client
:表示启动 Consul Cilent 模式。-bootstrap
:表示这个节点是Server-Leader
,每个数据中心只能运行一台服务器。技术角度上讲 Leader 是通过 Raft 算法选举的,但是集群第一次启动时需要一个引导 Leader,在引导群集后,建议不要使用此标志。-ui
:表示启动 Web UI 管理器,默认开放端口8500
,所以上面使用 Docker 命令把 8500 端口对外开放-node
:节点的名称,集群中必须是唯一的。-client
:表示 Consul 将绑定客户端接口的地址,0.0.0.0
表示所有地址都可以访问。-join
:表示加入到某一个集群中去。 如:-json=192.168.1.23
3、创建集群
3.1通过命令查一下当前运行 Consul 集群信息
docker exec consul_server_1 consul members
3.2新增server 节点 node2,node3 加入到集群,
docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=consul_server_2 consul:1.4.4 agent -server -node=2 -join='172.17.0.3'
docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=consul_server_3 consul:1.4.4 agent -server -node=3 -join='172.17.0.3'
3.3新增client节点加入到集群
docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=consul_client_1 consul:1.4.4 agent -client -node=1 -join='172.17.0.3' -client='0.0.0.0'
docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=consul_client_2 consul:1.4.4 agent -client -node=2 -join='172.17.0.3' -client='0.0.0.0'
实际上每个consul sever节点都应该部署在单台服务器上。
参考文档:https://www.cnblogs.com/edisonchou/p/consul_cluster_based_on_docker_introduction.html#4402340