3.6 控制节点部署Neutron


部署过程
一、数据库创建及授权
在安装配置 Neutron 前,我们需要先在 MariaDB 中为它创建一个专属的数据库,并配置相应的访问权限。
1)以 root 用户身份连接到数据库服务器,连接时请输入在环境准备阶段安装 MariaDB 时设置的密码。
mysql -u root -p

2)创建 neutron 数据库。
CREATE DATABASE neutron;

3)创建 neutron 数据库用户,为了方便记忆,密码与用户名设置相同。
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'192.168.192.%' IDENTIFIED BY 'neutron';
4)操作完成后,退出数据库。
exit
二、创建服务凭证
Neutron 需要在 Keystone(身份认证服务)中注册自己的信息,这样其他组件才能找到并使用它。
1)执行管理员环境变量脚本,获取 OpenStack 的管理员命令行操作权限。
source admin-openstack.sh
2)在 OpenStack 中创建 neutron 用户(密码也是 neutron)。
openstack user create neutron --domain default --password neutron
--password 和 --password-prompt 的区别是什么?3)为 neutron 用户在 service 项目中添加管理员(admin)角色。
openstack role add admin --project service --user neutron

4)创建 neutron 服务实体,命名为 network。
openstack service create network --name neutron --description "OpenStack networking"

5)创建网络服务的 API 端点(Endpoint)。端点是其他服务访问 Neutron 的入口,分为公共、内部和管理三个级别。
a. 创建公共端点:
openstack endpoint create network public http://controller:9696 --region RegionOne

b. 创建内部端点:
openstack endpoint create network internal http://controller:9696 --region RegionOne

c. 创建管理端点:
openstack endpoint create network admin http://controller:9696 --region RegionOne

三、安装并配置组件
接下来我们需要安装 Neutron 的核心组件和各个网络插件。
1)安装 neutron 相关的软件包:
# 使用 yum 安装以下软件包
yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y
- openstack-neutron: 网络服务的核心主程序
- openstack-neutron-ml2: 二层网络插件(管理虚拟交换机)
- openstack-neutron-linuxbridge: 底层网络代理
- ebtables: 提供基础防火墙功能
2)编辑 /etc/neutron/neutron.conf 主配置文件。
修改文件内容如下:
# 配置数据库连接
[database]
connection = mysql+pymysql://neutron:neutron@controller/neutron
# 配置 ML2 插件、路由服务和重叠 IP 地址支持
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
# 配置消息队列访问,用于组件间通信
transport_url = rabbit://openstack:openstack@controller
# 配置身份认证访问策略
auth_strategy = keystone
# 配置网络拓扑变化时通知 Nova(计算服务)
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
# 配置 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
# 配置通知 Nova 时的认证信息
[nova]
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = nova
# 配置并发锁定路径
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
3)配置 ML2 插件
ML2 插件利用 Linux 网桥机制在实例间构建二层虚拟网络架构。编辑 /etc/neutron/plugins/ml2/ml2_conf.ini 文件,修改内容如下:
# 开启 flat、VLAN 和 VXLAN 网络类型支持
[ml2]
type_drivers = flat,vlan,vxlan
# 配置租户网络类型为 VXLAN
tenant_network_types = vxlan
# 开启 linux 网桥和二层同步机制
mechanism_drivers = linuxbridge,l2population
# 开启端口安全扩展驱动
extension_drivers = port_security
# 配置虚拟网络为 Flat 网络,并指定物理网络名称为 provider
[ml2_type_flat]
flat_networks = provider
# 配置 VXLAN 网络的 VNI 标识范围
[ml2_type_vxlan]
vni_ranges = 1:1000
# 开启 ipset 提高安全组规则的处理效率
[securitygroup]
enable_ipset = true
4)配置 Linux 网桥代理
Linux 网桥代理负责在实例间构建二层虚拟网络,并处理安全组规则。编辑 /etc/neutron/plugins/ml2/linuxbridge_agent.ini 文件,配置如下:
# 虚拟网络映射到物理网络接口,这里的 ens33 是提供外部访问的物理网卡
[linux_bridge]
physical_interface_mappings = provider:ens33
# 启用 VXLAN 重叠网络,并配置本机的隧道 IP 地址
[vxlan]
enable_vxlan = true
local_ip = 192.168.16.100
l2_population = true
# 启用安全组并配置基于 iptables 的防火墙驱动程序
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
physical_interface_mappings = provider:ens33 中的 ens33 必须与你实际的物理网卡名称一致,如果不同请自行修改。5)配置三层(L3)代理
三层代理为自服务网络(租户网络)提供路由转发和 NAT 服务。编辑 /etc/neutron/l3_agent.ini 文件,配置如下:
# 配置底层接口驱动程序为 linuxbridge
[DEFAULT]
interface_driver = linuxbridge
6)配置 DHCP 代理
DHCP 代理负责为虚拟网络提供 IP 地址分配服务。编辑 /etc/neutron/dhcp_agent.ini 文件,配置如下:
# 配置接口驱动和 DHCP 驱动,并启用隔离的元数据服务
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
7)配置元数据(Metadata)代理
元数据代理负责为虚拟机提供初始化配置信息(如主机名、SSH 密钥等)。编辑 /etc/neutron/metadata_agent.ini 文件,配置如下:
[DEFAULT]
# 配置 Nova metadata 所在的主机
nova_metadata_host = controller
# 配置 Neutron 和 Nova 之间通信的共享密码
metadata_proxy_shared_secret = lycloud
8)配置计算服务(Nova)使用网络服务
最后我们需要告诉 Nova 服务如何连接 Neutron。编辑 /etc/nova/nova.conf 文件,增加以下内容:
/etc/nova/nova.conf 文件中添加以下 [neutron] 配置块,否则计算节点将无法获取网络。[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
service_metadata_proxy = true
metadata_proxy_shared_secret = lycloud
四、数据库同步
1)网络服务初始化脚本需要一个指向 ML2 插件配置文件的软链接。如果该链接不存在,请执行以下命令创建:
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
2)同步并初始化 Neutron 数据库表结构。
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

五、启动服务
1)由于我们刚才修改了 Nova 的配置文件,所以需要重启 Nova 计算服务接口使其生效:
systemctl restart openstack-nova-api
2)启动 Neutron 的各项核心服务,并配置为开机自启:
systemctl start neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
systemctl enable neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
3)如果你的网络架构包含了自服务(self-service)网络,还需要启动三层(L3)路由代理并设置开机自启:
systemctl start neutron-l3-agent
systemctl enable neutron-l3-agent