`
crabdave
  • 浏览: 1295079 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

不同物理机中的Docker容器互连(Openvswitch)

 
阅读更多

不同物理机中的Docker容器互连(Openvswitch)

 

本文使用vultr虚拟主机实现

邀请注册链接:http://www.vultr.com/?ref=6940267

 

参考:http://www.cnblogs.com/openxxs/p/4690478.html

 

先买两台主机,很便宜,一个月5美元的那款就够用了

 

安装docker和相关软件

yum upgrade -y

yum install -y docker tree git wget p7zip bridge-utils net-tools vim unzip

systemctl start docker.service

systemctl enable docker

 

 

 

安装openvswitch 2.5.0

具体安装办法,可参考:http://crabdave.iteye.com/blog/2363896

 

直接下载附件中的openvswitch

wget http://dl2.iteye.com/upload/attachment/0123/7844/8da95736-54ae-3fc7-938c-b990af0b24c9.zip

unzip 8da95736-54ae-3fc7-938c-b990af0b24c9.zip

本地安装,并启动服务

yum localinstall -y  openvswitch-2.5.0-1.x86_64.rpm  

systemctl start openvswitch.service  

 

 

开启两台主机的ip_forward

echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf 

systemctl restart network

sysctl net.ipv4.ip_forward

 

在云主机上配置内网IP

(之前使用外网IP一直连接不上 ip route add         RTNETLINK answers: Network is unreachable)

参考 www.vultr.com 页面中 Sample Network Configuration

样例:

/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

IPADDR=IP地址

NETMASK=255.255.254.0

GATEWAY=网关

DNS1=

 

IPV6INIT=yes

IPV6ADDR="2001:19f0:4400:4827:5400:00ff:fe5d:302c/64"

IPV6_AUTOCONF="yes"

DNS2=2001:19f0:300:1704::6

 

/etc/sysconfig/network-scripts/route-eth0

169.254.0.0/16 dev eth0

 

配置内网网卡

/etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

ONBOOT=yes

BOOTPROTO=static

IPADDR=10.99.0.11(内网IP)

NETMASK=255.255.0.0

MTU=1450

 

 

先配置第一台机器10.99.0.11:

 

之前如果装错了可以通过 ovs-vsctl del-port ob0 gre0 命令删除之前绑定的port

 

ovs-vsctl创建ob0网桥并绑定IP:

ovs-vsctl add-br ob0

ovs-vsctl add-port ob0 gre0 -- set Interface gre0 type=gre options:remote_ip=10.99.0.11

brctl addbr kbr0

brctl addif kbr0 ob0

ovs-vsctl show

删除docker默认的网桥docker0

ip link set dev docker0 down

ip link del dev docker0

 

vi /etc/sysconfig/network-scripts/ifcfg-kbr0 

 

DEVICE=kbr0

ONBOOT=yes

BOOTPROTO=static

IPADDR=172.17.2.1

NETMASK=255.255.255.0

GATEWAY=172.17.2.0

USERCTL=no

TYPE=Bridge

IPV6INIT=no

 

使用内网网卡进行连接 eth1 配置对方IP

echo "172.17.1.0/24 via 10.99.0.10 dev eth1" > /etc/sysconfig/network-scripts/route-eth1

配置完成后,重启网络服务:

systemctl restart network.service

查看路由:

ip route show|column -t

172.17.1.0/24   via  10.99.0.10   dev    eth1

172.17.2.0/24   dev  kbr0         proto  kernel  scope   link  src  172.17.2.1

 

 

再配置第二台机器10.99.0.10:

ovs-vsctl add-br ob0

ovs-vsctl add-port ob0 gre0 -- set Interface gre0 type=gre options:remote_ip=10.99.0.10

brctl addbr kbr0

brctl addif kbr0 ob0

ovs-vsctl show

删除docker默认的网桥docker0

ip link set dev docker0 down

ip link del dev docker0

 

vi /etc/sysconfig/network-scripts/ifcfg-kbr0

 

DEVICE=kbr0

ONBOOT=yes

BOOTPROTO=static

IPADDR=172.17.1.1

NETMASK=255.255.255.0

GATEWAY=172.17.1.0

USERCTL=no

TYPE=Bridge

IPV6INIT=no

 

使用内网网卡进行连接 eth1 配置对方IP

echo "172.17.2.0/24 via 10.99.0.11 dev eth1" > /etc/sysconfig/network-scripts/route-eth1

配置完成后,重启网络服务:

systemctl restart network.service

 

查看路由:

ip route show|column -t

172.17.1.0/24   dev  kbr0         proto  kernel  scope   link  src  172.17.1.1

172.17.2.0/24   via  10.99.0.11   dev    eth1

 

 

 

配置两台机器的docker

vim /etc/sysconfig/docker 

OPTIONS= 中添加新增的网桥 -b=kbr0

重启docker service

systemctl restart docker.service

 

 

编写一个Dockerfile,仅安装一个net-tools 

vi Dockerfile

 

From centos

RUN yum -y install net-tools

 

构建镜像

docker build -t test .

 

运行容器

docker run -it --rm=true test

 

然后查看IP

ifconfig

 

ping 对方IP

ping 172.17.2.2

PING 172.17.2.2 (172.17.2.2) 56(84) bytes of data.

64 bytes from 172.17.2.2: icmp_seq=1 ttl=62 time=1.18 ms

64 bytes from 172.17.2.2: icmp_seq=2 ttl=62 time=0.804 ms

 

ping 172.17.1.2

PING 172.17.1.2 (172.17.1.2) 56(84) bytes of data.

64 bytes from 172.17.1.2: icmp_seq=1 ttl=62 time=0.904 ms

64 bytes from 172.17.1.2: icmp_seq=2 ttl=62 time=0.802 ms

 

双方能拼通就成功了!

 

 

 

如果不愿意构建镜像文件,也可以使用如下命令,在创建centos容器后,立即安装net-tools

docker run -it --rm=true centos sh -c "yum -y install net-tools; bash"

 

 

分享到:
评论

相关推荐

    openvswitch

    OpenvSwitch(简称OVS)是一款开源的...总的来说,OpenvSwitch是一个强大的网络虚拟化工具,其灵活性和可扩展性使其在云环境和容器化应用中发挥着重要作用。通过学习和实践,我们可以利用OVS构建高效、安全的网络架构。

    企业Docker容器云方案.pptx

    JDOS负责基础设施资源管理、容器生命周期管理和监控指标采集,利用OpenStack、Docker、JFS(分布式文件系统)和OVS(Open vSwitch)构建基础平台。CAP则专注于应用治理、部署、监控报警、资源利用率统计以及弹性伸缩...

    ovn-docker:通过OVN向Docker提供网络虚拟化

    在这种模式下,可以创建逻辑网络,并且可以使运行在VM,VM和物理机内部的容器连接到同一逻辑网络。 这是一个多租户,多主机解决方案。 在“覆盖”模式下,OVN可以在多个主机上运行的容器之间创建逻辑网络。 这是一...

    苏宁 Docker 私有云实践 雷爱民.pdf

    苏宁选择了Openvswitch作为Docker容器的网络模式,并且使用openstack-nova-docker结合docker-py技术,取代了原有的libvirt虚拟化技术。通过创建veth设备、接入OVS网桥、配置容器网络namespace等方式,苏宁实现了容器...

    美团云应用容器化架构设计.pptx

    此外,针对容器网络,美团云设计了一套基于Docker原生网络和Open vSwitch(OVS)的解决方案,解决了跨宿主机网络隔离和性能的问题。 在存储管理上,美团云经历了从本地磁盘、LVM Volume到EBS Volume的演变,以提供...

    docker部署Macvlan实现跨主机网络通信的实现

    然而,Docker 默认的网络模型(如 bridge 和 overlay 网络)在某些场景下可能无法满足需求,比如需要容器直接连接到物理网络时。这时,我们可以利用 Docker 的 Macvlan 网络驱动来创建跨主机的网络通信。 **Macvlan...

    基于容器的弹性云技术剖析.pptx

    - **升级与调度**:neutron-openvswitch-agent的升级管理和OpenStack的调度特性,如跨交换机、跨机架的应用调度,以及根据业务系统级别和资源特性进行的隔离和调度。 总之,基于容器的弹性云技术提供了一种高效、...

    OpenStack专业术语和用途说明大全

    在Mirantis OpenStack中,通过OVS(Open vSwitch)实现NIC(网络接口卡)的Bonding。 Ceilometer是OpenStack的计量和监控组件,负责收集云环境中的计量数据和性能数据,如计算、网络和存储的使用情况。这些数据对于...

    dovesnap:Docker OVS网络插件

    可选:其他物理接口,用于连接也运行dovesnap的其他主机 非netfilter iptables。对于Debian / Ubuntu,请遵循的legacy选项( update-alternatives --set iptables /usr/sbin/iptables-legacy )。以后的版本中将解决...

    EVE模拟器安装及使用精讲视频.zip

    可能会提及EVE的主要优势,如多租户支持、可扩展性以及对多种网络操作系统(如OpenvSwitch、Docker等)的兼容性。 2. **EVE第二部分环境安装**: 这一部分将详细指导如何在不同的操作系统(如Windows、Linux或...

    2023年HCIA Cloud Computing 5.0题库(HCIA云计算5.0版本)

    - **错误选项解析**:OvS(Open vSwitch)是一种高度可移植的虚拟交换机,它能够提供类似于物理交换机的功能,但选项D中的“模拟路由”并不属于其主要功能。OvS的主要功能包括划分局域网、搭建隧道以及硬件监控等。...

    006.Neutron详解1

    六、Open vSwitch - 提供网络隔离,支持VLAN、VxLAN和GRE。 - QoS配置,确保网络服务质量。 - Netflow和sFlow进行流量监控。 - Packet mirror进行数据包分析。 七、技术演进 - 从Flat到FlatDHCP,再到VLAN,...

    Kubernetes架构权威指南.pdf

    - **OVN (Open Virtual Network)**:基于Open vSwitch的网络。 - **Contiv**:软件定义网络。 - **SR-IOV**:基于硬件的网络虚拟化。 - **Romana**:网络策略和负载均衡。 - **OpenContrail**:云原生网络和...

Global site tag (gtag.js) - Google Analytics