Neutron网络
OpenStack Networking(中子)管理OpenStack环境中虚拟网络基础设施(VNI)和物理网络基础设施(PNI)的访问层方面的所有网络方面。OpenStack 网络使项目能够创建高级虚拟网络拓扑,其中可能包括防火墙和虚拟专用网络 (VPN) 等服务。
网络提供网络、子网和路由器作为对象抽象。每个抽象都具有模仿其物理对应项的功能:网络包含子网,路由器在不同的子网和网络之间路由流量。
任何给定的网络设置都至少有一个外部网络。与其他网络不同,外部网络不仅仅是一个虚拟定义的网络。相反,它表示在OpenStack安装之外可访问的物理外部网络切片的视图。外部网络上的任何人都可以访问外部网络上的 IP 地址。
除了外部网络之外,任何网络设置都有一个或多个内部网络。这些软件定义的网络直接连接到 VM。只有任何给定内部网络上的 VM,或者通过接口连接到类似路由器的子网上的 VM,才能直接访问连接到该网络的 VM。
要使外部网络访问 VM,反之亦然,网络之间需要路由器。每个路由器都有一个连接到外部网络的网关和一个或多个连接到内部网络的接口。与物理路由器一样,子网可以访问连接到同一路由器的其他子网上的计算机,并且计算机可以通过路由器的网关访问外部网络。
此外,还可以将外部网络上的 IP 地址分配给内部网络上的端口。每当有东西连接到子网时,该连接称为端口。可以将外部网络 IP 地址与 VM 的端口相关联。这样,外部网络上的实体就可以访问 VM。
网络还支持安全组。安全组使管理员能够在组中定义防火墙规则。VM 可以属于一个或多个安全组,网络应用这些安全组中的规则来阻止或取消阻止该 VM 的端口、端口范围或流量类型。
网络使用的每个插件都有自己的概念。虽然对于操作 VNI 和 OpenStack 环境并不重要,但了解这些概念可以帮助您设置网络。所有网络安装都使用核心插件和安全组插件(或仅使用 No-Op 安全组插件)。
配置网络接口
所有节点执行
将第一个接口配置为管理接口:br0
IP 地址: 172.18.40.1
网络掩码:255.255.255.0(或 /24)
默认网关: 172.18.40.1提供程序接口使用特殊配置,但未为其分配 IP 地址。将第二个接口配置为提供程序接口:
替换为实际的接口名称。例如,eth1 或 ens224。`INTERFACE_NAME
件以包含以下内容:/etc/network/interfaces
# The provider network interface
auto INTERFACE_NAME
iface inet manual
up ip link set dev $IFACE up
down ip link set dev $IFACE down
配置名称解析
编辑文件以包含以下内容:/etc/hosts
安装配置控制节点
在安装和配置OpenStack Networking之前,必须创建数据库、服务凭据和 API 终结点。
~# mysql
创建数据库
MariaDB [(none)] CREATE DATABASE neutron;
- 授权访问placement
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
IDENTIFIED BY ‘neutron123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
IDENTIFIED BY 'neutron123';
获取凭据以获取对仅限管理员的 CLI 命令的访问权限:admin
~# . admin-openrc
要创建服务凭据,请完成以下步骤:
创建用户:neutron
~# openstack user create --domain default --password-prompt neutron
将角色添加到用户: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
网络选项 2:自助服务网络
在控制器节点上安装和配置网络组件。
安装组件
~# apt install neutron-server neutron-plugin-ml2 \
neutron-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent \
neutron-metadata-agent
配置服务器组件
编辑文件并完成以下操作:/etc/neutron/neutron.conf
[database]
# ...
connection = mysql+pymysql://neutron:neutron3@mysql01/neutron
启用模块化第 2 层 (ML2) 插件、路由器服务和重叠的 IP 地址:[DEFAULT]
[DEFAULT]
# ...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
配置消息队列访问:[DEFAULT]``RabbitMQ
[DEFAULT]
# ...
transport_url = rabbit://openstack:admin@123@controller
配置标识服务访问:[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 = neutron123
配置网络以通知计算网络拓扑更改:[DEFAULT]``[nova]
[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 = nova123
配置锁定路径:[oslo_concurrency]
[oslo_concurrency]
# ...
lock_path = /var/lib/neutron/tmp
配置模块化第 2 层 (ML2) 插件
ML2 插件使用 Linux 桥接机制为实例构建第 2 层(桥接和交换)虚拟网络基础结构。
编辑文件并完成以下操作:/etc/neutron/plugins/ml2/ml2_conf.ini
启用平面、VLAN 和 VXLAN 网络:[ml2]
[ml2]
# ...
type_drivers = flat,vlan,vxlan
启用 VXLAN 自助服务网络:[ml2]
[ml2]
# ...
tenant_network_types = vxlan
启用 Linux 桥接和第 2 层填充机制:[ml2]
[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
为自助服务网络配置 VXLAN 网络标识符范围:[ml2_type_vxlan]
[ml2_type_vxlan]
# ...
vni_ranges = 1:1000
启用 ipset 以提高安全组规则的效率:[securitygroup]
[securitygroup]
# ...
enable_ipset = true
配置 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 覆盖网络,配置处理覆盖网络的物理网络接口的 IP 地址,并启用第 2 层填充:[vxlan]
[vxlan]
enable_vxlan = true
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = true
替换为处理覆盖网络的基础物理网络接口的 IP 地址。示例体系结构使用管理接口通过隧道将流量传送到其他节点。因此,请替换为控制器节点的管理 IP 地址。OVERLAY_INTERFACE_IP_ADDRESS 替换成控制节点管理ip
启用安全组并配置 Linux 桥接 iptables 防火墙驱动程序:[securitygroup]
[securitygroup]
# ...
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
通过验证以下所有值是否都设置为:,确保您的 Linux 操作系统内核支持网桥筛选器:sysctl``1
net.bridge.bridge-nf-call-iptables
net.bridge.bridge-nf-call-ip6tables
配置第 3 层代理
第 3 层 (L3) 代理为自助服务虚拟网络提供路由和 NAT 服务。
编辑文件并完成以下操作:/etc/neutron/l3_agent.ini
配置 Linux 桥接接口驱动程序:[DEFAULT]
[DEFAULT]
# ...
interface_driver = linuxbridge
配置 DHCP 代理
DHCP 代理为虚拟网络提供 DHCP 服务。
编辑文件并完成以下操作:/etc/neutron/dhcp_agent.ini
配置 Linux 桥接接口驱动程序 Dnsmasq DHCP 驱动程序,并启用隔离的元数据,以便提供程序网络上的实例可以通过网络访问元数据:[DEFAULT]
[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
将计算服务配置为使用网络服务
编辑文件并执行以下操作:/etc/nova/nova.conf
配置访问参数、启用元数据代理和配置密钥:[neutron]
[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 = neutron123
service_metadata_proxy = true
metadata_proxy_shared_secret = metadata
完成安装
填充数据库:
~# 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 服务:
~# service nova-api restart
1. 重新启动网络服务。
对于这两个网络选项:
```bash
~# service neutron-server restart && systemctl enable neutron-server
~# service neutron-linuxbridge-agent restart && systemctl enable neutron-linuxbridge-agent
~# service neutron-dhcp-agent restart && systemctl enable neutron-dhcp-agent
~# service neutron-metadata-agent restart && systemctl enable neutron-metadata-agent
对于网络选项 2,还要重新启动第 3 层服务:
~# service neutron-l3-agent restart && systemctl enable neutron-l3-agent