安装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 membersNode 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_net1a8bed8f7616afdd5e7f29b2d77efefa7f9c42384c13b6ee59f68e1bcc068f494 root@ubuntu44:~# docker network lsNETWORK ID NAME DRIVER SCOPE5a2a6818db8f 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 lsNETWORK 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 busybox5ce240275b715515deac792174ee9e778646f6ef94142958ec0ba06e2a67d45a root@ubuntu44:~# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES5ce240275b71 busybox "sh" 11 seconds ago Up 9 seconds bbox1 root@ubuntu44:~# docker exec bbox1 ip addr1: 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 forever12: 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 forever15: 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 busyboxe53651000387cd6556c61296fdf87632506c9a6018b19641a6da81b3a3856e06 root@ubuntu45:~# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e53651000387 busybox "sh" 3 seconds ago Up 2 seconds bbox2 root@ubuntu45:~# docker exec bbox2 ip addr1: 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 forever12: 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 forever15: 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 bbox2PING bbox2 (10.0.0.3): 56 data bytes64 bytes from 10.0.0.3: seq=0 ttl=64 time=0.458 ms64 bytes from 10.0.0.3: seq=1 ttl=64 time=0.435 ms64 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 bbox1PING bbox1 (10.0.0.2): 56 data bytes64 bytes from 10.0.0.2: seq=0 ttl=64 time=0.370 ms64 bytes from 10.0.0.2: seq=1 ttl=64 time=0.440 ms64 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
作者:xwlan
链接:https://www.jianshu.com/p/7f32ca1442a8
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦