一、环境规划

  1. 硬件设置 | 角色 | 处理器 | 内存 | 存储 | | —- | —- | —- | —- | | 控制器节点controller | 8 | 4 | 10 | | 计算节点compute | 4 | 2 | 10 | | 网络节点network | 4 | 2 | 10 |

  2. 网络设置(均设置为静态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进行
  1. 用数据库连接客户端以 root 用户连接到数据库服务器:
    • controller ~# mysql -u root -p
  2. 创建neutron 数据库:
    • MariaDB [(none)] > CREATE DATABASE neutron;
  3. 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’;
  4. 获得 admin 凭证来获取只有管理员能执行命令的访问权限:
    • controller ~# . admin-openrc.sh
  5. 创建neutron用户:
    • controller ~# openstack user create —domain default —password-prompt neutron
  6. 添加admin 角色到neutron 用户:
    • controller ~# openstack role add —project service —user neutron admin
  7. 创建neutron服务实体:
    • controller ~# openstack service create —name neutron —description “OpenStack Networking” network
  8. 创建网络服务API端点:
  • 如下操作在控制节点controller进行
  1. 安装组件
    • controller ~# yum -y install openstack-neutron openstack-neutron-ml2
  2. 编辑/etc/neutron/neutron.conf 文件并完成如下动作:
    • controller ~# vim /etc/neutron/neutron.conf
  • 在 [database] 部分,配置数据库访问:
    • [database]
    • connection = mysql+pymysql://neutron:1111@controller/neutron
  • [DEFAULT]部分,启用Layer 2 (ML2)插件模块,路由服务和重叠的IP地址:
    • [DEFAULT]
    • core_plugin = ml2
    • service_plugins = router
    • allow_overlapping_ips = true
  • 在 “[DEFAULT]” 部分,配置 “RabbitMQ” 消息队列访问
    • [DEFAULT]
    • transport_url = rabbit://openstack:1111@controller
  • 在 “[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] 部分,配置锁路径:
    • [oslo_concurrency]
    • lock_path = /var/lib/neutron/tmp
  1. 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]
    • type_drivers = flat,vlan,vxlan
  • [ml2] 部分,启用VXLAN项目(私有)网络:
    • [ml2]
    • tenant_network_types = vxlan
  • [ml2] 部分,启用openvswitch和layer-2 population mechanisms:
    • [ml2]
    • mechanism_drivers = openvswitch,l2population
  • [ml2] 部分,启用端口安全扩展驱动:
    • [ml2]
    • extension_drivers = port_security
  • [ml2_type_flat]部分,配置公共flat提供网络:
    • [ml2_type_flat]
    • flat_networks = provider
  • [ml2_type_vxlan] 部分,配置VXLAN网络标识范围与私有网络不同:
    • [ml2_type_vxlan]
    • vni_ranges = 1:1000
  • [securitygroup]部分,启用 ipset 增加安全组的方便性:
    • [securitygroup]
    • enable_ipset = true
  1. /etc/nova/nova.conf
  2. default没有加linuxnet_
  3. 网络服务初始化脚本需要一个超链接 /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
  4. 同步数据库:
    • 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
  • 忽略提示信息
  1. 重启计算API 服务:
    • controller ~# systemctl restart openstack-nova-api.service
  2. 启动网络服务并配置他们开机自启动。
    • controller ~# systemctl enable neutron-server.service controller ~# systemctl start neutron-server.service

      四、网络节点配置

  • 如下操作在网络节点network进行
  • systemctl restart neutron-dhcp-agent neutron-l3-agent neutron-metadata-agent neutron-openvswitch-agent
  1. 安装组件
    • controller ~# yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch
  2. 编辑/etc/neutron/neutron.conf 文件并完成如下动作:
    • [DEFAULTstate_path未设置
    • 配置文件权限未改
    • controller ~# vim /etc/neutron/neutron.conf
  • 在 [database] 部分,配置数据库访问:
    • [database]
    • connection = mysql+pymysql://neutron:1111@controller/neutron
  • [DEFAULT]部分,启用Layer 2 (ML2)插件模块,路由服务和重叠的IP地址:
    • [DEFAULT]
    • core_plugin = ml2
    • service_plugins = router
    • allow_overlapping_ips = true
  • 在 “[DEFAULT]” 部分,配置 “RabbitMQ” 消息队列访问
    • [DEFAULT]
    • transport_url = rabbit://openstack:1111@controller
  • 在 “[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] 部分,配置锁路径:
    • [oslo_concurrency]
    • lock_path = /var/lib/neutron/tmp
  1. 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]
    • type_drivers = flat,vlan,vxlan
  • [ml2] 部分,启用VXLAN项目(私有)网络:
    • [ml2]
    • tenant_network_types = vxlan
  • [ml2] 部分,启用openvswitch和layer-2 population mechanisms:
    • [ml2]
    • mechanism_drivers = openvswitch,l2population
  • [ml2] 部分,启用端口安全扩展驱动:
    • [ml2]
    • extension_drivers = port_security
  • [ml2_type_flat]部分,配置公共flat提供网络:
    • [ml2_type_flat]
    • flat_networks = provider
  • [ml2_type_vxlan] 部分,配置VXLAN网络标识范围与私有网络不同:
    • [ml2_type_vxlan]
    • vni_ranges = 1:1000
  • [securitygroup]部分,启用 ipset 增加安全组的方便性:
    • [securitygroup]
    • enable_ipset = true
  1. /etc/nova/nova.conf
  2. default没有加linuxnet_
  3. 网络服务初始化脚本需要一个超链接 /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
  4. 同步数据库:
    • 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
  • 忽略提示信息
  1. 重启计算API 服务:
    • controller ~# systemctl restart openstack-nova-api.service
  2. 启动网络服务并配置他们开机自启动。
    • controller ~# systemctl enable neutron-server.service controller ~# systemctl start neutron-server.service
  3. 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 防火墙驱动:
    • [securitygroup]
    • enable_security_group = true
    • firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
  1. 配置layer-3代理
    • 编辑 /etc/neutron/l3_agent.ini 文件并完成下面操作
    • vim /etc/neutron/l3_agent.ini
  • [DEFAULT]部分,配置Linux桥接网络驱动和外部网络桥接:
    • [DEFAULT]
    • interface_driver = linuxbridge
  1. 配置DHCP代理
    • 编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:
    • vim /etc/neutron/dhcp_agent.ini
  • [DEFAULT]部分,配置Linux桥接网卡驱动,Dnsmasq DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络访问元数据:
    • [DEFAULT]
    • interface_driver = linuxbridge
    • dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
    • enable_isolated_metadata = true

      三、配置元数据代理

  1. 编辑/etc/neutron/metadata_agent.ini文件并完成下面的操作:
    • controller ~# vim /etc/neutron/metadata_agent.ini
  • [DEFAULT]部分,配置访问参数:
    • [DEFAULT]
    • nova_metadata_ip = controller
    • metadata_proxy_shared_secret = 1111

      四、配置计算使用网络

  1. 编辑/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

      五、完成安装

  1. 对网络选项2,同样也启用并启动layer-3服务:
    • controller ~# systemctl enable neutron-l3-agent.service
    • controller ~# systemctl start neutron-l3-agent.service
  • 如下操作在计算节点compute进行

    六、安装组件

  1. 安装组件

    • compute ~# yum -y install openstack-neutron-linuxbridge ebtables ipset

      七、配置通用组件

  2. 编辑/etc/neutron/neutron.conf 文件并完成如下动作:

    • compute ~# vim /etc/neutron/neutron.conf
  • [database] 部分,注释所有connection 项,因为计算节点不直接访问数据库。
  • 在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:
    • [DEFAULT]
    • transport_url = rabbit://openstack:1111@controller
  • 在 “[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] 部分,配置锁路径:
    • [oslo_concurrency]
    • lock_path = /var/lib/neutron/tmp

      八、配置网络选项

  • Linux桥接代理为实例创建包括私有网络的VXLAN隧道和处理安全组的layer-2(桥接/交换)虚拟网络设施。
  • compute ~# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
    1. 编辑/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

    九、配置计算使用网络

    1. 编辑/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
  • password = 1111

    十、完成安装

    1. 重启计算服务:
  • compute ~# systemctl restart openstack-nova-compute.service
    1. 启动Linux桥接代理并配置它开机自启动:
  • compute ~# systemctl enable neutron-linuxbridge-agent.service
  • compute ~# systemctl start neutron-linuxbridge-agent.service
    • 启动服务报错
  • image.png
  • image.png
  • 解决办法:
  • compute ~# setenforce 0
  • compute ~# vim /etc/selinux/config
  • 将SELINUX=enforcing改为SELINUX=disabled

    十一、验证操作

    • 如下操作在控制节点controller进行
    1. 获得 admin 凭证来获取只有管理员能执行命令的访问权限:
  • controller ~# . admin-openrc
    1. 列出加载的扩展,对neutron-server进程是否启动正常进行验证:
  • controller ~# openstack extension list —network
    1. 列出代理以验证启动 neutron 代理是否成功:
  • controller ~# openstack network agent list