차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
openvswitch를_통한_vxlan_구성 [2021/07/04 13:19] – 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 를 설정 | ||
줄 156: | 줄 160: | ||
</ | </ | ||
</ | </ | ||
- | </WRPA> | + | </WRAP> |
+ | <WRAP center round important> | ||
+ | VxLAN을 이용한 libvirt Virtual Network를 생성할때 반드시 '' | ||
+ | </ | ||
생성한 xml을 이용하여 libvirt Virtual Network를 생성한다. | 생성한 xml을 이용하여 libvirt Virtual Network를 생성한다. | ||
줄 171: | 줄 179: | ||
이후 GuestVM에 해당 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:// | ||
+ | * https:// | ||
+ | |||
+ | ==== NetworkManager-ovs ==== | ||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | # subscription-manager repos \ | ||
+ | --enable=" | ||
+ | --enable=" | ||
+ | --enable=" | ||
+ | --enable=" | ||
+ | --enable=" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | * |