继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

容器网络---overlay

三国纷争
关注TA
已关注
手记 288
粉丝 50
获赞 175
  • 安装consul

  • 宿主机的hostname不同

  • 内核大于3.16

角色

hostnameiprole
ubuntu1192.168.31.41server
ubuntu4192.168.31.44client
ubuntu5192.168.31.45client

安装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


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP

相关阅读

设计模式