차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 다음 판 | 이전 판 | ||
| openvswitch를_통한_vxlan_구성 [2021/07/04 12:58] – 만듦 koov | openvswitch를_통한_vxlan_구성 [2021/07/05 14:31] (현재) – koov | ||
|---|---|---|---|
| 줄 7: | 줄 7: | ||
| 그림을 보면, 2개의 호스트가 Flat한 L2 Network로 연결되어 있고(SDN: Software-Defined-Network 개념으로 보면 Underlay) 각각의 호스트 내에 Docker Container 들은 서로 다른 네트워크를 가지며, VxLAN 터널을 통한 L3 연결(SDN 개념으로 보면 Overlay)가 가능한 구조임을 알 수 있다. 그림과 같은 네트워크를 설계할 때에 특히 주의해야 할 점은, 하단의 OVS Bridge의 네트워크(10.0.0.0/ | 그림을 보면, 2개의 호스트가 Flat한 L2 Network로 연결되어 있고(SDN: Software-Defined-Network 개념으로 보면 Underlay) 각각의 호스트 내에 Docker Container 들은 서로 다른 네트워크를 가지며, VxLAN 터널을 통한 L3 연결(SDN 개념으로 보면 Overlay)가 가능한 구조임을 알 수 있다. 그림과 같은 네트워크를 설계할 때에 특히 주의해야 할 점은, 하단의 OVS Bridge의 네트워크(10.0.0.0/ | ||
| + | {{: | ||
| + | |||
| + | 첫번째 그림과 다른점은 ovs bridge의 IP가 서로 다를 필요가 없다는것이다. 즉 GW주소는 양쪽에 10.100.0.1 로 동일하게 구성해도 상관없다는것이다. | ||
| ===== 사전 준비 ===== | ===== 사전 준비 ===== | ||
| 줄 56: | 줄 59: | ||
| [root@docker01 ~#] ovs-vsctl add-port ovs_sw0 vxlan0 -- set Interface vxlan0 type=vxlan options: | [root@docker01 ~#] ovs-vsctl add-port ovs_sw0 vxlan0 -- set Interface vxlan0 type=vxlan options: | ||
| </ | </ | ||
| + | </ | ||
| * docker02 에서는 다음과 같이 Open vSwitch 를 설정 | * docker02 에서는 다음과 같이 Open vSwitch 를 설정 | ||
| 줄 141: | 줄 145: | ||
| </ | </ | ||
| + | ===== libvirt network 추가 ===== | ||
| + | |||
| + | kvm guest에 할당할 vxlan을 이용한 Virtual Network를 생성한다. | ||
| + | |||
| + | 아래와 같은 vxnet0.xml 파일을 생성한다. | ||
| + | |||
| + | <WRAP prewrap> | ||
| + | <code xml vxnet0.xml> | ||
| + | < | ||
| + | < | ||
| + | <forward mode=' | ||
| + | <bridge name=' | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP center round important> | ||
| + | VxLAN을 이용한 libvirt Virtual Network를 생성할때 반드시 '' | ||
| + | </ | ||
| + | |||
| + | |||
| + | 생성한 xml을 이용하여 libvirt Virtual Network를 생성한다. | ||
| + | |||
| + | <WRAP prewrap> | ||
| + | <code bash> | ||
| + | virsh net-define vxnet0.xml | ||
| + | |||
| + | virsh net-start vxnet0 | ||
| + | virsh net-autostart vxnet0 | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | 이후 GuestVM에 해당 vxnet0 네트워크 인터페이스를 할당하면 된다. | ||
| + | |||
| + | ===== NetworkManager-ovs 를 통한 vxlan 구성 ===== | ||
| + | |||
| + | <WRAP prewrap> | ||
| + | <code bash> | ||
| + | nmcli conn add type ovs-bridge conn.interface ovs-sw0 | ||
| + | nmcli conn add type ovs-port conn.interface ovs-sw0 master ovs-sw0 | ||
| + | nmcli conn add type ovs-interface slave-type ovs-port conn.interface ovs-sw0 master ovs-sw0 ipv4.method manual ipv4.address 10.100.0.1/ | ||
| + | |||
| + | ovs-vsctl add-port ovs-sw0 vxlan0 -- set Interface vxlan0 type=vxlan options: | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP center round important> | ||
| + | 위 예제에서도 보이듯이 '' | ||
| + | 그렇지 않다면 kvm virtual network 에서 정확한 정보를 가져오지 못해 vm의 network interface port 할당이 제대로 되지 않아 부팅에 실패하게 된다. | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== linux network-script 를 이용한 영구 설정 ===== | ||
| + | 영구적으로 적용하려면 linux network script로 작성하면 된다. | ||
| + | |||
| + | <WRAP prewrap> | ||
| + | <code bash> | ||
| + | [root@kvm31 network-scripts]# | ||
| + | DEVICE=ovsbr0 | ||
| + | ONBOOT=yes | ||
| + | DEVICETYPE=ovs | ||
| + | TYPE=OVSBridge | ||
| + | BOOTPROTO=static | ||
| + | IPV6INIT=no | ||
| + | DELAY=0 | ||
| + | IPADDR=10.10.10.1 | ||
| + | PREFIX=8 | ||
| + | HOTPLUG=no | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | 만약 포트를 추가하고 싶은경우 아래와 같이 인터페이스를 생성한다. | ||
| + | 아래는 물리NIC를 포트에 연결하는 예제이다. | ||
| + | |||
| + | <WRAP prewrap> | ||
| + | <code bash> | ||
| + | [root@kvm31 network-scripts]# | ||
| + | HWADDR=" | ||
| + | TYPE=" | ||
| + | DEVICETYPE=" | ||
| + | OVS_BRIDGE=" | ||
| + | BOOTPROTO=" | ||
| + | NAME=" | ||
| + | UUID=" | ||
| + | ONBOOT=" | ||
| + | NM_CONTROLLED=" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | vxlan interface 추가는 아래와 같다. | ||
| + | <WRAP prewrap> | ||
| + | <code bash> | ||
| + | DEVICE=vxnet0 | ||
| + | ONBOOT=yes | ||
| + | DEVICETYPE=ovs | ||
| + | TYPE=OVSTunnel | ||
| + | OVS_BRIDGE=ovsbr0 | ||
| + | OVS_TUNNEL_TYPE=vxlan | ||
| + | OVS_TUNNEL_OPTIONS=" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | 상세설정은 [[ovs for legacy network-script]] 페이지를 참조한다. | ||
| ===== 참고문서 ===== | ===== 참고문서 ===== | ||
| * https:// | * https:// | ||
| * https:// | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | ==== NetworkManager-ovs ==== | ||
| + | <WRAP prewrap> | ||
| + | <code bash> | ||
| + | # subscription-manager repos \ | ||
| + | --enable=" | ||
| + | --enable=" | ||
| + | --enable=" | ||
| + | --enable=" | ||
| + | --enable=" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | * https:// | ||
| + | * https:// | ||
| + | * | ||