摘要

本节主要介绍在 OpenStack 计算节点上部署和配置 Neutron 的完整过程。Neutron 负责为 OpenStack 提供虚拟网络功能,包括二层交换、三层路由、负载均衡和防火墙等。

在计算节点部署 Neutron 的核心工作是安装网络代理软件(如 Linux 网桥代理),并将它连接到控制节点的消息队列和网络服务。这样计算节点上的虚拟机就可以通过代理连通虚拟网络了。

课前准备

  1. 开启 VMnet1 和 VMnet8 网卡;
  2. 打开 controller 节点的虚拟化功能;
  3. 在 VMWare 中克隆 controller 虚拟机,新虚拟机命名为 compute;
  4. 打开 controller 和 compute 两台虚拟机(先controller后compute)。

在 controller 上执行:

bash <(curl -s https://git.seahi.me/seahi/OpenStackScripts/raw/branch/main/env3-6-local-controller.sh) --prepare

在 compute 上执行:

bash <(curl -s https://git.seahi.me/seahi/OpenStackScripts/raw/branch/main/env3-5-local-compute.sh)

在 controller 上执行:

bash <(curl -s https://git.seahi.me/seahi/OpenStackScripts/raw/branch/main/env3-6-local-controller.sh) --finalize

任务一、安装并配置组件

1)安装 Neutron 相关组件

安装 Linux 网桥代理以及相关的网络工具。

yum install openstack-neutron-linuxbridge ebtables ipset
组件说明
  • openstack-neutron-linuxbridge: 负责将虚拟机的网卡连接到物理网络。
  • ebtables 和 ipset: 用于实现网络底层安全组规则和防火墙功能。

2)配置公共组件

网络公共组件的配置主要包括:连接 RabbitMQ 消息队列、配置 Keystone 认证服务以及指定锁文件的存放路径。

编辑 /etc/neutron/neutron.conf 文件,配置如下:

[DEFAULT]
# 配置 RabbitMQ 消息队列访问
transport_url = rabbit://openstack:openstack@controller
# 配置身份服务访问
auth_strategy=keystone

[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = neutron
password = neutron

# 配置锁定路径
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp

3)配置 Linux 网桥代理

Linux 网桥代理的作用是为虚拟机实例构建二层(即桥接和交换)虚拟网络基础架构,并处理安全组规则。

编辑 /etc/neutron/plugins/ml2/linuxbridge_agent.ini 文件,配置如下:

# 将虚拟网络映射到物理网络接口
[linux_bridge]
physical_interface_mappings = provider:ens33

# 启用 VXLAN 覆盖网络
[vxlan]
enable_vxlan = true
# 配置处理覆盖的物理接口的 IP 地址(计算节点的IP地址)
local_ip = 192.168.30.131
# 启用二层同步
l2_population = true

# 启用安全组
[securitygroup]
enable_security_group = true
# 配置 Linux 网桥 iptables 防火墙驱动程序
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
网卡与 IP 配置提示

这里的 provider:ens33 和 local_ip = 192.168.30.131 需要根据计算节点虚拟机的实际情况进行修改。可以使用 ip a 命令查看网卡名称和 IP 地址。

4)配置内核参数支持网桥过滤器

为了确保 Linux 操作系统内核支持网桥过滤器(这对于安全组正常工作非常重要),我们需要开启内核的相关模块和参数。

首先,加载 br_netfilter 模块并查看是否加载成功:

modprobe br_netfilter
ls /proc/sys/net/bridge

查看模块
查看模块

接着,编辑 /etc/sysctl.conf 文件,在文件末尾添加以下两行配置:

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
参数说明

这两行配置的作用是允许 Linux 网桥将数据包交给 iptables 防火墙进行处理。这是 OpenStack 安全组功能正常运行的前提条件。只有开启这两项,虚拟机的网络安全防护(如拦截非法访问)才能真正生效。

执行生效

sysctl -p

生效
生效

5)配置计算服务(Nova)使用网络服务

计算节点上的 Nova 服务需要知道 Neutron 的地址,才能在创建虚拟机时为其分配网络。

编辑 /etc/nova/nova.conf 文件,添加以下内容:

[neutron]
url = http://controller:9696
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron

任务二、启动服务

相关配置修改完成后,需要重启对应的服务让配置生效,并设置网络代理服务开机自启。

1)重启计算(Nova)服务

systemctl restart openstack-nova-compute

2)启用 linux 网桥代理,并设置随系统启动

systemctl start neutron-linuxbridge-agent
systemctl enable neutron-linuxbridge-agent

任务三、验证配置

配置完成后,我们回到控制节点(Controller)来验证计算节点的 Neutron 代理是否已经成功注册。

切换节点提示

下面的验证步骤需要在 控制节点 (Controller) 上执行,请确保你已经切换回了控制节点。

1)加载环境变量脚本,获取管理员的命令行执行权限:

source admin-openstack.sh

2)列出已加载的网络扩展,验证 neutron-server 是否加载成功

openstack extension list --network

3)列出网络代理列表,验证计算节点的代理是否成功加载:

openstack network agent list

网络代理列表
网络代理列表

验证成功标准

如果在输出的列表中,能看到 4 个控制节点(controller)的代理和 1 个计算节点(compute)的 Linux bridge agent 代理,且状态都是 UP(即 :-)),说明计算节点的 Neutron 部署成功!

自主评分

在控制节点执行以下命令进行评分:

bash <(curl -s https://git.seahi.me/seahi/OpenStackScripts/raw/branch/main/3.7.sh) --controller

在计算节点执行以下命令进行评分:

bash <(curl -s https://git.seahi.me/seahi/OpenStackScripts/raw/branch/main/3.7.sh)