centos 使用 docker搭建consul集群

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

                  https://www.cnblogs.com/lfzm/p/10633595.html

原文地址:https://www.cnblogs.com/choii/p/11898931.html