在CentOS | Rhel | Fedora上配置Open Vswitch
在我们最近的教程中,我们讨论了在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