在CentOS | Rhel | Fedora上配置Open Vswitch

时间:2020-02-23 14:44:30  来源:igfitidea点击:

在我们最近的教程中,我们讨论了在CentOS/RHEL 8 Linux服务器上的Open VSwitch安装。
本文将继续向我们展示如何配置网络接口,以便与Open VSwitch一起使用。

第1步:在CentOS | Rhel | Fedora上安装Open VSwitch

我们可能已经在我们正在处理的机器上安装了Open vswitch。
如果未安装,请参阅下面的教程以便在RHEL/CentOS 8上安装:

如何在CentOS 8上安装Open vswitch | rhel 8.

对于CentOS 7,使用命令:

sudo yum install -y epel-release centos-release-openstack-train
sudo yum install openvswitch libibverbs

关于Fedora:

sudo dnf install openvswitch libibverbs

激活并启用OpenVSwitch服务:

sudo systemctl enable --now openvswitch

通过检查服务状态验证:

$systemctl status openvswitch
● openvswitch.service - Open vSwitch
   Loaded: loaded (/usr/lib/systemd/system/openvswitch.service; enabled; vendor preset: disabled)
   Active: active (exited) since Sat 2017-06-06 13:56:42 UTC; 1s ago
  Process: 5826 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 5826 (code=exited, status=0/SUCCESS)

步骤2:安装OS-Net-Config网络配置工具

下一步允许安装OS-Net-Config CLI工具,通过YAML或者JSON文件格式提供主机网络的配置。

默认情况下,OS-net-config使用位于/etc/os-net-config/config.yaml的yaml配置文件。
但这可以通过 --config-file(-c)CLI选项。

从OpenStack存储库安装OS-Net-Config

如果配置了OpenStack存储库,则可以从中安装该工具。

sudo yum install os-net-config

查看有关该软件包的更多详细信息:

$rpm -qi os-net-config
Name        : os-net-config
Version     : 11.3.1
Release     : 1.el7
Architecture: noarch
Install Date: Sat 06 Jun 2017 02:10:08 PM UTC
Group       : Unspecified
Size        : 3848910
License     : ASL 2.0
Signature   : RSA/SHA1, Fri 17 Jan 2017 01:32:05 PM UTC, Key ID f9b9fee7764429e6
Source RPM  : os-net-config-11.3.1-1.el7.src.rpm
Build Date  : Tue 07 Jan 2017 08:43:47 AM UTC
Build Host  : c1bj.rdu2.centos.org
Relocations : (not relocatable)
Packager    : CBS <Hyman@theitroad>
Vendor      : CentOS
URL         : http://pypi.python.org/pypi/os-net-config
Summary     : Host network configuration tool
Description :
Host network configuration tool for OpenStack.

使用pip安装OS-NET-CONFIG

OS-Net-Config网络配置工具作为Python软件包分发,可以使用pip | pip3:

Fedora/CentOS 8:

sudo dnf install python3-pip

CentOS 7:

sudo yum install -y epel-release
sudo yum -y install python-pip
sudo pip install os-net-config

如果安装成功,则应在类似于下面的结尾看到输出。

....
Downloading https://files.pythonhosted.org/packages/df/f5/9c052db7bd54d0cbf1bc0bb6554362bba1012d03e5888950a4f5c5dadc4e/scandir-1.10.0.tar.gz
Installing collected packages: pbr, anyjson, six, monotonic, dnspython, greenlet, enum34, eventlet, iso8601, netaddr, wrapt, debtcollector, stevedore, oslo.i18n, rfc3986, PyYAML, certifi, idna, chardet, urllib3, requests, oslo.config, pytz, netifaces, pyparsing, oslo.utils, fasteners, oslo.concurrency, pyrsistent, attrs, unknown, unknown, contextlib2, scandir, pathlib2, importlib-metadata, functools32, jsonschema, pyudev, os-net-config
  Running setup.py install for anyjson ... done
  Running setup.py install for wrapt ... done
  Running setup.py install for debtcollector ... done
  Running setup.py install for stevedore ... done
  Running setup.py install for oslo.i18n ... done
  Running setup.py install for PyYAML ... done
  Found existing installation: chardet 2.2.1
    Uninstalling chardet-2.2.1:
      Successfully uninstalled chardet-2.2.1
  Running setup.py install for oslo.config ... done
  Running setup.py install for oslo.utils ... done
  Running setup.py install for oslo.concurrency ... done
  Running setup.py install for pyrsistent ... done
  Running setup.py install for unknown ... done
  Running setup.py install for unknown ... done
  Running setup.py install for scandir ... done
  Running setup.py install for functools32 ... done
  Found existing installation: pyudev 0.15
    Uninstalling pyudev-0.15:
      Successfully uninstalled pyudev-0.15
  Running setup.py install for pyudev ... done
  Running setup.py install for os-net-config ... done
Successfully installed PyYAML-5.3.1 anyjson-0.3.3 attrs-19.3.0 certifi-2017.4.5.1 chardet-3.0.4 contextlib2-0.6.0.post1 debtcollector-2.1.0 dnspython-1.16.0 enum34-1.1.10 eventlet-0.25.2 fasteners-0.15 functools32-3.2.3.post2 greenlet-0.4.16 idna-2.9 importlib-metadata-1.6.1 iso8601-0.1.12 jsonschema-3.2.0 monotonic-1.5 netaddr-0.7.19 netifaces-0.10.9 os-net-config-12.3.0 oslo.concurrency-4.1.0 oslo.config-8.1.0 oslo.i18n-5.0.0 oslo.utils-4.2.0 pathlib2-2.3.5 pbr-5.4.5 pyparsing-2.4.7 pyrsistent-0.16.0 pytz-2017.1 pyudev-0.22.0 requests-2.23.0 rfc3986-1.4.0 scandir-1.10.0 six-1.15.0 stevedore-2.0.0 unknown-0.0.0 unknown-0.0.0 urllib3-1.25.9 wrapt-1.12.1
You are using pip version 8.1.2, however version 20.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

确认安装后命令是否在路径中。

$which os-net-config
/usr/bin/os-net-config

第3步:使用OS-Net-Config配置Open VSwitch

安装OpenVswitch软件包和OS-Net-Config命令行工具后,我们可以开始配置OVS接口,如我们用例所要求的界面,桥接和绑定。

示例1:具有静态IP地址的单个接口配置

创建yaml配置文件:

$vim ovs-interface.yml

配置如下。

network_config:
  - type: interface
    name: eth1
    use_dhcp: false
    use_dhcpv6: false
    addresses:
    - ip_netmask: 172.21.200.10/24
    routes:
      - ip_netmask: 0.0.0.0/0
        next_hop: 172.21.200.254
        default: true

这将使用静态IP地址172.21.200.10/24和网关172.21.200.254配置eth1接口。

应用配置:

$sudo os-net-config -c ovs-interface.yml

示例2:使用单个连接接口(端口)配置OVS桥

对于桥梁创建,配置文件如下所示。

$vim ovs-bridge-single-interface.yml
network_config:
  - type: ovs_bridge
    name: br-ex
    use_dhcp: false
    use_dhcpv6: false
    addresses:
    - ip_netmask: 172.21.200.10/24
    routes:
      - ip_netmask: 0.0.0.0/0
        next_hop: 172.21.200.254
        default: true
    members:
      
        type: interface
        name: eth1

更改然后应用配置OS-NET-CONFIG -C <YAML-FILE>

示例3:在OVS键顶上配置OVS桥

以下是在OVS键上创建的OVS桥的配置。

network_config:
  - type: ovs_bridge
     name: br-ex
     use_dhcp: true
     members:
       - type: ovs_bond
         name: bond1
         members:
           - type: interface
             name: em1
           - type: interface
             name: em2

示例4:在OVS桥的顶部配置标记的VLAN接口

network_config:
  - type: ovs_bridge
    name: br-ctlplane
    use_dhcp: true
    members:
      - type: interface
        name: em1
      - type: vlan
        vlan_id: 20
        addresses:
          - ip_netmask: 192.0.2.1/24

示例5:创建OVS键

此示例仅创建OVS键。

network_config:
  - type: ovs_bridge
    name: bond1
    use_dhcp: true
    members:
      - type: interface
        name: eno1
      - type: interface
        name: eno2

检查OVS配置

应用OVS配置后,将自动添加到/etc/sysconfig/network-scripts /目录中添加网络配置脚本。

$ls /etc/sysconfig/network-scripts/

我们可以使用OVS-VSCTL命令验证OVS设置和端口连接:

$ovs-vsctl show

第4步:使用OV创建KVM网络

如果我们使用具有KVM虚拟化的Open VSwitch,则需要定义虚拟机将使用的网络。

创建一个新的桥XML文件。

$vim kvm-ovs.xml

将桥接详细信息添加到文件中。

<network>
  <name>ovs-bridge</name>
  <forward mode='bridge'
  <bridge name='br-ex'
  <virtualport type='openvswitch'
</network>

其中:OVS-Bridge是要创建的LibVirt网络的名称.BR-EX是创建网络将使用的OVS桥的名称。

要从XML文件定义网络而不启动它,请使用:

sudo virsh net-define  kvm-ovs.xml

要启动(以前定义的)非活动网络,请使用:

sudo virsh net-start ovs-bridge

将网络设置为AutoStart AT服务启动:

sudo virsh net-autostart  ovs-bridge

检查以确认是否转变为yes - 持久性应读取是否。

$sudo virsh net-list --all
 Name              State    Autostart   Persistent
---------------------------------------------------
 ovs-bridge        active   yes         yes
 default           active   yes         yes