CentOS 7 에서 Open vSwitch + VXLAN 실천

실험 환경 설명도 node 1, node 2 운영 체제 버 전 CentOS 7.1 GUI 가 있 는 서버 버 전 CentOS 7 의 설치 참고:http://blog.csdn.net/dylloveyou/article/details/53096170 kvm 설치 참고:http://blog.csdn.net/dylloveyou/article/details/53223746 CentOS7上实践Open vSwitch+VXLAN_第1张图片
1. 오픈 vSwitch 설치
[root@rhel-kvm-ovs-01 ~]# yum -y install openssl-devel kernel-devel
[root@rhel-kvm-ovs-01 ~]# yum groupinstall "Development Tools"
[root@rhel-kvm-ovs-01 ~]# adduser ovswitch
[root@rhel-kvm-ovs-01 ~]# su - ovswitch
     openvswitch-2.5.1.tar.gz,    /home/ovswitch 
[ovswitch@rhel-kvm-ovs-01 ~]$ ls
openvswitch-2.5.1.tar.gz
[ovswitch@rhel-kvm-ovs-01 ~]$ tar xfz openvswitch-2.5.1.tar.gz
[ovswitch@rhel-kvm-ovs-01 ~]$ mkdir -p ~/rpmbuild/SOURCES
[ovswitch@rhel-kvm-ovs-01 ~]$ cp openvswitch-2.5.1.tar.gz ~/rpmbuild/SOURCES
  Nicira   openvswitch-kmod   ,    spec  
[ovswitch@rhel-kvm-ovs-01 ~]$ sed 's/openvswitch-kmod, //g' openvswitch-2.5.1/rhel/openvswitch.spec > openvswitch-2.5.1/rhel/openvswitch_no_kmod.spec
[ovswitch@rhel-kvm-ovs-01 ~]$ rpmbuild -bb --without check ~/openvswitch-2.5.1/rhel/openvswitch_no_kmod.spec
[ovswitch@rhel-kvm-ovs-01 ~]$ exit
[root@rhel-kvm-ovs-01 ~]# yum localinstall /home/ovswitch/rpmbuild/RPMS/x86_64/openvswitch-2.5.1-1.x86_64.rpm
    ,    :
[root@rhel-kvm-ovs-01 ~]#  rpm -qf `which ovs-vsctl`
openvswitch-2.5.1-1.x86_64

시작 서비스:
[root@rhel-kvm-ovs-01 ~]# systemctl start openvswitch.service
[root@rhel-kvm-ovs-01 ~]# systemctl enable openvswitch.service

결과 보기:
[root@rhel-kvm-ovs-01 ~]# systemctl -l status openvswitch.service

CentOS7上实践Open vSwitch+VXLAN_第2张图片
2. 오픈 vSwitch 설정
[root@rhel-kvm-ovs-01 ~]# ovs-vsctl add-br ovsbr0

NetworkManager 제거
[root@rhel-kvm-ovs-01 ~]# systemctl stop NetworkManager.service
[root@rhel-kvm-ovs-01 ~]# systemctl disable NetworkManager.service
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.

network. services 를 사용 하여 / etc / sysconfig / network - scripts / 아래 설정 파일 / etc / sysconfig / network - scripts / ifcfg - mgmt 0 을 수정 합 니 다.
DEVICE=mgmt0
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSIntPort
OVS_BRIDGE=ovsbr0
USERCTL=no
BOOTPROTO=none
HOTPLUG=no
IPADDR0=192.168.57.2
PREFIX0=24

/etc/sysconfig/network-scripts/ifcfg-ovsbr0
DEVICE=ovsbr0
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSBridge
HOTPLUG=no
USERCTL=no

/etc/sysconfig/network-scripts/ifcfg-eno16777984
......
IPADDR=192.168.128.61
......

서비스 다시 시작
[root@rhel-kvm-ovs-01 ~]# systemctl restart network.service

3. 가상 컴퓨터 시작
먼저 virt - manager 를 통 해 가상 컴퓨터 kvm 01, kvm 02 를 만 들 고 네트워크 를 다음 과 같이 설정 합 니 다 CentOS7上实践Open vSwitch+VXLAN_第3张图片
수 동 으로 가상 컴퓨터 IP 를 설정 하 는 것 은 각각 192.168.57.11, 192.168.57.12 이다.
4. ovsbr 0 에 인터페이스 vxlan 0 node 1 설정: remoteip node 2 의 ip: 92.168.128.62
[root@rhel-kvm-ovs-01 ~]# ovs-vsctl add-port ovsbr0 vxlan0 -- set interface vxlan0 type=vxlan options:remote_ip=192.168.128.62
[root@rhel-kvm-ovs-01 ~]# ovs-vsctl show
8e3f7c3f-3d0d-4068-92d0-c0bd0c6651ce
    Bridge "ovsbr0"
        Port "vxlan0"
            Interface "vxlan0"
                type: vxlan
                options: {remote_ip="192.168.128.62"}
        Port "ovsbr0"
            Interface "ovsbr0"
                type: internal
        Port "mgmt0"
            Interface "mgmt0"
                type: internal
    ovs_version: "2.5.1"

ip addr
[root@rhel-kvm-ovs-01 ~]# ip addr
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:b7:2d:7f brd ff:ff:ff:ff:ff:ff
    inet 192.168.128.61/24 brd 192.168.128.255 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feb7:2d7f/64 scope link 
       valid_lft forever preferred_lft forever
3: virbr0:  mtu 1500 qdisc noqueue state DOWN 
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic:  mtu 1500 qdisc pfifo_fast state DOWN qlen 500
    link/ether 52:54:00:fc:80:90 brd ff:ff:ff:ff:ff:ff
5: ovs-system:  mtu 1500 qdisc noop state DOWN 
    link/ether ea:e8:f2:40:1f:55 brd ff:ff:ff:ff:ff:ff
6: ovsbr0:  mtu 1500 qdisc noqueue state UNKNOWN 
    link/ether a6:ba:78:70:5b:4e brd ff:ff:ff:ff:ff:ff
    inet6 fe80::a4ba:78ff:fe70:5b4e/64 scope link 
       valid_lft forever preferred_lft forever
7: mgmt0:  mtu 1500 qdisc noqueue state UNKNOWN 
    link/ether b2:b8:67:7d:58:41 brd ff:ff:ff:ff:ff:ff
    inet 192.168.57.2/24 brd 192.168.57.255 scope global mgmt0
       valid_lft forever preferred_lft forever
    inet6 fe80::b0b8:67ff:fe7d:5841/64 scope link 
       valid_lft forever preferred_lft forever
10: macvtap0@ovsbr0:  mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
    link/ether 52:54:00:b5:99:36 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::5054:ff:feb5:9936/64 scope link 
       valid_lft forever preferred_lft forever
12: macvtap1@ovsbr0:  mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
    link/ether 52:54:00:8f:83:bc brd ff:ff:ff:ff:ff:ff
    inet6 fe80::5054:ff:fe8f:83bc/64 scope link 
       valid_lft forever preferred_lft forever

그 속macvtap0@ovsbr0이러한 가상 컴퓨터 네트워크 카드 모드 는 참고 하 시기 바 랍 니 다.http://blog.csdn.net/dylloveyou/article/details/53283598
5. 테스트
이상 설정 은 node 1 의 작업 과정 만 보 여 줍 니 다. node 2 는 같 습 니 다.
node 1 내부 vm 간 통신 kvm 01 ping kvm 02: CentOS7上实践Open vSwitch+VXLAN_第4张图片
node 1 vm 와 node 2 vm 통신 node 1 의 kvm 01 ping node 2 의 kvm 02: ping 이 방화벽 을 찾 지 못 하 는 원인 으로 방화벽 을 닫 습 니 다.
systemctl stop firewalld systemctl disable firewalld
재 ping CentOS7上实践Open vSwitch+VXLAN_第5张图片
ovsbr 0 위 에서 잡 은 가방
[root@rhel-kvm-ovs-01 ~]# tcpdump -i ovsbr0
tcpdump: WARNING: ovsbr0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ovsbr0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:24:30.924042 IP 192.168.57.102 > 192.168.57.11: ICMP echo request, id 27905, seq 130, length 64
16:24:30.926714 IP 192.168.57.11 > 192.168.57.102: ICMP echo reply, id 27905, seq 130, length 64
16:24:31.925557 IP 192.168.57.102 > 192.168.57.11: ICMP echo request, id 27905, seq 131, length 64
16:24:31.926446 IP 192.168.57.11 > 192.168.57.102: ICMP echo reply, id 27905, seq 131, length 64

6. 가상 컴퓨터 의 다른 네트워크 설정 모드
새로 만 든 가상 컴퓨터, 기본 네트워크 설정 은 다음 과 같 습 니 다.
[root@rhel-kvm-ovs-01 ~]# cd /etc/libvirt/qemu/networks
[root@rhel-kvm-ovs-01 networks]# cat default.xml 


<network>
  <name>defaultname>
  <uuid>1bd83fc4-bced-4d3b-9ac1-71754d1ea851uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:80:1a:b4'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    dhcp>
  ip>
network>

dhcp 를 통 해 192.168.12.0 / 24 의 IP 를 분배 하고 nat 모드 로 외부 네트워크 를 방문 합 니 다. 우 리 는 kvm 03 가상 기 를 시작 합 니 다. 네트워크 선택 default CentOS7上实践Open vSwitch+VXLAN_第6张图片 는 ip 192.168.12.229 CentOS7上实践Open vSwitch+VXLAN_第7张图片 를 분 배 했 고 nat 모드 를 통 해 외부 네트워크 를 방문 할 수 있 습 니 다.
우 리 는 이미 ovsbr 0 을 만 들 었 습 니 다. 이 다 리 를 사용 하려 면 두 가지 실현 방식 이 있 습 니 다. 1) 본 고의 설정 방식 2) 새로운 네트워크 를 만 듭 니 다. 다음은 구체 적 으로 2.
default 를 본 떠 새로운 네트워크 를 만 들 고 ovsbr 0 을 포함 시 키 며 ovsnet. xml 를 만 듭 니 다. 내용 은 다음 과 같 습 니 다.
<network>
      <name>ovsbr0name>
      <forward mode='bridge'/>
      <bridge name='ovsbr0'/>
      <virtualport type='openvswitch'/>
network>

다음 명령 을 사용 하여 libvirt 에 네트워크 를 만 들 고 네트워크 를 시작 하 며 자동 시작 을 설정 합 니 다.
virsh net-define ovsnet.xml
virsh net-start ovsbr0
virsh net-autostart ovsbr0

이렇게 하면 kvm 03 의 네트워크 를 default 에서 ovsbr 0 CentOS7上实践Open vSwitch+VXLAN_第8张图片 으로 바 꿀 수 있다.
CentOS7上实践Open vSwitch+VXLAN_第9张图片
kvm 03 을 다시 시작 합 니 다. 보 이 는 네트워크 는 다음 과 같 습 니 다 CentOS7上实践Open vSwitch+VXLAN_第10张图片
dhcp 가 설정 되 어 있 지 않 기 때문에 kvm 03 의 ip (192.168.57.13, kvm 01, kvm 02 의 한 네트워크) CentOS7上实践Open vSwitch+VXLAN_第11张图片 을 수 동 으로 설정 해 야 합 니 다.
이 동시에 kvm 01 kvm 02 와 node 2 의 vm 도 이러한 네트워크 모드 로 설정 되 었 다.
ping kvm01 CentOS7上实践Open vSwitch+VXLAN_第12张图片
ping node 2 위의 kvm 02 CentOS7上实践Open vSwitch+VXLAN_第13张图片 캡 처 정보
[root@rhel-kvm-ovs-01 ~]# tcpdump -i vnet2
tcpdump: WARNING: vnet2: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vnet2, link-type EN10MB (Ethernet), capture size 65535 bytes
16:52:46.772500 IP 192.168.57.13 > 192.168.57.102: ICMP echo request, id 25601, seq 0, length 64
16:52:46.773750 IP 192.168.57.102 > 192.168.57.13: ICMP echo reply, id 25601, seq 0, length 64
16:52:47.774675 IP 192.168.57.13 > 192.168.57.102: ICMP echo request, id 25601, seq 1, length 64
16:52:47.775324 IP 192.168.57.102 > 192.168.57.13: ICMP echo reply, id 25601, seq 1, length 64

ovs - 시작 하 는 실험 환경 설명도 와 대응
[root@rhel-kvm-ovs-01 ~]# ovs-vsctl show
8e3f7c3f-3d0d-4068-92d0-c0bd0c6651ce
    Bridge "ovsbr0"
        Port "vnet0"
            Interface "vnet0"
        Port "vnet1"
            Interface "vnet1"
        Port "mgmt0"
            Interface "mgmt0"
                type: internal
        Port "vxlan0"
            Interface "vxlan0"
                type: vxlan
                options: {remote_ip="192.168.128.62"}
        Port "ovsbr0"
            Interface "ovsbr0"
                type: internal
        Port "vnet2"
            Interface "vnet2"
    ovs_version: "2.5.1"

이전 디 스 플레이 와 달리 이번 에는 vnet * port 가 많아 졌 습 니 다.

좋은 웹페이지 즐겨찾기