一、环境规划
硬件设置 | 角色 | 处理器 | 内存 | 存储 | | —- | —- | —- | —- | | 控制器节点controller | 8 | 4 | 10 | | 计算节点compute | 4 | 2 | 10 | | 网络节点network | 4 | 2 | 10 |
网络设置(均设置为静态ip) | | 控制器 | 计算 | 网络 | | —- | —- | —- | —- | | 内网1(ens37)
(管理网络) | ip:192.168.10.10
gw:192.168.10.1 | ip:192.168.10.20
gw:192.168.10.1 | ip:192.168.10.30
gw:192.168.10.1 | | 内网2(ens37)
(租户网络) | ip:192.168.10.10
gw:192.168.20.1 | ip:192.168.10.20
gw:192.168.20.1 | ip:192.168.10.30
gw:192.168.20.1 | | 外网(ens38)
(运营商网络) | ip:10.10.64.
gw:10.10.64.1 | ip:10.10.64.
gw:10.10.64.1 | ip:10.10.64.
gw:10.10.64.1 |
二、准备工作
- 如下操作在控制节点controller进行
- 用数据库连接客户端以 root 用户连接到数据库服务器:
- controller ~# mysql -u root -p
- 创建
neutron
数据库:- MariaDB [(none)] > CREATE DATABASE neutron;
- 对
neutron
数据库授予恰当的访问权限,使用合适的密码替换- MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO ‘neutron’@’localhost’ IDENTIFIED BY ‘1111’;
- MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO ‘neutron’@’%’ IDENTIFIED BY ‘1111’;
- 获得 admin 凭证来获取只有管理员能执行命令的访问权限:
- controller ~# . admin-openrc.sh
- 创建
neutron
用户:- controller ~# openstack user create —domain default —password-prompt neutron
- 添加
admin
角色到neutron
用户:- controller ~# openstack role add —project service —user neutron admin
- 创建
neutron
服务实体:- controller ~# openstack service create —name neutron —description “OpenStack Networking” network
- 创建网络服务API端点:
- controller ~# openstack endpoint create —region RegionOne network public http://controller:9696
- controller ~# openstack endpoint create —region RegionOne network internal http://controller:9696
- controller ~# openstack endpoint create —region RegionOne network admin http://controller:9696
三、控制节点配置
- 如下操作在控制节点controller进行
- 安装组件
- controller ~# yum -y install openstack-neutron openstack-neutron-ml2
- 编辑
/etc/neutron/neutron.conf
文件并完成如下动作:- controller ~# vim /etc/neutron/neutron.conf
- 在 [database] 部分,配置数据库访问:
- 在
[DEFAULT]
部分,启用Layer 2 (ML2)插件模块,路由服务和重叠的IP地址: - 在 “[DEFAULT]” 部分,配置 “RabbitMQ” 消息队列访问
- 在 “[DEFAULT]” 部分,配置 “” 消息队列访问
- allow_overlapping_ips = True
- 在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
- [DEFAULT]
…
- auth_strategy = keystone
- [keystone_authtoken]
…
- auth_uri = http://controller:5000
- auth_url = http://controller:35357
- memcached_servers = controller:11211
- auth_type = password
- project_domain_name = default
- user_domain_name = default
- project_name = service
- username = neutron
- password = 1111
- 在 [keystone_authtoken] 中注释或者删除其他选项。
- 在
[DEFAULT]
和[nova]
部分,配置网络以能够反映计算网络拓扑变化- [DEFAULT]
…
- notify_nova_on_port_status_changes = true
- notify_nova_on_port_data_changes = true
- [nova]
…
- auth_url = http://controller:35357
- auth_type = password
- project_domain_name = default
- user_domain_name = default
- region_name = RegionOne
- project_name = service
- username = nova
- password = 1111
- 在 [oslo_concurrency] 部分,配置锁路径:
- ML2插件使用Linux桥接机制为实例创建layer-2 (桥接/交换)虚拟网络基础设施。
- 编辑
/etc/neutron/plugins/ml2/ml2_conf.ini
文件并完成下面的操作: - controller ~# vim /etc/neutron/plugins/ml2/ml2_conf.ini
- 编辑
- 在
[ml2]
部分,启用flat,VLAN和VXLAN网络: - 在
[ml2]
部分,启用VXLAN项目(私有)网络: - 在
[ml2]
部分,启用openvswitch和layer-2 population mechanisms: - 在
[ml2]
部分,启用端口安全扩展驱动: - 在
[ml2_type_flat]
部分,配置公共flat提供网络: - 在
[ml2_type_vxlan]
部分,配置VXLAN网络标识范围与私有网络不同: - 在
[securitygroup]
部分,启用 ipset 增加安全组的方便性:
- /etc/nova/nova.conf
- default没有加linuxnet_
- 网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini
指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
。如果超链接不存在,使用下面的命令创建它:- controller ~# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
- 同步数据库:
- controller ~# 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
- 忽略提示信息
- 重启计算API 服务:
- controller ~# systemctl restart openstack-nova-api.service
- 启动网络服务并配置他们开机自启动。
- 如下操作在网络节点network进行
- systemctl restart neutron-dhcp-agent neutron-l3-agent neutron-metadata-agent neutron-openvswitch-agent
- 安装组件
- controller ~# yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch
- 编辑
/etc/neutron/neutron.conf
文件并完成如下动作:- [DEFAULTstate_path未设置
- 配置文件权限未改
- controller ~# vim /etc/neutron/neutron.conf
- 在 [database] 部分,配置数据库访问:
- 在
[DEFAULT]
部分,启用Layer 2 (ML2)插件模块,路由服务和重叠的IP地址: - 在 “[DEFAULT]” 部分,配置 “RabbitMQ” 消息队列访问
- 在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
- [DEFAULT]
…
- auth_strategy = keystone
- [keystone_authtoken]
…
- auth_uri = http://controller:5000
- auth_url = http://controller:35357
- memcached_servers = controller:11211
- auth_type = password
- project_domain_name = default
- user_domain_name = default
- project_name = service
- username = neutron
- password = 1111
- 在 [keystone_authtoken] 中注释或者删除其他选项。
- 在
[DEFAULT]
和[nova]
部分,配置网络以能够反映计算网络拓扑变化- [DEFAULT]
…
- notify_nova_on_port_status_changes = true
- notify_nova_on_port_data_changes = true
- [nova]
…
- auth_url = http://controller:35357
- auth_type = password
- project_domain_name = default
- user_domain_name = default
- region_name = RegionOne
- project_name = service
- username = nova
- password = 1111
- 在 [oslo_concurrency] 部分,配置锁路径:
- ML2插件使用Linux桥接机制为实例创建layer-2 (桥接/交换)虚拟网络基础设施。
- 编辑
/etc/neutron/plugins/ml2/ml2_conf.ini
文件并完成下面的操作: - controller ~# vim /etc/neutron/plugins/ml2/ml2_conf.ini
- 编辑
- 在
[ml2]
部分,启用flat,VLAN和VXLAN网络: - 在
[ml2]
部分,启用VXLAN项目(私有)网络: - 在
[ml2]
部分,启用openvswitch和layer-2 population mechanisms: - 在
[ml2]
部分,启用端口安全扩展驱动: - 在
[ml2_type_flat]
部分,配置公共flat提供网络: - 在
[ml2_type_vxlan]
部分,配置VXLAN网络标识范围与私有网络不同: - 在
[securitygroup]
部分,启用 ipset 增加安全组的方便性:
- /etc/nova/nova.conf
- default没有加linuxnet_
- 网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini
指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
。如果超链接不存在,使用下面的命令创建它:- controller ~# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
- 同步数据库:
- controller ~# 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
- 忽略提示信息
- 重启计算API 服务:
- controller ~# systemctl restart openstack-nova-api.service
- 启动网络服务并配置他们开机自启动。
- controller ~# systemctl enable neutron-server.service controller ~# systemctl start neutron-server.service
- Linux桥接代理为实例创建包括私有网络的VXLAN隧道和处理安全组的layer-2(桥接/交换)虚拟网络设施。
- 编辑
/etc/neutron/plugins/ml2/linuxbridge_agent.ini
文件并完成下面的操作 - controller ~# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
- 编辑
- 在
[linux_bridge]
部分,映射公共虚拟网络到公共物理网络接口- [linux_bridge]
- physical_interface_mappings = provider:ens33
- 在
[vxlan]
部分,启用VXLAN覆盖网络,配置处理覆盖网络和启用layer-2 的物理网络接口的IP地址。- [vxlan]
- enable_vxlan = true
- local_ip = 10.10.64.164
- l2_population = true
- 在
[securitygroup]
部分,启用安全组并配置 Linux 桥接 iptables 防火墙驱动:
- 配置layer-3代理
- 编辑 /etc/neutron/l3_agent.ini 文件并完成下面操作
- vim /etc/neutron/l3_agent.ini
- 配置DHCP代理
- 编辑
/etc/neutron/dhcp_agent.ini
文件并完成下面的操作: - vim /etc/neutron/dhcp_agent.ini
- 编辑
- 在
[DEFAULT]
部分,配置Linux桥接网卡驱动,Dnsmasq DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络访问元数据:
- 编辑
/etc/neutron/metadata_agent.ini
文件并完成下面的操作:- controller ~# vim /etc/neutron/metadata_agent.ini
- 在
[DEFAULT]
部分,配置访问参数:
- 编辑
/etc/nova/nova.conf
文件并完成下面操作:- controller ~# vim /etc/nova/nova.conf
- 在
[neutron]
部分,配置访问参数,启用元数据代理和配置secret:- [neutron]
…
- url = http://controller:9696
- auth_url = http://controller:35357
- auth_type = password
- project_domain_name = default
- user_domain_name = default
- region_name = RegionOne
- project_name = service
- username = neutron
- password = 1111
- service_metadata_proxy = true
- metadata_proxy_shared_secret = 1111
五、完成安装
- 对网络选项2,同样也启用并启动layer-3服务:
- controller ~# systemctl enable neutron-l3-agent.service
- controller ~# systemctl start neutron-l3-agent.service
安装组件
编辑
/etc/neutron/neutron.conf
文件并完成如下动作:- compute ~# vim /etc/neutron/neutron.conf
- 在
[database]
部分,注释所有connection
项,因为计算节点不直接访问数据库。 - 在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:
- 在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
- [DEFAULT]
…
- auth_strategy = keystone
- [keystone_authtoken]
…
- auth_uri = http://controller:5000
- auth_url = http://controller:35357
- memcached_servers = controller:11211
- auth_type = password
- project_domain_name = default
- user_domain_name = default
- project_name = service
- username = neutron
- password = 1111
- 在 [oslo_concurrency] 部分,配置锁路径:
- Linux桥接代理为实例创建包括私有网络的VXLAN隧道和处理安全组的layer-2(桥接/交换)虚拟网络设施。
- compute ~# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
- 编辑
/etc/neutron/plugins/ml2/linuxbridge_agent.ini
文件并完成下面的操作:
- 编辑
- compute ~# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
- 在
[linux_bridge]
部分,映射公共虚拟网络到公共物理网络接口:
- 在
- [linux_bridge]
- physical_interface_mappings = provider:ens33
- 在
[vxlan]
部分,启用VXLAN覆盖网络,配置处理覆盖网络和启用layer-2 的物理网络接口的IP地址。
- 在
- [vxlan]
- enable_vxlan = true
- local_ip = 10.10.64.180
- l2_population = true
- 在
[securitygroup]
部分,启用安全组并配置 Linux 桥接 iptables 防火墙驱动:
- 在
- [securitygroup]
…
- enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
九、配置计算使用网络
- 编辑
/etc/nova/nova.conf
文件并完成下面的操作:
- 编辑
- compute ~# vim /etc/nova/nova.conf
- 在
[neutron]
部分,配置访问参数: - [neutron]
…
- url = http://controller:9696
- auth_url = http://controller:35357
- auth_type = password
- project_domain_name = default
- user_domain_name = default
- region_name = RegionOne
- project_name = service
- username = neutron
-
十、完成安装
- 重启计算服务:
- compute ~# systemctl restart openstack-nova-compute.service
- 启动Linux桥接代理并配置它开机自启动:
- compute ~# systemctl enable neutron-linuxbridge-agent.service
- compute ~# systemctl start neutron-linuxbridge-agent.service
- 启动服务报错
- 解决办法:
- compute ~# setenforce 0
- compute ~# vim /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
十一、验证操作
- 如下操作在控制节点controller进行
- 获得 admin 凭证来获取只有管理员能执行命令的访问权限:
- controller ~# . admin-openrc
- 列出加载的扩展,对
neutron-server
进程是否启动正常进行验证:
- 列出加载的扩展,对
- controller ~# openstack extension list —network
- 列出代理以验证启动 neutron 代理是否成功:
- controller ~# openstack network agent list