小编给大家分享一下DDBMS中如何冗余docker网络,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:国际域名空间、网站空间、营销软件、网站建设、望花网站维护、网站推广。
环境准备:
vmware中配置四台ubuntu server 14.04(你可以只安装一个系统,使用克隆功能克隆出另外三台ubuntu),配置好SSH
每台机器配置两个网卡,像openstack一样,分Internal和External IP。这里我让eth0(NAT)作为 External,eth2(host-only)作为Internal。
拓扑图如下:
安装OVS:
具体安装教程参考这里:http://www.sdnlab.com/3166.html
附上我的OVS启动脚本:
ovs_launch #!/bin/bash #launch the ovs ovsdb-server -v --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --private-key=db:Open_vSwitch,SSL,private_key --certificate=db:Open_vSwitch,SSL,certificate --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert --pidfile --detach #init the database ovs-vsctl --no-wait init #launch the main process ovs-vswitchd --pidfile --detach #print the version infomation ovs-vsctl --version echo echo 'OpenVswitch have been launched successfully!'
保存并放置该脚本
chmod +x ovs_launch mv ovs_launch /usr/local/bin
安装pipework工具:
git clone https://github.com/jpetazzo/pipework cp ~/pipework/pipework /usr/local/bin/
安装docker最新的版本:https://docs.docker.com/installation/ubuntulinux/
pull一个镜像:
docker pull ubuntu
创建挂载容器用的br0和br1网桥:
brctl addbr br0 ip link set dev br0 up ip addr add 192.168.2.1/24 dev br0 brctl addbr br1 ip link set dev br1 up ip addr add 192.168.3.1/24 dev br1
在每台host上配置OVS(每次开机先执行ovs_launch):
ovs-vsctl add-br ovs0 ovs-vsctl set bridge ovs0 stp_enable=true ovs-vsctl add-port ovs0 br0 ovs-vsctl add-port ovs0 br1
创建host1tohost2的vxlan或gre隧道(这里我用的是gre):
ovs-vsctl add-port ovs0 gre0 -- set interface gre0 type=gre options:remote_ip=10.20.10.71
创建host2tohost1的gre隧道:
ovs-vsctl add-port ovs0 gre0 -- set interface gre0 type=gre options:remote_ip=10.20.10.70
创建host2tohost3的隧道:
ovs-vsctl add-port ovs0 gre1 -- set interface gre1 type=gre options:remote_ip=10.20.10.72
创建host3tohost2的隧道:
ovs-vsctl add-port ovs0 gre1 -- set interface gre1 type=gre options:remote_ip=10.20.10.71
创建host3tohost4的隧道:
ovs-vsctl add-port ovs0 gre2 -- set interface gre2 type=gre options:remote_ip=10.20.10.73
创建host4tohost3的隧道:
ovs-vsctl add-port ovs0 gre2 -- set interface gre2 type=gre options:remote_ip=10.20.10.72
创建host4tohost1的隧道:
ovs-vsctl add-port ovs0 gre3 -- set interface gre3 type=gre options:remote_ip=10.20.10.70
创建host1tohost4的隧道:
ovs-vsctl add-port ovs0 gre3 -- set interface gre3 type=gre options:remote_ip=10.20.10.73
(注意,两台主机间的互通隧道名相同,且每个OVS上不能出现重名的隧道)
启动容器并测试:
host1:
docker run -itd --name=test1 ubuntu pipework br0 test1 192.168.2.11/24
host2:
docker run -itd --name=test1 ubuntu pipework br0 test1 192.168.2.12/24
host3:
docker run -itd --name=test1 ubuntu pipework br1 test1 192.168.3.11/24
host4:
docker run -itd --name=test1 ubuntu pipework br1 test1 192.168.3.12/24
进入容器进行测试,你会发现,无论哪个容器,只要挂在同一个br网桥(同一网段),它们都是互通的。当然,如果你用192.168.2.11 ping 192.168.3.11那是绝对不行的(除非你不把br0和br1挂在ovs0上,此时route会进行路由,这种情况下可以互通)。
此时,你就建立了一个冗余的docker容器网络。
以上是“DDBMS中如何冗余docker网络”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!