安装配置并验证Neutron
Neutron为其他服务组件提供网络连接功能,如Nova计算服务组件。同时,提供API给用户使用。支持多个网络供应商的设备和技术。
 
    OpenStack网络方式比较多,当前以Provider网络方式为例进行说明。部署方式又分为LinuxBridge方式和OVS方式,实际部署时只需要选取两个部署方式中的一种即可。
创建Neutron数据库
在控制节点执行以下操作。
- 以root身份连接数据库。
1mysql -u root -p
 - 创建Neutron数据库。
1CREATE 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数据库的密码。
 - 退出数据库。
1exit 
创建服务凭据
在控制节点执行以下操作。
- 使用admin用户登录OpenStack命令行。
1source /etc/keystone/admin-openrc
 - 创建Neutron用户。
1openstack user create --domain default --password-prompt neutron
 - 将admin角色添加到Neutron用户。
1openstack role add --project service --user neutron admin
 - 创建Neutron服务实体。
1openstack 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-控制节点执行以下操作。
- 安装组件。
1yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge-agent ebtables openstack-neutron-dhcp-agent openstack-neutron-metadata-agent
 - 编辑配置文件/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]模块参数。
        
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网络。
        
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
 - 禁用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
 - 配置元数据
代理 。1vim /etc/neutron/metadata_agent.ini配置元数据主机和共享密钥。
1 2 3
[DEFAULT] nova_metadata_host = controller metadata_proxy_shared_secret = <PASSWORD>
 - 创建网络初始化。
1ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
 - 填充数据库。
1su -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-计算节点执行以下操作。
- 安装组件。
1yum -y install openstack-neutron-linuxbridge-agent 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
 - 禁用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-控制节点执行以下操作。
- 安装组件。
1yum -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
 - 使配置生效。
        
1sysctl -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网络。
        
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数据库的密码。
 - 创建网络初始化。
1ln -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-计算节点执行以下操作。
- 安装组件。
1yum -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
 - 使配置生效。
        
1sysctl -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权限会导致Open vSwitch服务启动失败,需要升级sudo软件包。
yum update sudo
 
验证Neutron
在控制节点执行以下操作。
- 列出成功启动的Neutron代理。
1openstack 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  | 
        
          查看网络端口  |