docker安装consul(集群模式)

1、环境

4台虚拟机,操作系统都是Centos7。每台虚拟机都装有docker

HostName虚拟主机IPdocker容器IP说明
Server10192.168.133.10172.18.1.3consul服务1
Server20192.168.133.20172.18.2.3consul服务2
Server30192.168.133.30172.18.3.3consul服务3
Server40192.168.133.40172.18.4.3consul客户端1

 注:

1、这里我修改了每个虚拟机的主机名。

hostnamectl set-hostname 主机名

2、开启IPv4转发

vim /etc/sysctl.conf

 添加     net.ipv4.ip_forward=1。其他主机docker相应修改。 

 2、容器跨主机通讯

每台主机都需要配置,这里以Server10为例。

新建自定义网络

docker network create --subnet=172.18.1.0/24 docker-consul-br0

新建文件/etc/sysconfig/network-scripts/route-{网卡名}

vim /etc/sysconfig/network-scripts/route-ens33

添加路由  {网段}/24 via {网关} dev {网卡名}

#与Server20通讯
172.18.2.0/24 via 192.168.133.20 dev ens33

#与Server30通讯
172.18.3.0/24 via 192.168.133.30 dev ens33

#与Server40通讯
172.18.4.0/24 via 192.168.133.40 dev ens33

 重启网络

service network restart

用 route -n 查看

  其他主机同理

3、拉取镜像(这里是1.11.1版本)

docker pull consul

4、启动第一个Server

#第一个
docker run --name consul_server1 --net docker-consul-br0 --ip 172.18.1.3 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt":true}' -d -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p 8500:8500 -p 8600:8600 --restart=always -v /data/consul/server1/data:/consul/data -v /data/consul/server1/config:/consul/config  consul:latest agent -server -bootstrap-expect 3 -ui -bind=0.0.0.0 -client=0.0.0.0 -node=consul_server1_node -datacenter=datacenter0 

说明:

1、-bootstrap-expect 3  :有3个node才会选举Leader

2、-node=consul_server1_node  :节点名称(随便起)

3、-datacenter=datacenter1 :数据中心名称(随便起,但是要记住)

4、--net :设置网络

5、--ip :设置ip地址

5、启动第二个和第三个Server

#第二个
docker run --name consul_server2 --net docker-consul-br0 --ip 172.18.2.3 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt":true}' -d -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p 8500:8500 -p 8600:8600 --restart=always -v /data/consul/server2/data:/consul/data -v /data/consul/server2/config:/consul/config  consul:latest agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -node=consul_server2_node -datacenter=datacenter0 -join 172.18.1.3

#第三个
docker run --name consul_server3 --net docker-consul-br0 --ip 172.18.3.3 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt":true}' -d -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p 8500:8500 -p 8600:8600 --restart=always -v /data/consul/server3/data:/consul/data -v /data/consul/server3/config:/consul/config  consul:latest agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -node=consul_server3_node -datacenter=datacenter0 -join 172.18.1.3

说明:

1、后面启动的Server不需要-bootstrap-expect

2、-datacenter=datacenter0要和第一个节点一致

3、-join 172.18.1.3 是第一个节点的IP

6、在Server10中查看consul成员

docker exec -t consul_server1 consul members

 docker exec -t consul_server1 consul operator raft list-peers

7、启动Client

docker run --name consul_client1 --net docker-consul-br0 --ip 172.18.4.3 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt":true}' -d -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p 8500:8500 -p 8600:8600 --restart=always -v /data/consul/client0/data:/consul/data -v /data/consul/client0/config:/consul/config  consul:latest agent -ui -bind=0.0.0.0 -client=0.0.0.0 -node=consul_client1_node -datacenter=datacenter0  -join 172.18.1.3

说明:

client节点不需要 -server 

8、访问http://ip:8500

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值