2、环境搭建:在Ubuntu/CentOS上安装OVS、启动OVS服务、验证安装是否成功
好,咱们正式开始动手。环境搭建这一步,说白了就是给系统装上OVS这个“软件交换机”。我见过不少新手在这一步翻车,其实没那么复杂。你跟着我来,一步步走稳就行。
2.1 操作系统与前置准备
我个人习惯用Ubuntu 20.04 LTS或CentOS 7/8来做实验。为什么?因为这两个发行版的包管理最成熟,踩坑最少。你想想看,要是系统源里都没有OVS的包,你还得手动编译,那多折腾。
先确认你的系统版本:
# Ubuntu
cat /etc/os-release
# CentOS
cat /etc/redhat-release
嗯,这里要注意:内核版本最好在4.19以上。我曾在CentOS 7的默认内核(3.10)上装OVS,结果有些高级特性跑不起来。后来升级了内核才搞定。
# Ubuntu
sudo apt update && sudo apt install -y build-essential
# CentOS
sudo yum groupinstall -y "Development Tools"
2.2 安装OVS——两种主流方式
安装方式我推荐两种:包管理器安装(省心)和源码编译安装(灵活)。咱们先讲最常用的包管理器方式。
方式一:apt/yum 直接安装
这是最快捷的路径。Ubuntu和CentOS的官方源里其实都带了OVS,但版本可能偏旧。我建议先添加OVS官方仓库:
# Ubuntu 20.04
sudo apt install -y openvswitch-switch openvswitch-common
# CentOS 7/8
sudo yum install -y openvswitch
等一下,CentOS用户注意:默认的epel源里OVS版本可能比较老。我建议用以下方式获取最新稳定版:
# CentOS 7 添加OVS官方源
sudo yum install -y https://rpm.ovn.org/centos/7.9.2009/x86_64/ovn-2021/ovn-2021.09.0-1.el7.x86_64.rpm
# 或者直接用RDO仓库
sudo yum install -y centos-release-openstack-train
sudo yum install -y openvswitch
方式二:源码编译安装(进阶)
如果你需要定制化编译选项,或者想体验最新特性,那就走源码编译。我在生产环境里其实更推荐这种方式,因为可控性更强。
# 下载源码
wget https://www.openvswitch.org/releases/openvswitch-2.17.0.tar.gz
tar -xzf openvswitch-2.17.0.tar.gz
cd openvswitch-2.17.0
# 配置与编译
./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
make -j$(nproc)
sudo make install
这里有个小技巧:make -j$(nproc) 能利用你CPU的所有核心并行编译,速度能快好几倍。我第一次编译时没加这个参数,等了快20分钟……后来同事提醒了我。
sudo ovsdb-tool create /etc/openvswitch/conf.db \
/usr/share/openvswitch/vswitch.ovsschema
这一步很多人会漏掉,导致启动时报错。
2.3 启动OVS服务
装好之后,就该让OVS跑起来了。这里分两种情况:
使用systemd管理(推荐)
# 启动OVS数据库服务
sudo systemctl start ovsdb-server
# 启动OVS vswitchd服务
sudo systemctl start ovs-vswitchd
# 设置开机自启
sudo systemctl enable ovsdb-server ovs-vswitchd
你可能会问:为什么要先启动ovsdb-server?其实OVS的架构是分层的——ovsdb-server负责存储配置,ovs-vswitchd负责实际转发。先有数据库,交换机才能读取配置。这个顺序搞反了,服务就起不来。
手动启动(调试用)
有时候systemd抽风,或者你在容器里跑,那就手动启动:
# 启动数据库
sudo ovsdb-server --remote=punix:/var/run/openvswitch/db.sock \
--remote=db:Open_vSwitch,Open_vSwitch,manager_options \
--pidfile --detach
# 启动vswitchd
sudo ovs-vswitchd --pidfile --detach
ps -ef | grep ovs
你应该能看到两个进程:ovsdb-server 和 ovs-vswitchd。少一个都不行。
2.4 验证安装是否成功
服务跑起来了,但怎么确认它真的能用?我一般用三板斧:
第一板斧:查看版本
sudo ovs-vsctl --version
输出应该类似:
ovs-vsctl (Open vSwitch) 2.17.0
DB Schema 8.2.0
看到版本号就说明核心工具装好了。我曾经遇到过一次,版本号显示正常,但ovs-vswitchd没启动,结果后面创建网桥全失败。所以别只看版本,还得看服务状态。
第二板斧:检查服务状态
sudo systemctl status ovsdb-server
sudo systemctl status ovs-vswitchd
输出里要有 active (running) 字样。如果看到 failed 或 inactive,那就得去查日志了:
sudo journalctl -u ovs-vswitchd -n 50
第三板斧:创建测试网桥
这是最实在的验证方式——直接创建一个虚拟交换机试试:
# 创建一个名为br-test的网桥
sudo ovs-vsctl add-br br-test
# 查看网桥列表
sudo ovs-vsctl list-br
# 查看网桥详细信息
sudo ovs-vsctl show
如果能看到类似这样的输出,恭喜你,OVS已经可以正常工作了:
a1b2c3d4-e5f6-7890-abcd-ef1234567890
Bridge br-test
Port br-test
Interface br-test
type: internal
ovs_version: "2.17.0"
sudo ovs-vsctl del-br br-test
别留着测试网桥在生产环境里,我见过有人忘了删,结果网络拓扑里多了一个莫名其妙的桥,排查了半天。
2.5 常见问题与排错
搭建过程中难免遇到问题。我把最常见的几个列出来:
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| ovs-vswitchd启动失败 | 内核模块未加载 | sudo modprobe openvswitch |
| ovs-vsctl命令找不到 | PATH环境变量问题 | 源码安装后执行 export PATH=$PATH:/usr/local/bin |
| 创建网桥报错“permission denied” | 当前用户无权限 | 使用sudo,或将用户加入openvswitch组 |
| 服务启动但ovs-vsctl show为空 | 数据库未初始化 | 检查 /etc/openvswitch/conf.db 是否存在 |
嗯,最后再啰嗦一句:环境搭建是整个实验的基础。我见过太多人在这一步图快,结果后面配置VLAN时各种报错,回头才发现是OVS没装对。所以,别急,把每一步都验证到位了再往下走。
下一章咱们就开始玩真的——配置VLAN隔离。到时候你会看到,刚才搭建的这个环境到底有多强大。