openvswitch의 vxlan에서 KVM (libvirt) 호스트의 가상 네트워크 연결

재료로서는 전혀 지금의 내용입니다만, 자신용 메모로서.

다음은 이전의 내 집 네트워크의 대략적인 이미지입니다. (필요한 부분 만).






각 KVM 호스트 내에서 여러 가상 시스템이 여러 VLAN을 사용하여 네트워크를 만들고 있습니다. 이 가상 머신에는 공부(검증)용뿐만 아니라 인터넷에 연결하기 위한 라우터나 Firewall도 포함되어 있습니다. (쓰지 않았지만 논리 구성에서는 네트워크가 분리됩니다.)

이것을 다음과 같이 변경했습니다.






변경이 많은 (공부용) 가상 스위치와 안정적으로 동작시키고 싶은 가상 스위치를 나누어 전자에 대해서는 VXLAN으로 접속합니다.
이제 공부용으로 VLAN을 추가·변경하고 싶을 때는 빨간색 프레임의 가상 스위치를 만지면 좋을 뿐입니다.

이 페이지에서는 이 구성을 변경할 때의 단계를 설명합니다.

환경



KVM Host OS: CentOS 7.4
openvswitch: v2.6.1
libvirt: v3.2.0

절차



모든 작업은 두 KVM 호스트에서 수행됩니다.

가상 스위치 만들기



우선, 현상의 확인.
$ ovs-vsctl show 

    Bridge "ovsbr0"
     ・
     ・
     ・
        Port "ovsbr0"
            Interface "ovsbr0"
                type: internal


현재 가상 스위치는 ovsbr0 전용입니다.

따라서 vxlan에 ovsvbr1이라는 가상 스위치를 추가하기로 결정합니다.
$ ovs-vsctl add-br ovsbr1


가상 스위치가 생성되었는지 확인합니다.
$ ovs-vsctl show 

    Bridge "ovsbr0"
     ・
     ・
     ・
        Port "ovsbr0"
            Interface "ovsbr0"
                type: internal
    Bridge "ovsbr1"
        Port "ovsbr1"
            Interface "ovsbr1"
                type: internal


향후, 재기동시에는, 기동시에 자동적으로 이 가상 스위치가 작성되도록 network-scripts 파일도 작성한다.
$ vi /etc/sysconfig/network-scripts/ifcfg-ovsbr1 
-------------
DEVICE=ovsbr1
NAME=ovsbr1
BOOTPROTO=none
ONBOOT=yes
DEVICETYPE=ovs
IPV6INIT=no
TYPE=OVSBridge
-------------


vxlan용 가상 포트 만들기



작성한 가상 스위치에 vxlan용 가상 포트를 작성합니다.
# (KVM Host1)

$ ovs-vsctl add-port ovsbr1 vxlan0 -- set Interface vxlan0 type=vxlan options:key=flow options:local_ip="KVM_Host1のIPアドレス" options:remote_ip="KVM_Host2のIPアドレス"

# (KVM Host2)

$ ovs-vsctl add-port ovsbr1 vxlan0 -- set Interface vxlan0 type=vxlan options:key=flow options:local_ip="KVM_Host2のIPアドレス" options:remote_ip="KVM_Host1のIPアドレス"


vxlan 포트 "vxlan0"이 추가되었는지 확인합니다.
# (以下のサンプルはKVM Host1のみ。KVM Host2でも同様に確認すること)

$ ovs-vsctl show 
    Bridge "ovsbr0"
     ・
     ・
     ・
        Port "ovsbr0"
            Interface "ovsbr0"
                type: internal
    Bridge "ovsbr1"
        Port "vxlan0"
            Interface "vxlan0"
                type: vxlan
                options: {key=flow, local_ip="KVM_HOST1のIPアドレス", remote_ip="KVM_HOST2のIPアドレス"}
        Port "ovsbr1"
            Interface "ovsbr1"
                type: internal

Firewalld 권한



CentOS 표준의 firewalld가 유효한 경우, VXLAN의 통신(4879/udp)은 허가되어 있지 않기 때문에, 통신을 허가한다.
$ firewall-cmd --add-port=4789/udp --permanent
success

$ firewall-cmd --add-port=4789/udp 
success

libvitd의 가상 네트워크 생성



생성하는 가상 네트워크는 생성한 가상 스위치(ovsbr1)와 브리지시킨다.
우선, 작성하고 싶은 가상 네트워크를 정의한 XML 파일을 준비한다.

$ vi ovs-vxlan.xml 
--------------------------------------------
<network>
  <name>ovs-vxlan</name>
  <forward mode='bridge'/>
  <bridge name='ovsbr1'/>
  <virtualport type='openvswitch'/>
  <portgroup name='vlan_10'>
    <vlan>
      <tag id='10'/>
    </vlan>
  </portgroup>
  <portgroup name='vlan_20'>
    <vlan>
      <tag id='20'/>
    </vlan>
  </portgroup>
  <portgroup name='vlan_30'>
    <vlan>
      <tag id='30'/>
    </vlan>
  </portgroup>
  <portgroup name='vlan_40'>
    <vlan>
      <tag id='40'/>
    </vlan>
  </portgroup>
  <portgroup name='vlan_all'>
    <vlan trunk='yes'>
      <tag id='10'/>
      <tag id='20'/>
      <tag id='30'/>
      <tag id='40'/>
    </vlan>
  </portgroup>
</network>
--------------------------------------------

다음으로, 작성한 ML 파일을 바탕으로 가상 네트워크를 정의한다.
$ virsh net-define ovs-vxlan.xml 


정의한 가상 네트워크를 활성화합니다.
$ virsh net-start ovs-vxlan


설정은 이것으로 완료.

확인



두 KVM 호스트에서 vxlan을 통해 연결된 가상 스위치의 동일한 VLAN에서 통신할 수 있는지 확인합니다.

또, KVM Host를 재기동해, 기동 후, 자동적으로 같은 설정이 되는 것, vxlan를 통한 통신을 실시할 수 있는 것을 확인한다.

좋은 웹페이지 즐겨찾기