关于weave的原理不做细致的说明,如果想了解weave可以登陆官网:https://www.weave.works/

In this post,使用阿里云3台ECS服务器进行weave搭建,并测试搭建weave后,跨主机docker容器的连通性。

场景:
10.162.204.252 node1
10.171.31.181 node2
10.171.19.139 node3

##一、在所有需要跨主机互通的docker宿主机安装weave。
###1.在node1上安装weave,并启动weave。

1
2
3
$ wget -O /usr/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave  
$ chmod +x /usr/bin/weave
$ weave launch

*注释:在阿里云ECS执行weave launch启动会报错,请在启动的时候加–ipalloc-range 172.16.0.0/12,由于默认ip地址为10段。
*关于 172.16.0.1/12 如何查看

容器启动命令
docker run –name bambou-weixin –net=weave -d -p 8900:8900 bambou-weixin

Apollo配置(也可在yml配置文件中指定)
eureka.instance.preferIpAddress = true (已ip 的形式注册到eureka)

Linux 在demo.sh ( -Deureka.instance.ip-address) 指定eureka地址,避免其他主机服务无法获取不到配置文件 原因如下

解决方式 :

JAVA OPTS

1
2
3
4
BASE_JAVA_OPTS="-Denv=dev"
CLIENT_JAVA_OPTS="$BASE_JAVA_OPTS -Dapollo.meta=$config_server_url -Deureka.instance.ip-address=${这里填写你的ip地址}"
SERVER_JAVA_OPTS="$BASE_JAVA_OPTS -Dspring.profiles.active=github -Deureka.service.url=$eureka_service_url -Deureka.instance.ip-address=${这里填写你的ip地址}"
PORTAL_JAVA_OPTS="$BASE_JAVA_OPTS -Ddev_meta=$config_server_url -Dspring.profiles.active=github,auth -Deureka.instance.ip-address=${这里填写你的ip地址}"

2.在node2上安装weave,并启动weave,并连接node1,如果有多个,可以在连接的时候指定多个。

1
2
3
$ wget -O /usr/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave  
$ chmod +x /usr/bin/weave
$ weave launch 10.162.204.252 --ipalloc-range 172.16.0.0/12

###3.在node3上安装weave,并启动weave,并连接node1,如果有多个,可以在连接的时候指定多个。

1
2
3
4
$ wget -O /usr/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave  
$ chmod +x /usr/bin/weave
$ weave launch 10.162.204.252 10.171.31.181 --ipalloc-range 172.16.0.0/12
$ weave launch 10.162.204.252 --ipalloc-range 172.16.0.0/12

##二、在所有需要跨主机互通的docker宿主机启动docker测试容器。
###1.在node1上,启动一个测试容器,centos或者ubuntu都可以。

1
$  weave run 192.168.4.1/24 -it --name node1 ubuntu /bin/bash

###2.在node2上,启动一个测试容器,centos或者ubuntu都可以。

1
$  weave run 192.168.4.2/24 -it --name node2 centos /bin/bash

###3.在node1上,启动一个测试容器,centos或者ubuntu都可以。

1
$  weave run 192.168.4.3/24 -it --name node3 centos /bin/bash

三、测试容器的互通性。
1.登陆node1上启动的测试容器,测试与node2和node3上docker容器的连通性。


2.登陆node2上启动的测试容器,测试与node1和node3上docker容器的连通性。

3.登陆node3上启动的测试容器,测试与node1和node2上docker容器的连通性。

到此,如果没有出现任何问题,跨主机的docker容器已经能够互联。

× 请我吃糖~
打赏二维码