Openstack 安装部署指南翻译系列 之 Neutron服务安装(Networking)

blob.png blob.png

 上面左边是个人我的微信,如需进一步沟通,请加微信。  右边是个人公众号“Openstack私有云”,若有兴趣,请关注。mysql




1.1.1.1. Neutron服务安装Networking

本章介绍如何使用提供商网络或自助服务网络选项安装和配置网络服务(Neutron)。linux

OpenStack NetworkingNeutron)容许您建立并附加由其余OpenStack服务管理的接口设备到网络。能够实现插件以适应不一样的网络设备和软件,为OpenStack架构和部署提供灵活性。sql

1.1.1.1.1. 网络服务概述

 

它包括如下组件:数据库

neutron-serverapi

接受并将API请求路由到相应的OpenStack Networking插件以进行操做。安全

OpenStack网络插件和代理服务器

插拔端口,建立网络或子网,并提供IP寻址。这些插件和代理根据特定云中使用的供应商和技术而有所不一样。OpenStack网络兼容思科虚拟和物理交换机的插件和代理,NEC OpenFlow产品,Open vSwitchLinux桥接器和VMware NSX产品。微信

 

通用代理是L3(第3层),DHCP(动态主机IP寻址)和插件代理。网络

 

消息队列架构

由大多数OpenStack Networking安装使用,用于在Neutron服务器和各类代理之间路由信息。还充当数据库来存储特定插件的网络状态。

 

OpenStack Networking主要与OpenStack Compute进行交互,为其实例提供网络和链接。

1.1.1.1.2. OpenStack 网络(Neutron)概念

OpenStack NetworkingNeutron)管理虚拟网络基础架构(VNI)的全部网络方面以及OpenStack环境中物理网络基础设施(PNI)的接入层方面。OpenStack Networking使项目可以建立高级虚拟网络拓扑,其中可能包括防火墙,负载平衡器和虚拟专用网(***)等服务。

 

网络提供网络,子网和路由器做为对象抽象。每一个抽象都具备模拟其物理对象的功能:网络包含子网,路由器在不一样子网和网络之间路由流量。

 

任何给定的网络设置至少有一个外部网络。与其余网络不一样,外部网络不只仅是一个虚拟定义的网络。相反,它表明了在OpenStack安装以外可访问的物理外部网络的一个视图。外部网络上的IP地址能够由外部网络上的任何人访问。

 

除了外部网络,任何网络设置都有一个或多个内部网络。这些软件定义的网络直接链接到虚拟机。只有任何给定内部网络上的虚拟机,或经过接口链接到相似路由器的子网上的虚拟机才能直接访问链接到该网络的虚拟机。

 

为了外部网络访问虚拟机,反之亦然,须要网络之间的路由器。每一个路由器都有一个链接到外部网络的网关和链接到内部网络的一个或多个接口。像物理路由器同样,子网能够访问链接到同一路由器的其余子网上的机器,机器能够经过路由器的网关访问外部网络。

 

此外,您能够将外部网络上的IP地址分配给内部网络上的端口。一旦链接到子网,该链接都称为端口。你能够分配外部IPVM的端口,这样,外部网络上的实体能够访问虚拟机。

 

网络还支持安全组。安全组使管理员可以以组的形式定义防火墙规则。VM能够属于一个或多个安全组,而且Networking将这些安全组中的规则应用于阻止或取消阻止该VM的端口,端口范围或流量类型。

 

网络使用的每一个插件都有本身的概念。尽管操做VNIOpenStack环境并不重要,但理解这些概念能够帮助您设置网络。全部网络安装使用核心插件和安全组插件(或只是No-Op安全组插件)。此外,还提供了防火墙即服务(FWaaS)和负载均衡器即服务(LBaaS)插件。

1.1.1.1.3. 安装和配置控制器节点
1.1.1.1.3.1. 先决条件

在配置OpenStack Networking(Neutron)服务以前,您必须建立一个数据库,服务凭据和API端点。

 

一、要建立数据库,请完成如下步骤:

使用数据库访问客户端做为root用户链接到数据库服务器:

$ mysql -u root -p

输入admin凭据以访问仅管理CLI命令:

$ . admin-openrc

二、要建立服务凭据,请完成如下步骤:

 

建立neutron用户:

$ openstack user create --domain default --password-prompt neutron

User Password:

Repeat User Password:

admin角色添加到neutron用户:

$ openstack role add --project service --user neutron admin

建立neutron服务实体:

$ openstack service create --name neutron \

  --description "OpenStack Networking" network

三、建立网络服务API端点:

$ 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

1.1.1.1.3.2. 配置网络选项

您可使用由选项1和2表示的两种体系结构之一部署网络服务。

 

选项1部署最简单的可能架构,仅支持将实例附加到提供商(外部)网络。没有自助服务(私人)网络,路由器或浮动IP地址。只有admin或其余特权用户能够管理提供商网络。

 

选项2增长了支持将实例附加到自助服务网络的第3层服务的选项1。该demo或其余非特权用户能够管理自助服务网络,包括在自助服务和提供商网络之间提供链接的路由器。此外,浮动IP地址提供与使用来自外部网络(如Internet)的自助服务网络的实例的链接。

 

自助服务网络一般使用覆盖网络。覆盖网络协议(例如VXLAN)包括额外的头部,能够增长开销并减小可用于有效载荷或用户数据的空间。不知道虚拟网络基础架构,实例尝试使用1500字节的默认以太网最大传输单元(MTU)发送数据包。网络服务经过DHCP自动向实例提供正确的MTU值。可是,某些云图不使用DHCP或忽略DHCP MTU选项,并须要使用元数据或脚本进行配置。

选择如下网络选项之一来配置特定于其的服务。

网络选项1:提供商网络

网络选项2:自助网络

1.1.1.1.3.3. 配置元数据代理

元数据代理向实例提供诸如凭据的配置信息。

 

编辑/etc/neutron/metadata_agent.ini文件并完成如下操做:

 

[DEFAULT]节中,配置元数据主机和共享密钥:

[DEFAULT]

# ...

nova_metadata_host = controller

metadata_proxy_shared_secret = METADATA_SECRET

METADATA_SECRET适当的密码替换元数据代理。

1.1.1.1.3.4. 配置计算服务以使用网络服务

编辑/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 = NEUTRON_PASS

service_metadata_proxy = true

metadata_proxy_shared_secret = METADATA_SECRET

替换NEUTRON_PASS为neutron 身份服务中为用户选择的密码。

替换METADATA_SECRET您为元数据代理选择的密码。

1.1.1.1.3.5. 完成安装

一、网络服务初始化脚本指望/etc/neutron/plugin.ini指向ML2插件配置文件的符号连接 /etc/neutron/plugins/ml2/ml2_conf.ini。若是此符号连接不存在,请使用如下命令建立它:

# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

二、填充数据库:

# 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

 

三、从新启动Compute API服务:

# systemctl restart openstack-nova-api.service

四、启动网络服务并将其配置为在系统启动时启动。

 

对于两种网络选项:

# systemctl enable neutron-server.service \

  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

  neutron-metadata-agent.service

# systemctl start neutron-server.service \

  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

  neutron-metadata-agent.service

 

对于网络选项2,还启用第3层服务:

# systemctl enable neutron-l3-agent.service

# systemctl start neutron-l3-agent.service

1.1.1.1.3.6. 网络选项1:提供商网络

在控制器节点上安装和配置网络组件。

 

1.1.1.1.3.6.1. 安装组件

# yum install openstack-neutron openstack-neutron-ml2 \

  openstack-neutron-linuxbridge ebtables

1.1.1.1.3.6.2. 配置服务器组件

网络服务器组件配置包括数据库,身份验证机制,消息队列,拓扑更改通知和插件。

编辑/etc/neutron/neutron.conf文件并完成如下操做:

 

在该[database]部分中,配置数据库访问:

[database]

# ...

connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron

替换NEUTRON_DBPASS为数据库选择的密码。

 

[DEFAULT]节中,启用模块化第2层(ML2)插件并禁用其余插件:

[DEFAULT]

# ...

core_plugin = ml2

service_plugins =

[DEFAULT]节中,配置RabbitMQ 消息队列访问:

[DEFAULT]

# ...

transport_url = rabbit://openstack:RABBIT_PASS@controller

替换RABBIT_PASS您为openstackRabbitMQ中的账户选择的密码 。

 

[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 = NEUTRON_PASS

替换NEUTRON_PASSneutron 身份服务中为用户选择的密码。

 

[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 = NOVA_PASS

替换NOVA_PASSnova 身份服务中为用户选择的密码。

 

[oslo_concurrency]部分中,配置锁定路径:

[oslo_concurrency]

# ...

lock_path = /var/lib/neutron/tmp

1.1.1.1.3.6.3. 配置模块化二层(ML2)插件

ML2插件使用Linux桥机制为实例构建第2层(桥接和交换)虚拟网络基础架构。

 

编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件并完成如下操做:

 

[ml2]节中,启用平面和VLAN网络:

[ml2]

# ...

type_drivers = flat,vlan

[ml2]节中,禁用自助服务网络:

[ml2]

# ...

tenant_network_types =

[ml2]节中,启用Linux桥机制:

[ml2]

# ...

mechanism_drivers = linuxbridge

警告:配置ML2插件后,删除type_drivers选项中的值 可能会致使数据库不一致。

[ml2]节中,启用端口安全扩展驱动程序:

[ml2]

# ...

extension_drivers = port_security

[ml2_type_flat]部分中,将提供商虚拟网络配置为平面网络:

[ml2_type_flat]

# ...

flat_networks = provider

[securitygroup]节中,启用ipset以提升安全组规则的效率:

[securitygroup]

# ...

enable_ipset = true


1.1.1.1.3.6.4. 配置Linux桥接器代理

Linux桥接器代理为实例构建第2层(桥接和交换)虚拟网络基础架构,并处理安全组。

 

编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并完成如下操做:

 

[linux_bridge]节中,将提供商虚拟网络映射到提供商物理网络接口:

[linux_bridge]

physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME

替换PROVIDER_INTERFACE_NAME为底层提供商物理网络接口的名称。

 

[vxlan]节中,禁用VXLAN覆盖网络:

[vxlan]

enable_vxlan = false

[securitygroup]节中,启用安全组并配置Linuxiptables防火墙驱动程序:

[securitygroup]

# ...

enable_security_group = true

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

1.1.1.1.3.6.5. 配置DHCP代理

DHCP代理为虚拟网络提供DHCP服务。

 

编辑/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.1.1.1.3.7. 网络选项2:自助网络

在控制器节点上安装和配置网络组件。

 

1.1.1.1.3.7.1. 安装组件

# yum install openstack-neutron openstack-neutron-ml2 \

  openstack-neutron-linuxbridge ebtables

1.1.1.1.3.7.2. 配置服务器组件

编辑/etc/neutron/neutron.conf文件并完成如下操做:

 

[database]部分中,配置数据库访问:

[database]

# ...

connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron

替换NEUTRON_DBPASS为数据库选择的密码。

 

[DEFAULT]节中,启用模块化第2层(ML2)插件,路由器服务和重叠的IP地址:

[DEFAULT]

# ...

core_plugin = ml2

service_plugins = router

allow_overlapping_ips = true

[DEFAULT]节中,配置RabbitMQ 消息队列访问:

[DEFAULT]

# ...

transport_url = rabbit://openstack:RABBIT_PASS@controller

替换RABBIT_PASS您为openstackRabbitMQ中的账户选择的密码 。

 

[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 = NEUTRON_PASS

替换NEUTRON_PASSneutron 身份服务中为用户选择的密码。

 

[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 = NOVA_PASS

替换NOVA_PASSnova 身份服务中为用户选择的密码。

 

[oslo_concurrency]部分中,配置锁定路径:

[oslo_concurrency]

# ...

lock_path = /var/lib/neutron/tmp

1.1.1.1.3.7.3. 配置模块化二层(ML2)插件

ML2插件使用Linux桥机制为实例构建第2层(桥接和交换)虚拟网络基础架构。

 

编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件并完成如下操做:

 

[ml2]节中,启用平面,VLANVXLAN网络:

[ml2]

# ...

type_drivers = flat,vlan,vxlan

[ml2]节中,启用VXLAN自助服务网络:

[ml2]

# ...

tenant_network_types = vxlan

[ml2]节中,启用Linux Bridge和第2层人口机制:

[ml2]

# ...

mechanism_drivers = linuxbridge,l2population

警告:配置ML2插件后,删除type_drivers选项中的值 可能会致使数据库不一致。

注意:Linux Bridge代理仅支持VXLAN覆盖网络。

[ml2]节中,启用端口安全扩展驱动程序:

[ml2]

# ...

extension_drivers = port_security

[ml2_type_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.1.1.1.3.7.4. 配置Linux桥接器代理

Linux桥接器代理为实例构建第2层(桥接和交换)虚拟网络基础架构,并处理安全组。

 

编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并完成如下操做:

 

[linux_bridge]节中,将提供商虚拟网络映射到提供商物理网络接口:

[linux_bridge]

physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME

替换PROVIDER_INTERFACE_NAME为底层提供商物理网络接口的名称。

 

[vxlan]节中,启用VXLAN覆盖网络,配置处理覆盖网络的物理网络接口的IP地址,并启用第2层群:

[vxlan]

enable_vxlan = true

local_ip = OVERLAY_INTERFACE_IP_ADDRESS

l2_population = true

替换OVERLAY_INTERFACE_IP_ADDRESS处理覆盖网络的底层物理网络接口的IP地址。示例架构使用管理接口将流量隧道传送到其余节点。所以,替换OVERLAY_INTERFACE_IP_ADDRESS控制器节点的管理IP地址。

 

[securitygroup]节中,启用安全组并配置Linuxiptables防火墙驱动程序:

[securitygroup]

# ...

enable_security_group = true

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

1.1.1.1.3.7.5. 配置第三层代理

第三层(L3)代理为自助虚拟网络提供路由和NAT服务。

 

编辑/etc/neutron/l3_agent.ini文件并完成如下操做:

 

[DEFAULT]节中,配置Linux Bridge接口驱动程序和外部网桥:

[DEFAULT]

# ...

interface_driver = linuxbridge

1.1.1.1.3.7.6. 配置DHCP代理

DHCP代理为虚拟网络提供DHCP服务。

 

编辑/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.1.1.1.4. 安装和配置计算节点

 

计算节点处理实例的链接和安全组。

 

1.1.1.1.4.1. 安装组件

# yum install openstack-neutron-linuxbridge ebtables ipset

1.1.1.1.4.2. 配置公共组件

网络公共组件配置包括身份验证机制,消息队列和插件。

编辑/etc/neutron/neutron.conf文件并完成如下操做:

 

[database]节中,注释掉任何connection选项,由于计算节点不直接访问数据库。

 

[DEFAULT]节中,配置RabbitMQ 消息队列访问:

[DEFAULT]

# ...

transport_url = rabbit://openstack:RABBIT_PASS@controller

替换RABBIT_PASS您为openstack 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 = NEUTRON_PASS

替换NEUTRON_PASSneutron 身份服务中为用户选择的密码。

 

在该[oslo_concurrency]部分中,配置锁定路径:

[oslo_concurrency]

# ...

lock_path = /var/lib/neutron/tmp

1.1.1.1.4.3. 配置网络选项

选择与控制器节点选择的相同的网络选项来配置特定于它的服务。

网络选项1:提供商网络

网络选项2:自助网络

1.1.1.1.4.3.1. 网络选项1:提供商网络

在计算节点上配置网络组件。

 

配置Linux桥接器代理

Linux桥接器代理为实例构建第2层(桥接和交换)虚拟网络基础架构,并处理安全组。

 

编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并完成如下操做:

 

在本[linux_bridge]节中,将提供商虚拟网络映射到提供商物理网络接口:

[linux_bridge]

physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME

替换PROVIDER_INTERFACE_NAME为底层提供商物理网络接口的名称。

 

在本[vxlan]节中,禁用VXLAN覆盖网络:

[vxlan]

enable_vxlan = false

在本[securitygroup]节中,启用安全组并配置Linuxiptables防火墙驱动程序:

[securitygroup]

# ...

enable_security_group = true

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

1.1.1.1.4.3.2. 网络选项2:自助网络

在计算节点上配置网络组件。

 

配置Linux桥接器代理

Linux桥接器代理为实例构建第2层(桥接和交换)虚拟网络基础架构,并处理安全组。

 

编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并完成如下操做:

 

在本[linux_bridge]节中,将提供商虚拟网络映射到提供商物理网络接口:

[linux_bridge]

physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME

替换PROVIDER_INTERFACE_NAME为底层提供商物理网络接口的名称。请参阅主机网络 了解更多信息。

 

在本[vxlan]节中,启用VXLAN覆盖网络,配置处理覆盖网络的物理网络接口的IP地址,并启用第2层群:

[vxlan]

enable_vxlan = true

local_ip = OVERLAY_INTERFACE_IP_ADDRESS

l2_population = true

替换OVERLAY_INTERFACE_IP_ADDRESS处理覆盖网络的底层物理网络接口的IP地址。示例架构使用管理接口将流量隧道传送到其余节点。所以,替换OVERLAY_INTERFACE_IP_ADDRESS计算节点的管理IP地址。

 

在本[securitygroup]节中,启用安全组并配置Linuxiptables防火墙驱动程序:

[securitygroup]

# ...

enable_security_group = true

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

1.1.1.1.4.4. 配置计算服务以使用网络服务

编辑/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 = NEUTRON_PASS

替换NEUTRON_PASSneutron 身份服务中为用户选择的密码。

 

1.1.1.1.4.5. 完成安装

从新启动计算服务:

# systemctl restart openstack-nova-compute.service

启动Linux桥接代理并将其配置为在系统启动时启动:

# systemctl enable neutron-linuxbridge-agent.service

# systemctl start neutron-linuxbridge-agent.service

相关文章
相关标签/搜索