Weave方案实现跨主机容器通信
由于macvlan无法满足需求,所以看下Weave方案
环境说明
- 系统:Ubuntu 14.04.1 LTS
- 内核:3.13.0-32-generic
- Docker:17.12.0-ce
节点说明
node-50
- eth0:192.168.2.50(仅主机)
- eth1:192.168.0.177(桥接)
node-60
- eth0:192.168.2.60(仅主机)
- eth1:192.168.0.178(桥接)
安装
- 下载weave
# curl -L git.io/weave -o /usr/local/bin/weave # chmod +x /usr/local/bin/weave
创建网络
1. 初始化weave网络环境
node-50 第一个启动的节点只需要执行下面命令就可以了,执行后会自动下载weave相关镜像,并创建weave网络环境,并且监听0.0.0.0:6783,这是节点间通信的端口
# weave launch
node-60
# weave launch 192.168.0.178
2. 检查weave网络情况
# weave status
# weave status connections
<- 192.168.0.177:39037 established fastdp 2a:37:1c:8f:e8:cf(node-50) mtu=1376
创建容器
node-50
docker run --name a1 -ti weaveworks/ubuntu
node-60
docker run --name a2 -ti weaveworks/ubuntu
测试连通性
node-50
root@a1:/# ping -c1 -W1 a2 &>/dev/null && echo "OK" || echo "No"
OK
root@a1:/# ping -c1 -W1 192.168.0.1 &>/dev/null && echo "OK" || echo "No"
OK
root@a1:/# ping -c1 -W1 www.baidu.com &>/dev/null && echo "OK" || echo "No"
OK
root@a1:/# ping -c1 -W1 a2.weave.local &>/dev/null && echo "OK" || echo "No"
OK
node-60
root@a2:/# ping -c1 -W1 a1 &>/dev/null && echo "OK" || echo "No"
OK
root@a2:/# ping -c1 -W1 192.168.0.1 &>/dev/null && echo "OK" || echo "No"
OK
root@a2:/# ping -c1 -W1 www.baidu.com &>/dev/null && echo "OK" || echo "No"
OK
root@a2:/# ping -c1 -W1 a1.weave.local &>/dev/null && echo "OK" || echo "No"
OK
新加节点
测试新加节点会自动同步数据,而且三个节点中所有容器是可以相互通信的
总结
基本需求都可以实现,而且简单好用!