1.概述
网络配置有两种方式:provider网络或者self-service网络,具体情况参考官方文档
provider网络参考和self-service网络参考。更多关于网络服务(包括虚拟网络组件、分层、流量)等信息,请参考Mitaka网络指南。
Neutron包含如下组件:
-
neutron-server
接收并路由API请求到合适的openstack网络插件。
-
OpenStack Networking plug-ins and agents
创建网络或子网,提供IP地址。这些插件和代理依靠特定云中使用的供应商和技术,插件可以使用Cisco虚拟和物理交换机,NEC openFlow products,open vSwitch,linux briding 和VMwareNSX。常规的代理有Layer3,DHCP等。
-
Messaging queue
大多数openstack网络使用它连接neutron-server和各种不同代理间信息交互。此外,也作为一个存储网络状态的数据库。
Openstack网络主要为openstack compute实例提供网络和连通性。
2.控制节点上部署(10.10.80.180)
2.1安装前提
2.1.1 创建数据库
- 1.以root用户登录数据库
mysql -u root -p
- 2.创建“neutron”数据库
MariaDB > CREATE DATABASE neutron;
-
3.赋予“neutron”权限
用123456替代NEUTRON_DBPASS,在openstack安装部署1中规划openstack部署——前言&规划
>GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
>IDENTIFIED BY 'NEUTRON_DBPASS';
>GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
>IDENTIFIED BY 'NEUTRON_DBPASS';
- 4.退出数据库
> exit
2.1.2 source环境配置
. admin-openrc
2.1.3 创建服务凭据
- 1.创建“neutron”用户,密码为123456,规划见openstack部署——前言&规划
openstack user create --domain default --password-prompt neutron
- 2.将“admin”role赋予“neturon”user
openstack role add --project service --user neutron admin
- 3.创建“neturon”服务实例
openstack service create --name neutron --description "OpenStack Networking" network
2.1.4创建网络服务API endpoint
- public
openstack endpoint create --region RegionOne network public http://controller:9696
- internal
openstack endpoint create --region RegionOne network internal http://controller:9696
- admin
openstack endpoint create --region RegionOne network admin http://controller:9696
2.2安装&配置
本次实验选择安装provide网络架构。
2.2.1安装组件
apt-get install neutron-server neutron-plugin-ml2 neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
2.2.2配置服务组件
网络组件的配置包括:数据库、认证机制、消息队列、拓扑变化通知、插件。
编辑/etc/neutron/neutron.conf文件
-
1.在[database]部分配置数据库接口
用创建数据库时的实际密码123456替代NEUTRON_DBPASS
[database]
connection = mysql+pymysql://neutron:[email protected]/neutron
- 2.在[DEFAULT]部分配置modular Layer2(ML2)插件,并禁用其他插件
[DEFAULT]
···
core_plugin = ml2
service_plugins =
-
3.在[DEFAULT]部分和[oslo_messaging_rabbit]部分
配置RabbitMQ,用123456替换RABBIT_PASS
[DEFAULT]
···
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
-
4.在[DEFAULT]部分和[keystone_authtoken]部分配置认证服务接口
NEUTRON_PASS用“neutron”user的密码123456替换。
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:
auth_url = http://controller:
memcached_servers = controller:
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = NEUTRON_PASS
-
5.在[DEFAULT]部分和[nova]部分配置网络来公告拓扑改变
NOVA_PASS用nova用户密码123456替换
[DEFAULT]
...
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
[nova]
auth_url = http://controller:
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = NOVA_PASS
2.2.3 配置Modular Layer 2(ML2)插件
ML2 插件通过Linux网桥机制为实例创建二层(bridging and switching) 虚拟网络设施。编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件:
- 1.在[ml2]部分,激活flat和VLAN网络
[ml2]
...
type_drivers = flat,vlan
- 2.在[ml2]部分,禁用self-service 网络
[ml2]
...
tenant_network_types =
- 3.在[ml2]部分,激活linux bridge机制
[ml2]
...
mechanism_drivers = linuxbridge
【备注:在配置ML2插件后,移除type_drivers选项中的值会导致数据库的不一致性,注释掉该行代码
】
- 4.在[ml2]部分,激活端口安全的扩展驱动
[ml2]
...
extension_drivers = port_security
- 5.在[ml2_type_flat]部分,配置provider 虚拟网络作为一个flat网络
[ml2_type_flat]
...
flat_networks = provider
- 6.在[securitygroup] 部分,激活ipset 来提高安全组规则的效率
[securitygroup]
...
enable_ipset = true
2.2.4配置linux 网桥代理
Linux网桥代理为实例创建二层(网桥和交换)虚拟网络设施,并管理安全组。修改配置文件/etc/neutron/plugins/ml2/linuxbridge_agent.ini。
-
1.在[linux_bridge]部分
将provider 虚拟网络和provider物理网络接口映射,将PROVIDER_INTERFACE_NAME替换为底层物理网络接口名称,具体请参考官方文档
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
- 2.在[vxlan]部分,禁用VXLAN
[vxlan]
enable_vxlan = False
-
3.在[securitygroup]部分
激活安全组并配置linux网桥防火墙
[securitygroup]
...
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
2.2.5 配置DHCP代理
编辑 /etc/neutron/dhcp_agent.ini 文件:
在[DEFAULT]部分,配置如下内容:
[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True
2.3配置元数据代理
供了实例的各种配置信息,例如实例的认证信息。
编辑文件/etc/neutron/metadata_agent.ini,在在[DEFAULT] 部分配置metadata host 和shared secret,用合适的密码123456替代METADATA_SECRET
[DEFAULT]
...
nova_metadata_ip = controller
metadata_proxy_shared_secret = METADATA_SECRET
2.4配置compute,使用networking
编辑/etc/nova/nova.conf,在 [neutron] 部分配置参数接口,激活元数据proxy和配置secret,用密码123456替代NEUTRON_PASS,用123456替代METADATA_SECRET。
[neutron]
url = http://controller:
auth_url = http://controller:
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
service_metadata_proxy = True
metadata_proxy_shared_secret = METADATA_SECRET
2.5完成安装
2.5.1 Populate the database:
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
2.5.2重启计算API服务
service nova-api restart
2.5.3 重启网络服务
service neutron-server restart
service neutron-linuxbridge-agent restart
service neutron-dhcp-agent restart
service neutron-metadata-agent restart
3.计算节点部署(10.10.80.181)
3.1安装组件
apt-get install neutron-linuxbridge-agent
3.2配置通用组件
编辑配置文件/etc/neutron/neutron.conf
-
1.在[database]部分
注释掉所有“connection”选项,因为计算节点不直接访问数据库。
-
2.在[DEFAULT]和 [oslo_messaging_rabbit]部分
配置RabbitMQ 消息队列接口,RABBIT_PASS用rabbit用户的密码123456替代
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
-
3.在[DEFAULT] 和[keystone_authtoken]的部分配置身份认证
NEUTRON_PASS用123456替代。需要移除keystone_authtoken中除了下列参数以外的选项。
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://controller:
auth_url = http://controller:
memcached_servers = controller:
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = NEUTRON_PASS
3.3配置网络选项
配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini
-
1.在[linux_bridge]配置物理网络接口
PROVIDER_INTERFACE_NAME用物理网络接口eth0替代
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
- 2.在[vxlan]部分,禁用vxlan
[vxlan]
enable_vxlan = False
- 3.在[securitygroup]部分配置防火墙
[securitygroup]
...
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
3.4配置计算服务来使用网络
编辑文件/etc/nova/nova.conf
-
1.在[neutron]中配置参数
NEUTRON_PASS用neutron密码123456替代。
[neutron]
url = http://controller:
auth_url = http://controller:
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
3.5重启服务
- 1.重启计算服务
service nova-compute restart
- 2.重启网络代理
service neutron-linuxbridge-agent restart
4.验证操作
source环境变量,在/root目录下执行 (该脚本在openstack部署3——keystone安装中第六部分创建openstack安装部署3——keystone安装(仅部署在控制节点)
. admin-openrc
4.1 验证neutron-server
neutron ext-list
4.2 验证neturon代理正确性
neutron agent-list
输出节点应该包含在控制节点上有三个代理,在每一个计算节点上有一个代理: