OpenVNet과 Docker를 결합한 프레젠테이션(L2 확장)
개요
전제 조건
이전 글와 마찬가지로 두 개의 퍼블릭 네트워크를 만든다는 점은 다르다.
Docker 이미지 계속centossshd를 이용하다.
컨디션
CentOS6.6개의 VM 3대를 호스트(호스트(Host1, Host2, Host3)로 설정하고, Host1과 Host2를 동일한 세그먼트로 구성하며, Host3을 다른 세그먼트로 구성합니다.
※ 이번엔 6.6을 시도했다.또한 Hub OS를 이동하는 하이퍼바이저는 KVM입니다.
또한 호스트당 2개의 NIC
단지 문장이라면 이해하기 어려우니 공식적인 그림을 인용하면
의 VM1~VM6은 docker 컨테이너입니다.조금 알기 쉬운 말
이런 느낌.
작업흐름
이번에도 InstallGuite에 맞춰 대충 설치를 해보도록 하겠습니다.
이런 식으로 움직이면서 각 VNET 내 컨테이너 간 소통이 가능한지 확인한다.
※ Host1, 2, 3을 실행하는 하이퍼바이저는 KVM
인터넷에 대해서는 지난번과 마찬가지로 docker0을 놔두고 OVS로 Br0을 만들어 이용할 수 있다.컨테이너의 NIC가 추가되어 piperwork를 사용하지 않으며 netns가veth에 넣는 형식입니다.
두 호스트는 같은 세그먼트에 있고 한 호스트는 다른 세그먼트에 존재하지만 MAC2 MAC와 GRE를 통해 서로 호스트의 용기와 통신할 수 있기 때문에 로터의 설정이 필요하지 않다.
또한 이번에는 CentOS 6입니다.6으로 이동했다고 쓰여 있지만 CentOS 6입니다.5 Install Guide에 따라 OpenVNet이 설치되었을 때/var/log/openvs witch/ovs-vs witch/ovs witch.log에서 "Address family not supported by protocol"출력되며 OVS에 GRE 포트를 생성할 수 없습니다.ovs-offctl show brX로 표시되는 상황에서는 GRE 포트가 표시되지 않지만, ovs-vsctl show에는 존재하지 않을 GRE 포트가 표시되어 있어 주의하기 어렵다.
이를 방지하려면 이 정보, 이 정보 및 이 일대의 정보를 참조하여 Open vSwitch 버전을 업그레이드하십시오.
OpenVNet 설치(Host1)
Host1은 설치 자체가 지난번과 같으며, 외부로부터 미리 연결을 받아야 합니다.
/etc/redis.conf
(省略)
bind 0.0.0.0
(省略)
/etc/openvnet/vna.conf(Host1)node {
id "vna1"
addr {
protocol "tcp"
host "192.168.122.51"
port 9103
}
}
vna.conf의 id를 유일한 값으로 설정합니다.OpenVNet 설치(호스트 2, 호스트 3)
Host2, host3은 vna만 설치하면 됩니다.모두 설치 후 vna만 사용할 수 있습니다.
이쪽에서도 일부 설정을 수정할 겁니다.
/etc/openvnet/vna.conf(Host2)
node {
id "vna2"
addr {
protocol "tcp"
host "192.168.122.51"
port 9103
}
}
/etc/openvnet/vna.conf(Host3)node {
id "vna3"
addr {
protocol "tcp"
host "192.168.122.52"
port 9103
}
}
마찬가지로 id를 공격하지 않는 값으로 변경합니다.br0의 제작
여기도 지난번과 마찬가지로 eth1을 OVSPort로 Br0에 추가하는 형식으로 설정합니다.
Host1의 br0과 Host2의 br0 데이터 path-id, hwaddr를 공격하지 않는 값으로 설정합니다.
/etc/systconfig/network-sscripts/ifcfg-eth1(Host1, 2, 3 일반)
DEVICE=eth1
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br0
BOOTPROTO=none
ONBOOT=yes
HOTPLUG=no
/etc/sysconfig/network-scripts/ifcfg-br0(Host1)DEVICE=br0
DEVICETYPE=ovs
TYPE=OVSBridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.121.50
NETMASK=255.255.255.0
HOTPLUG=no
OVS_EXTRA="
set bridge ${DEVICE} protocols=OpenFlow10,OpenFlow12,OpenFlow13 --
set bridge ${DEVICE} other_config:disable-in-band=true --
set bridge ${DEVICE} other-config:datapath-id=0000000000000001 --
set bridge ${DEVICE} other-config:hwaddr=02:01:00:00:00:01 --
set-fail-mode ${DEVICE} standalone --
set-controller ${DEVICE} tcp:127.0.0.1:6633
"
/etc/sysconfig/network-scripts/ifcfg-br0(Host2)DEVICE=br0
DEVICETYPE=ovs
TYPE=OVSBridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.121.51
NETMASK=255.255.255.0
HOTPLUG=no
OVS_EXTRA="
set bridge ${DEVICE} protocols=OpenFlow10,OpenFlow12,OpenFlow13 --
set bridge ${DEVICE} other_config:disable-in-band=true --
set bridge ${DEVICE} other-config:datapath-id=0000000000000002 --
set bridge ${DEVICE} other-config:hwaddr=02:01:00:00:00:02 --
set-fail-mode ${DEVICE} standalone --
set-controller ${DEVICE} tcp:127.0.0.1:6633
"
/etc/sysconfig/network-scripts/ifcfg-br0(Host3)DEVICE=br0
DEVICETYPE=ovs
TYPE=OVSBridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.120.52
NETMASK=255.255.255.0
HOTPLUG=no
OVS_EXTRA="
set bridge ${DEVICE} protocols=OpenFlow10,OpenFlow12,OpenFlow13 --
set bridge ${DEVICE} other_config:disable-in-band=true --
set bridge ${DEVICE} other-config:datapath-id=0000000000000003 --
set bridge ${DEVICE} other-config:hwaddr=02:01:00:00:00:03 --
set-fail-mode ${DEVICE} standalone --
set-controller ${DEVICE} tcp:127.0.0.1:6633
"
설정이 완료되면 각 호스트의 Br0을 시작하고 Host1에서 vnmgr·webapi·vna를 시작하며 Host2, Host3에서 vna를 시작합니다.Host1
$ service mysqld start
$ service redis start
$ ifup eth1
$ initctl start vnet-vnmgr
$ initctl start vnet-webapi
$ initctl start vnet-vna
Host2、Host3$ ifup eth1
$ initctl start vnet-vna
부팅 컨테이너
Host1에서 컨테이너 1과 2, Host2에서 컨테이너 3과 4, Host3에서 컨테이너 5와 6을 각각 시작합니다.
OpenVNet은 GRE를 사용하여 세그먼트가 다른 호스트 간에 연결합니다.이 GRE에서는 OVS의 GRE 포트를 사용하지만 이 포트에 output의 flow를 적용한 경우 그룹을 나누어 호스트의 Linux IP 창고를 통해 보냅니다.따라서 Br0 (eth1) 에서 상대방에게 전송하고 도착할 수 있도록 경로가 설정되어 있습니다.
※ 코스
Reference
이 문제에 관하여(OpenVNet과 Docker를 결합한 프레젠테이션(L2 확장)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/qb0C80aE/items/bf3ad0fa34b4ba54a579텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)