在配置 OpenStack Networking (neutron) 服务之前,您必须创建数据库、服务凭证和 API 端点。
要创建数据库,请完成以下步骤:
使用数据库访问客户端以root
用户身份连接数据库服务器:
$ mysql -u root -p
创建neutron
数据库:
MariaDB [(none)] CREATE DATABASE neutron;
授予对neutron
数据库的适当访问权限,替换 NEUTRON_DBPASS
为合适的密码:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';
退出数据库访问客户端。
来源admin
凭据来访问仅管理员CLI命令:
$ . admin-openrc.sh
要创建服务凭证,请完成以下步骤:
创建neutron
用户:
$ openstack user create --domain default --password-prompt neutron User Password:123456 Repeat User Password:123456 +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | fdb0f541e28141719b6a43c8944bf1fb | | name | neutron | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+
admin
为neutron
用户添加角色:
$ openstack role add --project service --user neutron admin
此命令不提供任何输出。
创建neutron
服务实体:
$ openstack service create --name neutron --description "OpenStack Networking" network +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Networking | | enabled | True | | id | f71529314dab4a4d8eca427e701d209e | | name | neutron | | type | network | +-------------+----------------------------------+
创建网络服务 API 端点:
$ openstack endpoint create --region RegionOne network public http://controller:9696 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 85d80a6d02fc4b7683f611d7fc1493a3 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | f71529314dab4a4d8eca427e701d209e | | service_name | neutron | | service_type | network | | url | http://controller:9696 | +--------------+----------------------------------+ $ openstack endpoint create --region RegionOne network internal http://controller:9696 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 09753b537ac74422a68d2d791cf3714f | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | f71529314dab4a4d8eca427e701d209e | | service_name | neutron | | service_type | network | | url | http://controller:9696 | +--------------+----------------------------------+ $ openstack endpoint create --region RegionOne network admin http://controller:9696 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 1ee14289c9374dffb5db92a5c112fc4e | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | f71529314dab4a4d8eca427e701d209e | | service_name | neutron | | service_type | network | | url | http://controller:9696 | +--------------+----------------------------------+
您可以使用选项 1 和 2 表示的两种架构之一来部署网络服务。
选项 1 部署了最简单的架构,该架构仅支持将实例附加到提供商(外部)网络。没有自助(专用)网络、路由器或浮动 IP 地址。只有该admin
或其他特权用户才能管理提供商网络。
选项 2 使用支持将实例附加到自助服务网络的第 3 层服务扩充了选项 1。该demo
用户或其他非特权用户可以管理自助服务网络,包括在自助服务和提供商网络之间提供连接的路由器。此外,浮动 IP 地址使用来自外部网络(例如 Internet)的自助服务网络提供与实例的连接。
自助服务网络通常使用覆盖网络。VXLAN 等覆盖网络协议包含额外的标头,这些标头会增加开销并减少可用于有效负载或用户数据的空间。在不了解虚拟网络基础架构的情况下,实例尝试使用 1500 字节的默认以太网最大传输单元 (MTU) 发送数据包。网络服务通过 DHCP 自动向实例提供正确的 MTU 值。但是,某些云映像不使用 DHCP 或忽略 DHCP MTU 选项,需要使用元数据或脚本进行配置。
选项 2 还支持将实例附加到提供商网络。
我这里使用网络服务2,扩展性好,方便后续添加别的组件
在控制器节点上安装和配置网络组件。
# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y
编辑/etc/neutron/neutron.conf
文件并完成以下操作:
在该[database]
部分中,配置数据库访问:
[database] # ... connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
替换NEUTRON_DBPASS
为您为数据库选择的密码。123456
注释掉或删除connection
该[database]
部分中的任何其他选项 。
在该[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
为您openstack
在 RabbitMQ 中为帐户选择的密码 。
在[DEFAULT]
和[keystone_authtoken]
部分,配置身份服务访问:
[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 = NEUTRON_PASS
替换NEUTRON_PASS
为您neutron
在身份服务中为用户选择的密码。
注释掉或删除该[keystone_authtoken]
部分中的任何其他选项 。
在[DEFAULT]
和[nova]
部分,配置 Networking 以通知 Compute 网络拓扑更改:
[DEFAULT] # ... notify_nova_on_port_status_changes = true notify_nova_on_port_data_changes = true [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 = NOVA_PASS
替换NOVA_PASS
为您nova
在身份服务中为用户选择的密码。123456
在该[oslo_concurrency]
部分中,配置锁定路径:
[oslo_concurrency] # ... lock_path = /var/lib/neutron/tmp
ML2 插件使用 Linux 桥接机制为实例构建第 2 层(桥接和交换)虚拟网络基础设施。
编辑/etc/neutron/plugins/ml2/ml2_conf.ini
文件并完成以下操作:
在该[ml2]
部分中,启用平面、VLAN 和 VXLAN 网络:
[ml2] # ... type_drivers = flat,vlan,vxlan
在该[ml2]
部分中,启用 VXLAN 自助网络:
[ml2] # ... tenant_network_types = vxlan
在该[ml2]
部分中,启用 Linux 桥接和二层填充机制:
[ml2] # ... mechanism_drivers = linuxbridge,l2population
配置 ML2 插件后,删除type_drivers
选项中的值 可能会导致数据库不一致。
Linux 网桥代理仅支持 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
Linux 桥接代理为实例构建第 2 层(桥接和交换)虚拟网络基础架构并处理安全组。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini
文件并完成以下操作:
在该[linux_bridge]
部分中,将提供者虚拟网络映射到提供者物理网络接口:
[linux_bridge] physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
替换PROVIDER_INTERFACE_NAME
为底层提供者物理网络接口的名称。有关 详细信息,请参阅主机网络。(就是ifconfig中哪个名字我这里是ens33)
在该[vxlan]
部分中,启用VXLAN覆盖网络,配置处理覆盖网络的物理网络接口的IP地址,并启用二层填充:
[vxlan] enable_vxlan = true local_ip = OVERLAY_INTERFACE_IP_ADDRESS l2_population = true
替换OVERLAY_INTERFACE_IP_ADDRESS
为处理覆盖网络的底层物理网络接口的 IP 地址。示例架构使用管理接口将流量隧道传输到其他节点。因此,替换OVERLAY_INTERFACE_IP_ADDRESS
为控制器节点的管理 IP 地址。有关详细信息,请参阅 主机网络。
这里为172.31.7.120
在该[securitygroup]
部分中,启用安全组并配置 Linux 网桥 iptables 防火墙驱动程序:
[securitygroup] # ... enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
通过验证以下所有sysctl
值都设置为1,确保您的 Linux 操作系统内核支持网桥过滤器:
vim /etc/sysctl.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1
modprobe br_netfilter
sysctl -p # 将输出下面信息 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1
第 3 层 (L3) 代理为自助服务虚拟网络提供路由和 NAT 服务。
编辑/etc/neutron/l3_agent.ini
文件并完成以下操作:
在该[DEFAULT]
部分,配置Linux网桥接口驱动:
[DEFAULT] # ... interface_driver = linuxbridge
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
网络选项设置完毕
元数据代理向实例提供配置信息,例如凭据。
编辑/etc/neutron/metadata_agent.ini
文件并完成以下操作:
在该[DEFAULT]
部分中,配置元数据主机和共享密钥:
[DEFAULT] # ... nova_metadata_host = controller metadata_proxy_shared_secret = METADATA_SECRET
替换METADATA_SECRET
为元数据代理的合适秘密。这里为123456
必须安装 Nova 计算服务才能完成此步骤。有关更多详细信息,请参阅文档网站安装指南部分 下的计算安装指南 。
编辑/etc/nova/nova.conf
文件并执行以下操作:
在该[neutron]
部分,配置访问参数,启用元数据代理,并配置secret:
[neutron] # ... auth_url = http://controller:5000 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
为您为元数据代理选择的密码。
有关 完整的选项集,请参阅计算服务配置指南,包括必要时覆盖服务目录端点 URL。
网络服务初始化脚本需要一个/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
由于脚本需要完整的服务器和插件配置文件,因此稍后会为 Networking 填充数据库。
重启计算 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
在控制器节点上执行这些命令。
来源admin
凭据来访问仅管理员CLI命令:
$ . admin-openrc.sh
列出加载的扩展以验证neutron-server
进程是否成功启动 :
$ openstack extension list --network +---------------------------+---------------------------+----------------------------+ | Name | Alias | Description | +---------------------------+---------------------------+----------------------------+ | Default Subnetpools | default-subnetpools | Provides ability to mark | | | | and use a subnetpool as | | | | the default | | Availability Zone | availability_zone | The availability zone | | | | extension. | | Network Availability Zone | network_availability_zone | Availability zone support | | | | for network. | | Port Binding | binding | Expose port bindings of a | | | | virtual port to external | | | | application | | agent | agent | The agent management | | | | extension. | | Subnet Allocation | subnet_allocation | Enables allocation of | | | | subnets from a subnet pool | | DHCP Agent Scheduler | dhcp_agent_scheduler | Schedule networks among | | | | dhcp agents | | Neutron external network | external-net | Adds external network | | | | attribute to network | | | | resource. | | Neutron Service Flavors | flavors | Flavor specification for | | | | Neutron advanced services | | Network MTU | net-mtu | Provides MTU attribute for | | | | a network resource. | | Network IP Availability | network-ip-availability | Provides IP availability | | | | data for each network and | | | | subnet. | | Quota management support | quotas | Expose functions for | | | | quotas management per | | | | tenant | | Provider Network | provider | Expose mapping of virtual | | | | networks to physical | | | | networks | | Multi Provider Network | multi-provider | Expose mapping of virtual | | | | networks to multiple | | | | physical networks | | Address scope | address-scope | Address scopes extension. | | Subnet service types | subnet-service-types | Provides ability to set | | | | the subnet service_types | | | | field | | Resource timestamps | standard-attr-timestamp | Adds created_at and | | | | updated_at fields to all | | | | Neutron resources that | | | | have Neutron standard | | | | attributes. | | Neutron Service Type | service-type | API for retrieving service | | Management | | providers for Neutron | | | | advanced services | | resources: subnet, | | more L2 and L3 resources. | | subnetpool, port, router | | | | Neutron Extra DHCP opts | extra_dhcp_opt | Extra options | | | | configuration for DHCP. | | | | For example PXE boot | | | | options to DHCP clients | | | | can be specified (e.g. | | | | tftp-server, server-ip- | | | | address, bootfile-name) | | Resource revision numbers | standard-attr-revisions | This extension will | | | | display the revision | | | | number of neutron | | | | resources. | | Pagination support | pagination | Extension that indicates | | | | that pagination is | | | | enabled. | | Sorting support | sorting | Extension that indicates | | | | that sorting is enabled. | | security-group | security-group | The security groups | | | | extension. | | RBAC Policies | rbac-policies | Allows creation and | | | | modification of policies | | | | that control tenant access | | | | to resources. | | standard-attr-description | standard-attr-description | Extension to add | | | | descriptions to standard | | | | attributes | | Port Security | port-security | Provides port security | | Allowed Address Pairs | allowed-address-pairs | Provides allowed address | | | | pairs | | project_id field enabled | project-id | Extension that indicates | | | | that project_id field is | | | | enabled. | +---------------------------+---------------------------+----------------------------+
实际输出可能与此示例略有不同。
列出代理以验证中子代理的成功发射:
$ openstack network agent list +--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+ | ID | Agent Type | Host | Availability Zone | Alive | State | Binary | +--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+ | f49a4b81-afd6-4b3d-b923-66c8f0517099 | Metadata agent | controller | None | True | UP | neutron-metadata-agent | | 27eee952-a748-467b-bf71-941e89846a92 | Linux bridge agent | controller | None | True | UP | neutron-linuxbridge-agent | | 08905043-5010-4b87-bba5-aedb1956e27a | Linux bridge agent | compute1 | None | True | UP | neutron-linuxbridge-agent | | 830344ff-dc36-4956-84f4-067af667a0dc | L3 agent | controller | nova | True | UP | neutron-l3-agent | | dd3644c9-1a3a-435a-9282-eb306b4b0391 | DHCP agent | controller | nova | True | UP | neutron-dhcp-agent | +--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
输出应指示控制器节点上的四个代理和每个计算节点上的一个代理。