- 安装consul
- 宿主机的hostname不同
- 内核大于3.16
角色
hostname | ip | role |
---|---|---|
ubuntu1 | 192.168.31.41 | server |
ubuntu4 | 192.168.31.44 | client |
ubuntu5 | 192.168.31.45 | client |
安装consul
源代码:https://github.com/hashicorp/consul
二进制:https://www.consul.io/downloads.html
推荐下载二进制文件,因为源码安装需要安装golang,需要处理依赖,稍显麻烦
unzip -o consul.zip
mv consul /usr/loca/bin && chmod a+x /usr/local/bin/consul
启动服务
# server
nohup consul agent -server -bootstrap -data-dir=/tmp/consul -node=server1 -bind=192.168.31.41 &
# client
nohup consul agent -data-dir /tmp/consul -node=slave1 -bind=192.168.31.44 &
nohup consul agent -data-dir /tmp/consul -node=slave2 -bind=192.168.31.45 &
加入集群(在ubuntu1上执行)
consul join 192.168.31.44
consul join 192.168.31.45
查看集群信息
root@ubuntu41:~# consul members
Node Address Status Type Build Protocol DC Segment
server1 192.168.31.41:8301 alive server 1.0.0 2 dc1 <all>
slave1 192.168.31.44:8301 alive client 1.0.0 2 dc1 <default>
slave2 192.168.31.45:8301 alive client 1.0.0 2 dc1 <default>
root@ubuntu41:~#
在slave1上创建overlay网络
root@ubuntu44:~# docker network create -d overlay ov_net1
a8bed8f7616afdd5e7f29b2d77efefa7f9c42384c13b6ee59f68e1bcc068f494
root@ubuntu44:~# docker network ls
NETWORK ID NAME DRIVER SCOPE
5a2a6818db8f bridge bridge local
2ccea5f4adc6 host host local
5addb148f292 none null local
a8bed8f7616a ov_net1 overlay global
root@ubuntu44:~#
网络信息会存入consul数据库中,因此在slave2上也可以发现ov_net1
root@ubuntu45:~# docker network ls
NETWORK ID NAME DRIVER SCOPE
f60ad948e9e1 bridge bridge local
2ccea5f4adc6 host host local
5addb148f292 none null local
a8bed8f7616a ov_net1 overlay global
root@ubuntu45:~#
分别在slave1和slave2上创建容器,都接入ov_net1
在slave1上创建bbox1,指定ov_net1
root@ubuntu44:~# docker run -tid --name bbox1 --network ov_net1 busybox
5ce240275b715515deac792174ee9e778646f6ef94142958ec0ba06e2a67d45a
root@ubuntu44:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5ce240275b71 busybox "sh" 11 seconds ago Up 9 seconds bbox1
root@ubuntu44:~# docker exec bbox1 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
12: eth0@if13: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1450 qdisc noqueue
link/ether 02:42:0a:00:00:02 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.2/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:aff:fe00:2/64 scope link
valid_lft forever preferred_lft forever
15: eth1@if16: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.2/16 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe12:2/64 scope link
valid_lft forever preferred_lft forever
在slave2上创建bbox2,指定ov_net1
root@ubuntu45:~# docker run -tid --name bbox2 --network ov_net1 busybox
e53651000387cd6556c61296fdf87632506c9a6018b19641a6da81b3a3856e06
root@ubuntu45:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e53651000387 busybox "sh" 3 seconds ago Up 2 seconds bbox2
root@ubuntu45:~# docker exec bbox2 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
12: eth0@if13: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1450 qdisc noqueue
link/ether 02:42:0a:00:00:03 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.3/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:aff:fe00:3/64 scope link
valid_lft forever preferred_lft forever
15: eth1@if16: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.2/16 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe12:2/64 scope link
valid_lft forever preferred_lft forever
查看不同主机上的容器是否可以通信
bbox1 ping bbox2
root@ubuntu44:~# docker exec bbox1 ping -c 3 bbox2
PING bbox2 (10.0.0.3): 56 data bytes
64 bytes from 10.0.0.3: seq=0 ttl=64 time=0.458 ms
64 bytes from 10.0.0.3: seq=1 ttl=64 time=0.435 ms
64 bytes from 10.0.0.3: seq=2 ttl=64 time=0.389 ms
--- bbox2 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.389/0.427/0.458 ms
bbox2 ping bbox1
root@ubuntu45:~# docker exec bbox2 ping -c 3 bbox1
PING bbox1 (10.0.0.2): 56 data bytes
64 bytes from 10.0.0.2: seq=0 ttl=64 time=0.370 ms
64 bytes from 10.0.0.2: seq=1 ttl=64 time=0.440 ms
64 bytes from 10.0.0.2: seq=2 ttl=64 time=0.381 ms
--- bbox1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.370/0.397/0.440 ms
网友评论