3.7 计算节点部署Neutron

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

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

1)安装 Neutron 相关组件

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

bash

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

2)配置公共组件

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

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

ini

[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 文件,配置如下:

ini

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

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

# 启用安全组
[securitygroup]
enable_security_group = true
# 配置 Linux 网桥 iptables 防火墙驱动程序
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
网卡与 IP 配置提示
这里的 provider:eth0local_ip = 192.168.16.200 需要根据计算节点虚拟机的实际情况进行修改。可以使用 ip a 命令查看网卡名称和 IP 地址。

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

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

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

bash

modprobe br_netfilter
ls /proc/sys/net/bridge

1779177369271

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

ini

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

执行生效

bash

sysctl -p

1779177428932

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

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

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

ini

[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)服务

bash

systemctl restart openstack-nova-compute

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

bash

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

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

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

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

bash

source admin-openstack.sh

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

bash

openstack extension list --network

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

bash

openstack network agent list

1779177753975

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