Docker 创建swarm overlay网络
依赖
- 准备三台虚拟机vm1,vm2,vm3。三台机器在同一个eth中。
- 操作系统:CentOS 7.6
- 安装Docker(点击)
更改hostname
#vm1
hostnamectl set-hostname vm1
service docker restart
#vm2
hostnamectl set-hostname vm2
service docker restart
#vm3
hostnamectl set-hostname vm3
service docker restart
查看hostname
service node ls
结果
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
brjg2ltw1sv4dihlxjr6tkojp * vm1 Ready Active Leader 19.03.1
7eawdhzcvb1vx2gj7nr3fuge5 vm2 Ready Active 19.03.1
sp8taco3e5qivv26dy8a0jm57 vm3 Ready Active 19.03.1
创建overlay网络
在vm1上创建overlay网络,vm2和vm3上面都可以访问。attachable参数开始container访问权限,默认只可被service使用。
docker network create -d overlay --attachable mongo-overlay
vm1,vm2,vm3关闭防火墙
service iptables stop
service firewalld stop
vm1 作为主节点(manager node),其他节点要加入overlay网络只需要获取这个节点的token然后加入即可(worker node)。
主节点上执行:
docker swarm init
启动成功显示如下:
Swarm initialized: current node (brjg2ltw1sv4dihlxjr6tkojp) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-4hj1cuiz76i7jkw5uwpiomi4kulkrfulcan51v6mz5y88orv8n-65o0wega86chw0nreghmtofw1 172.169.18.28:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
根据vm1的提示命令,在vm2和vm3上加入overlay网络
docker swarm join --token SWMTKN-1-4hj1cuiz76i7jkw5uwpiomi4kulkrfulcan51v6mz5y88orv8n-65o0wega86chw0nreghmtofw1 172.169.18.28:2377
显示
This node joined a swarm as a worker.
查看node信息
docker node ls
结果如下 Id 就是node名称
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
7eawdhzcvb1vx2gj7nr3fuge5 localhost.localdomain Ready Active 19.03.1
brjg2ltw1sv4dihlxjr6tkojp * localhost.localdomain Ready Active Leader 19.03.1
sp8taco3e5qivv26dy8a0jm57 localhost.localdomain Ready Active 19.03.1
测试overlay网络连通性
在vm1上运行mongorocks manager
docker run -d --name=mongorocks-1 \
--hostname=mongorocks-1 \
--network=mongo-overlay \
--restart=always \
-p 27017:27017 \
-v /root/volumns/mongorocks/db:/data/db
-v /etc/localtime:/etc/localtime \
percona/percona-server-mongodb:3.4 \
--storageEngine=rocksdb --dbpath=/data/db \
--rocksdbCacheSizeGB=1 \
--rocksdbCompression=snappy \
--rocksdbMaxWriteMBPerSec=1024 \
--rocksdbCrashSafeCounters=false \
--rocksdbCounters=true \
--rocksdbSingleDeleteIndex=false
参数解析:
- container加入overlay网络:–network=mongo-overlay
在vm3上通过刚刚建立的overlay网络测试连通性。
docker pull debian:latest
docker run --network=mongo-overlay -it debian:latest ping mongorocks-1
显示结果
64 bytes from mongorocks-1.mongo-overlay (10.0.1.2): icmp_seq=1 ttl=64 time=0.494 ms
64 bytes from mongorocks-1.mongo-overlay (10.0.1.2): icmp_seq=2 ttl=64 time=1.05 ms
64 bytes from mongorocks-1.mongo-overlay (10.0.1.2): icmp_seq=3 ttl=64 time=1.19 ms
来源:https://blog.csdn.net/lizongti/article/details/99330651