KVM 공부 - 브리지 네트워크와 Overlay 네트워크

tw·2024년 1월 14일

1. 브리지 네트워크와 overlay 네트워크

  • linux bridge 사용하기
    • 기존의 VM은 KVM 호스트내에서 별도의 네트워크로 생성되므로 NAT를 통해 내부로 연결된다.
    • LinuxBridge를 활용하여 기존 etho0을 L2로 변경하고 가상머신들이 외부와 직접 연결이 가능하도록 설정한다.

1. br0 생성과 eth0를 br0의 L2 포트 변경

[root@kvm1~]# cd /etc/sysconfig/network-scripts

[root@kvm1 network-scripts]# cp ifcfg-eth0 ifcfg-br0

[root@kvm1 network-scripts]# vi ifcfg-br0

[root@kvm1 network-scripts]#

[root@kvm1 network-scripts]#

[root@kvm1 network-scripts]# vi ifcfg-eth0

[root@kvm1 network-scripts]#

[root@kvm1 network-scripts]# ifconfig br0

br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 5.5.5.101 netmask 255.255.255.0 broadcast 5.5.5.255

2. 각 호스트에 테스트용 가상머신 생성하기

[root@stg kvm]# wget \ https://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img
[root@stg kvm]# cp cirros-0.4.0-x86_64-disk.img cirros01.img

[root@stg kvm]# cp cirros01.img cirros02.img

[root@stg kvm]# cp cirros01.img cirros03.img

생성된 클라우드 용 이미지를 이용하여 테스트용 가상머신을 생성한다.

3. vm의 통신 상태 확인 및 라이브 마이그레이션

2. Openvswitch 설치하기

linux bridge를 사용할 경우 각 가상머신에 일종의 공인 주소를 부여하면 서비스 제공에 유연함을 갖을 수 있지만 보안에 문제가 있다.

호스트의 물리적 위치와 상관없이 모든 가상머신간 통신이 가능하도록 overlay 네트워크의 구성을 진행한다. 이를 위해 터널링을 (VxLAN, GRE) 지원하는 가상의 스위치가 필요하다.

오버레이를 구성할 경우에 각 호스트에 동일 사설 주소를 갖는 스위치를 배치하고 해당 스위치를 마치 하나의 가상 스위치 처럼 사용한다.

가상머신들은 물리적 위치에 관계없이 사설 주소를 이용하여 타 리전, 지역, 물리 서버에 있는 가상 머신들과의 통신 마이그레이션이 가능하다.

1. 각 노드에 openvswitch 설치

[root@kvm1~]# yum install -y \epel-release https://www.rdoproject.org/repos/rdo-release.rpm

[root@kvm1~]# yum install -y openvswitch bridge-utils

[root@kvm1~]# yum update -y

[root@kvm1~]# systemctl start openvswitch && systemctl enable openvswitch
  • 각 KVM에 OVS 기반의 가상브리지인 vswitch01을 위한 ifcfg-vswitch01 파일을 생성하고 기존의 eth0을 vswitch01의 포트로 등록시켜 아래와 같은 구조를 만든다.
  • 기존 br0 인터페이스를 vswitch 01로 변경하고 내용을 수정한다.

  • 재부팅 이후 OVS의 상태

2. 가상머신 연결을 위한 내부 가상 브리지 생성

호스트별 가상머신간 통신을 위한 브리지를 생성한다.

내부 주소는 172.16.1.0/24를 사용한다.

3. 가상머신의 실행과 vswitch02 상태확인

4. gre 를 이용하여 overlay 네트워크 구성하기

[root@kvm1~]# ovs-vsctl add-port vswitch02 gre12 -- set interface gre12
type=gre options:remote_ip=5.5.5.102
[root@kvm1~]# ovs-vsctl add-port vswitch02 gre13 -- set interface gre13
type=gre options:remote_ip=5.5.5.103

[root@kvm2~]# ovs-vsctl add-port vswitch02 gre21 -- set interface gre21
type=gre options:remote_ip=5.5.5.101
[root@kvm2~]# ovs-vsctl add-port vswitch02 gre23 -- set interface gre23
type=gre

[root@kvm3~]# ovs-vsctl add-port vswitch02 gre31 -- set interface gre31
type=gre options:remote_ip=5.5.5.101
[root@kvm3~]# ovs-vsctl add-port vswitch02 gre32 -- set interface gre32
type=gre options:remote_ip=5.5.5.102

다수의 터널이 생성되며 통신을 시도할 경우 자원사용률이 매우 높아지고 정상적인 테스트가 어려울 수 있다.

통신상태 확인을 위해서는 터널의 숫자를 줄이고 테스트를 시도한다.

profile
안녕하세요

0개의 댓글