安装配置并验证Neutron
Neutron为其他服务组件提供网络连接功能,如Nova计算服务组件。同时,提供API给用户使用。支持多个网络供应商的设备和技术。
OpenStack网络方式比较多,当前以Provider网络方式为例进行说明。部署方式又分为LinuxBridge方式和OVS方式,实际部署时只需要选取两个部署当时中的一种即可。
创建Neutron数据库
在控制节点执行以下操作。
- 以root身份连接数据库。
1
mysql -u root -p
- 创建Neutron数据库。
1
CREATE DATABASE neutron;
- 授予适当访问权限,PASSWORD为用户为数据库设置的密码。
1 2 3 4
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \ IDENTIFIED BY '<PASSWORD>'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \ IDENTIFIED BY '<PASSWORD>';
<PASSWORD>为Neutron数据库的密码。
- 退出数据库。
1
exit
创建服务凭据
在控制节点执行以下操作。
- 使用admin用户登录openstack命令行。
1
source /etc/keystone/admin-openrc
- 创建Neutron用户。
1
openstack user create --domain default --password-prompt neutron
- 将admin角色添加到Neutron用户。
1
openstack role add --project service --user neutron admin
- 创建Neutron服务实体。
1
openstack service create --name neutron --description "OpenStack Networking" network
- 创建网络服务器API端点。
1 2 3
openstack endpoint create --region RegionOne network public http://controller:9696 openstack endpoint create --region RegionOne network internal http://controller:9696 openstack endpoint create --region RegionOne network admin http://controller:9696
安装和配置Neutron(Provider-LinuxBridge-控制节点)
在Provider-LinuxBridge-控制节点执行以下操作。
- 安装组件。
1
yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables
- 编辑配置文件/etc/neutron/neutron.conf。
- 配置数据库访问。
1 2
[database] connection = mysql+pymysql://neutron:<PASSWORD>@controller/neutron
- 修改[DEFAULT]模块内容。
1 2 3 4 5 6 7
[DEFAULT] core_plugin = ml2 service_plugins = transport_url = rabbit://openstack:<PASSWORD>@controller auth_strategy = keystone notify_nova_on_port_status_changes = true notify_nova_on_port_data_changes = true
service_plugins为赋空值,<PASSWORD>为openstack用户名为rabbit的用户密码。
- 配置身份访问。
1 2 3 4 5 6 7 8 9 10
[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 = <PASSWORD>
- 配置[nova]模块参数。
配置文件中默认没有[nova]模块参数,需要新增。
1 2 3 4 5 6 7 8 9
[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 = <PASSWORD>
- 配置锁定路径。
1 2
[oslo_concurrency] lock_path = /var/lib/neutron/tmp
- 配置数据库访问。
- 编辑ML2插件/etc/neutron/plugins/ml2/ml2_conf.ini。
- 启用flat和vlan网络。
默认是没有的,需要新建[ml2]、[ml2_type_flat]和[securitygroup]。
1 2 3 4 5
[ml2] type_drivers = flat,vlan tenant_network_types = mechanism_drivers = linuxbridge extension_drivers = port_security
tenant_network_types为赋空值。
- 将Provider配置为flat网络。
1 2
[ml2_type_flat] flat_networks = provider
- 将vlan配置为flat网络。
1 2
[ml2_type_vlan] network_vlan_ranges = provider
- 启用ipset提高安全效率。
1 2
[securitygroup] enable_ipset = true
- 启用flat和vlan网络。
- 配置Linux桥
代理 ,编辑“/etc/neutron/plugins/ml2/linuxbridge_agent.ini”文件。- 将Provider虚拟网络映射到物理网络。
1 2
[linux_bridge] physical_interface_mappings = provider:enp3s0
此处的provider网络使用的是enp3s0网口,部署时根据实际情况调整。这里不是管理网络所用的物理网卡,是为业务网络准备的网卡。参考组网环境。
- 禁用vxlan覆盖网络。
1 2
[vxlan] enable_vxlan = false
- 启用安全组并配置Linux网桥iptables防火墙驱动程序,然后保存并退出。
1 2 3
[securitygroup] enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
- 确保您的Linux操作系统内核支持网桥过滤器。
在“/etc/sysctl.conf”中添加如下配置后,保存并退出:
1 2
net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1
- 运行以下命令,添加网桥过滤器:
1 2 3
modprobe br_netfilter sysctl -p sed -i '$amodprobe br_netfilter' /etc/rc.local
- 将Provider虚拟网络映射到物理网络。
- 配置DHCP
代理 。编辑“/etc/neutron/dhcp_agent.ini”文件,新增如下配置后保存并退出。
1 2 3 4
[DEFAULT] interface_driver = linuxbridge dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true
- 配置元数据
代理 。1
vim /etc/neutron/metadata_agent.ini
配置元数据主机和共享密钥。
1 2 3
[DEFAULT] nova_metadata_host = controller metadata_proxy_shared_secret = <PASSWORD>
- 配置Computer服务以使用Networking服务。
1
vim /etc/nova/nova.conf
配置访问参数,启用元数据代理并配置密码。
1 2 3 4 5 6 7 8 9 10 11 12 13
[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 = <PASSWORD> service_metadata_proxy = true metadata_proxy_shared_secret = <PASSWORD>
执行该操作前,请确保已经安装了Nova。
- 创建网络初始化。
1
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
- 填充数据库。
1
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 2 3
systemctl enable openstack-neutron-server.service openstack-neutron-linuxbridge-agent.service openstack-neutron-dhcp-agent.service openstack-neutron-metadata-agent.service systemctl start openstack-neutron-server.service openstack-neutron-linuxbridge-agent.service openstack-neutron-dhcp-agent.service \ openstack-neutron-metadata-agent.service
安装和配置Neutron(Provider-LinuxBridge-计算节点)
在Provider-LinuxBridge-计算节点执行以下操作。
- 安装组件。
1
yum -y install openstack-neutron-linuxbridge ebtables ipset
- 配置公共组件,编辑/etc/neutron/neutron.conf文件。
- 在该[database]部分中,注释掉所有connection选项(默认已注释),因为计算节点不直接访问数据库。
- 配置RabbitMQ 消息队列访问。
1 2
[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller
- 配置身份访问服务。
1 2 3 4 5 6 7 8 9 10 11 12
[DEFAULT] 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 = <PASSWORD>
- 配置锁定路径。
1 2
[oslo_concurrency] lock_path = /var/lib/neutron/tmp
- 配置Linux桥代理,编辑“/etc/neutron/plugins/ml2/linuxbridge_agent.ini”文件,添加以下3项。
- 提供者虚拟网络映射到提供者物理网络接口。
1 2
[linux_bridge] physical_interface_mappings = provider:enp3s0
此处的provider网络使用的是enp3s0网口,部署时请根据实际情况调整。这里不是管理网络所用的物理网卡,是为业务网络准备的网卡。请参见组网环境。
- 禁用vxlan覆盖网络。
1 2
[vxlan] enable_vxlan = false
- 启用安全组并配置Linux网桥iptables防火墙驱动程序。
1 2 3
[securitygroup] enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
- 提供者虚拟网络映射到提供者物理网络接口。
- 确保您的Linux操作系统内核支持网桥过滤器。
在“/etc/sysctl.conf”中添加:
1 2
net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1
:
- 运行以下命令,添加网桥过滤器。
1 2 3
modprobe br_netfilter sysctl -p sed -i '$amodprobe br_netfilter' /etc/rc.local
- 启动Linux网桥代理并将其配置为在系统引导时启动。
1 2
systemctl enable openstack-neutron-linuxbridge-agent.service systemctl start openstack-neutron-linuxbridge-agent.service
安装和配置Neutron(Provider-OVS-控制节点)
在Provider-OVS-控制节点执行下操作。
- 安装组件。
1
yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch-agent openstack-neutron-dhcp-agent openstack-neutron-metadata-agent ebtables
- 修改系统配置文件“/etc/sysctl.conf”。
- 添加如下内容:
1 2 3
net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0
- 使配置生效。
1
sysctl -p
- 添加如下内容:
- 编辑配置文件/etc/neutron/neutron.conf。
- 配置数据库访问。
1 2
[database] connection = mysql+pymysql://neutron:<PASSWORD>@controller/neutron
- 启用ML2插件,禁用其他插件。
1 2 3 4 5 6 7
[DEFAULT] core_plugin = ml2 service_plugins = transport_url = rabbit://openstack:<PASSWORD>@controller auth_strategy = keystone notify_nova_on_port_status_changes = true notify_nova_on_port_data_changes = true
- 配置身份访问。
1 2 3 4 5 6 7 8 9 10
[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 = <PASSWORD>
- 配置nova参数。
1 2 3 4 5 6 7 8 9
[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 = <PASSWORD>
- 配置锁定路径。
1 2
[oslo_concurrency] lock_path = /var/lib/neutron/tmp
- 配置数据库访问。
- 编辑ML2插件“/etc/neutron/plugins/ml2/ml2_conf.ini”。
- 启用flat和vlan网络。
默认是没有的,需要新建 [ml2]、[ml2_type_flat]、[ml2_type_vlan]和[securitygroup]。
1 2 3 4 5 6 7 8 9 10 11
[ml2] type_drivers = flat,vlan tenant_network_types = mechanism_drivers = openvswitch extension_drivers = port_security [ml2_type_flat] flat_networks = provider [ml2_type_vlan] network_vlan_ranges = provider [securitygroup] enable_ipset = true
- 启用flat和vlan网络。
- 配置DHCP代理。
编辑“/etc/neutron/dhcp_agent.ini”文件。
1 2 3 4 5
[DEFAULT] dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true interface_driver = openvswitch force_metadata = true
- 配置元数据代理。
编辑“/etc/neutron/metadata_agent.ini”。
配置元数据主机和共享密钥。
1 2 3
[DEFAULT] nova_metadata_host = controller metadata_proxy_shared_secret = <PASSWORD>
<PASSWORD>为Neutron数据库的密码。
- 创建网络初始化。
1
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
- 填充数据库。
1 2
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 2 3 4 5 6
systemctl enable openstack-neutron-server.service \ openstack-neutron-openvswitch-agent.service openstack-neutron-dhcp-agent.service \ openstack-neutron-metadata-agent.service systemctl start openstack-neutron-server.service \ openstack-neutron-openvswitch-agent.service openstack-neutron-dhcp-agent.service \ openstack-neutron-metadata-agent.service
安装和配置Neutron(Provider-OVS-计算节点)
在Provider-OVS-计算节点执行以下操作。
- 安装组件。
1
yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch-agent openstack-neutron-dhcp-agent openstack-neutron-metadata-agent ebtables ipset
- 修改系统配置文件 /etc/sysctl.conf。
- 添加如下内容:
1 2 3
net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0
- 使配置生效 。
1
sysctl -p
- 添加如下内容:
- 配置公共组件,编辑/etc/neutron/neutron.conf文件。
- 配置RabbitMQ消息队列访问。
1 2
[DEFAULT] transport_url = rabbit://openstack:<PASSWORD>@controller
<PASSWORD>为RabbitMQ服务为openstack用户设置的密码。
- 配置身份访问服务。
1 2 3 4 5 6 7 8 9 10 11 12
[DEFAULT] 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 = <PASSWORD>
<PASSWORD>为Neutron数据库的密码。
- 配置锁定路径。
1 2
[oslo_concurrency] lock_path = /var/lib/neutron/tmp
- 配置RabbitMQ消息队列访问。
- 配置openstack agent,编辑文件“/etc/neutron/plugins/ml2/openvswitch_agent.ini”,新增[linux_openvswitch]、[vxlan]、[ovs]和[securitygroup]。
1 2 3 4 5 6 7 8 9
[linux_openvswitch] physical_interface_mappings = provider:enp3s0 [vxlan] enable_vxlan = false [ovs] bridge_mappings = provider:br-provider [securitygroup] enable_security_group=true firewall_driver = iptables_hybrid
- 配置DHCP代理,编辑“/etc/neutron/dhcp_agent.ini”文件。
1 2 3 4
[DEFAULT] interface_driver = openvswitch enable_isolated_metadata = true force_metadata = true
- 配置metadata代理,编辑“/etc/neutron/metadata_agent.ini”文件。
1 2 3
[DEFAULT] nova_metadata_host = controller metadata_proxy_shared_secret = <PASSWORD>
<PASSWORD>为Neutron数据库的密码。
- 启动OVS代理并将其配置为在系统引导时启动。
1 2 3 4
systemctl enable openstack-neutron-openvswitch-agent.service openstack-neutron-dhcp-agent.service \ openstack-neutron-metadata-agent.service systemctl start openstack-neutron-openvswitch-agent.service openstack-neutron-dhcp-agent.service \ openstack-neutron-metadata-agent.service
- 创建ovs provider。
1 2
ovs-vsctl add-br br-provider ovs-vsctl add-port br-provider enp3s0
openvswitch-agent如果拿不到root权限会导致openvswitch服务启动失败,需要升级sudo软件包。
yum update sudo
验证Neutron
在控制节点执行以下操作。
- 列出成功启动的Neutron代理。
1
openstack network agent list
命令行 |
功能描述 |
---|---|
openstack network create --share --external \ --provider-physical-network provider \ --provider-network-type flat enp3s0 |
创建共享虚拟网络 |
openstack subnet create --network provider \ --allocation-pool start=172.168.204.50,end=172.168.204.100 \ --dns-nameserver 8.8.8.8 --gateway 172.168.204.1 \ --subnet-range 172.168.204.0/24 subnet1 |
创建子网络 说明:
该命令中的参数意为:网络名称为subnet1,DHCP范围为172.168.204.50~172.168.204.100,DNS为8.8.8.8,网关为172.168.204.1,网络为172.168.204.0/24。 |
openstack network list |
查看当前网络 |
openstack subnet list |
查看子网络 |
openstack port list |
查看网络端口 |