Neutron安装
一、网络服务概述
OpenStack Networking(neutron)允许你创建和附加由其他OpenStack服务管理的接口设备到网络。插件可以被实现,以适应不同的网络设备和软件,为OpenStack架构和部署提供了灵活性。
它包括以下组件:
neutron-server
接受并将API请求路由到适当的OpenStack网络插件以进行操作
OpenStack Networking plug-ins and agents
连接端口,创建网络或子网,并提供IP寻址。这些插件和代理根据特定云中使用的厂商和技术的不同而有所不同。OpenStack网络为Cisco虚拟和物理交换机、NEC OpenFlow产品、Open vSwitch、Linux桥接和VMware NSX产品提供插件和代理。
常见代理是L3(第三层)、DHCP(动态主机IP寻址)和插件代理。
Messaging queue
用于大多数OpenStack网络安装,用于在中立服务器和各种代理之间路由信息。也可以作为一个数据库来存储特定插件的网络状态。
OpenStack网络主要与OpenStack计算交互,为其实例提供网络和连接。
Networking(neutron)概念
OpenStack Networking(neutron)管理虚拟网络基础设施(VNI)的所有网络方面,以及OpenStack环境中物理网络基础设施(PNI)的访问层方面。OpenStack网络使项目能够创建高级虚拟网络拓扑,其中可能包括诸如防火墙、负载平衡器和虚拟专用网(VPN)等服务。
网络提供网络、子网和路由器作为对象抽象。每个抽象都有模仿其物理对等物的功能:网络包含子网,路由器在不同子网和网络之间路由通信。
任何给定的网络设置都至少有一个外部网络。与其他网络不同,外部网络不仅仅是一个虚拟的网络。相反,它被视为物理机的一部分,外部网络可以让OpenStack在外部被访问。外部网络上的IP地址可以由任何物理上的外部网络访问。
除了外部网络,任何网络服务都建立有一个或多个内部网络。这些软件定义的网络直接连接到vm。只有在任何给定的内部网络上的vm,或者通过接口连接到类似路由器的子网上的vm,才能直接访问连接到该网络的vm。
为了让外部网络访问vm,于是,网络之间需要路由器。每个路由器有一个连接到外部网络的网关和一个或多个连接到内部网络的接口。就像物理路由器一样,子网可以访问连接到同一路由器的其他子网上的机器,机器可以通过路由器的网关访问外部网络。
另外,您可以将外部网络上的IP地址分配给内部网络上的端口。当某个东西连接到一个子网时,这个连接就称为端口。您可以将外部网络IP地址与端口连接到vm。通过这种方式,外部网络中的实体可以访问vm。
网络也支持安全小组。安全组使管理员能够在组中定义防火墙规则。VM可以属于一个或多个安全组,并且网络应用这些安全组中的规则来阻塞或解除该VM的端口、端口范围或传输类型。
网络使用的每个插件都有自己的概念。虽然对运行VNI和OpenStack环境并不重要,但是理解这些概念可以帮助你设计网络体系。所有的网络安装都使用一个核心插件和一个安全组插件(或者仅仅是一个No-op安全组插件)。另外,防火墙即服务(FWaaS)和负载均衡即服务(LBaaS)插件是可用的。
二、基础配置
Controller节点
1.创建nuetron数据库和授权
# mysql -uroot -p123456
MariaDB [(none)]> create database neutron;
MariaDB [(none)]> grant all privileges on neutron.* to 'neutron'@'localhost' identified by '123456';
MariaDB [(none)]> grant all privileges on neutron.* to 'neutron'@'%' identified by '123456';
MariaDB [(none)]> exit
2.生成环境变量
# . admin-openrc
3.创建服务凭证
1)创建neutron用户
# openstack user create --domain default --password-prompt neutron
2)增加admin角色到neutron用户中:(无返回值)
# openstack role add --project service --user neutron admin
3)创建neutron服务实体
# openstack service create --name neutron --description "OpenStack Networking" network
4)创建网络服务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
三、配置网络选项
您可以选择方案一或二所表示的两个架构之一来部署网络服务:
方案一:部署最简单的架构,只支持将实例附加到提供者(外部)网络。没有自助服务(私有)网络、路由器或浮动IP地址。只有管理员或其他特权用户才能管理提供者网络。
方案二:增强方案一,使用支持附加实例到自助服务网络的layer-3服务。demo或其他非特权用户可以管理自助服务网络,包括提供自助服务和提供者网络之间连接的路由器。此外,浮动IP地址通过Internet等外部网络使用自助服务网络提供对实例的连接。
自助服务网络通常使用overlay网络。像VXLAN这样的overlay网络协议包括增加消息头,增加了开销,减少了有效负载或用户数据可用的空间。在不了解虚拟网络基础设施的情况下,实例试图使用1500字节的默认以太网最大传输单元(MTU)发送数据包。网络服务通过DHCP自动为实例提供正确的MTU值。然而,有些云镜像不使用DHCP或忽略DHCP MTU选项,并需要使用元数据或脚本进行配置。
注:方案二还支持将实例附加到提供者网络。
选择下列网络选项之一来配置特定于它的服务。
Networking Option 1: Provider networks
Networking Option 2: Self-service networks
这里我选择的方案二:
安装配置Controller节点
1.安装组件
# yum install -y openstack-neutron openstack-neutron-ml2 \
openstack-neutron-linuxbridge ebtables
2.配置服务组件
1)编辑/etc/neutron/neutron.conf 文件
在[database]选项配置数据库链接
在[DEFAULT] 选项,启用模块层2 (ML2)插件、路由器服务和重叠IP地址,配置RabbitMQ消息队列访问
在[DEFAULT] 和 [keystone_authtoken] 选项配置身份认证服务访问
在 [DEFAULT] 和 [nova]选项,配置网络以通知计算网络拓扑变化
在[oslo_concurrency] 选项配置lock路径
# vi /etc/neutron/neutron.conf
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
transport_url = rabbit://openstack:123456@controller
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[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 = 123456
[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 = 123456
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
2)配置模块层2 (ML2)插件
ML2插件使用Linux桥接机制为实例构建第2层(桥接和交换)虚拟网络基础结构。
编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件
在[ml2]选项,启用flat、VLAN和VXLAN网络,
启用VXLAN自助服务网络,
启用Linux桥接模式和layer-2填充机制,
启用端口安全扩展驱动程序
注:在配置ML2插件之后,删除type_drivers选项中的值可能导致数据库不一致。
Linux bridge代理只支持VXLAN overlay网络。
在[ml2_type_flat]选项,将提供的虚拟网络配置为一个flat网络
在 [ml2_type_vxlan] 选项,为自助网络配置VXLAN网络标识符范围
在[securitygroup] 选项,启用ipset提高安全组规则的效率
# vi /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge,l2population
extension_drivers = port_security
[ml2_type_flat]
flat_networks = provider
[ml2_type_vxlan]
vni_ranges = 1:1000
[securitygroup]
enable_ipset = true
3) 配置Linux网桥代理
Linux bridge代理为实例构建layer-2(桥接和交换)虚拟网络基础设施,并处理安全组。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件
在[linux_bridge] 选项,启用VXLAN overlay网络,配置处理overlay网络的物理网络接口的IP地址,并启用layer-2填充,
在[securitygroup]选项中,启用安全组并配置Linux bridge iptables防火墙驱动程序,
确保您的Linux操作系统内核支持网络桥接过滤器,通过验证所有以下sysctl值设置为1
注:要启用网络桥接支持,通常需要加载br_netfilter内核模块。
# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = provider:ens33(网卡名)
[vxlan]
enable_vxlan = true
local_ip = 192.168.100.10(OVERLAY_INTERFACE_IP_ADDRESS)
l2_population = true
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
# vi /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
# modprobe br_netfilter(使其生效)
# sysctl –p
用处理覆盖网络的底层物理网络接口的IP地址替换OVERLAY_INTERFACE_IP_ADDRESS。该示例体系结构使用管理接口将流量隧道到其他节点。因此,将OVERLAY_INTERFACE_IP_ADDRESS替换为控制器节点的管理IP地址。
4)配置layer-3代理
layer-3 (L3)代理为自助虚拟网络提供路由和NAT服务。
编辑/etc/neutron/l3_agent.ini 文件
在[DEFAULT]选项,配置Linux桥接接口驱动程序和外部网桥
# vi /etc/neutron/l3_agent.ini
[DEFAULT]
interface_driver = linuxbridge
5)配置DHCP代理
DHCP代理为虚拟网络提供DHCP服务。
编辑/etc/neutron/dhcp_agent.ini文件
在[DEFAULT]选项,配置Linux桥接接口驱动程序,Dnsmasq DHCP驱动程序,并启用隔离的元数据,以便提供者网络上的实例可以通过网络访问元数据:
# vi /etc/neutron/dhcp_agent.ini
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
6)配置元数据代理
元数据代理向实例提供配置信息,比如凭证。
编辑/etc/neutron/metadata_agent.ini文件
在[DEFAULT]选项,配置元数据主机和共享密钥:
# vi /etc/neutron/metadata_agent.ini
[DEFAULT]
nova_medata_host = controller
metadata_proxy_shared_secret = 123456
7)配置计算服务以使用网络服务
注:必须安装Nova计算服务来完成此步骤。
编辑/etc/nova/nova.conf文件
在[neutron]选项,配置访问参数,启用元数据代理,配置secret:
# vi /etc/nova/nova.conf
[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 = 123456
service_metadata_proxy = true
metadata_proxy_shared_secret = 123456
8)网络服务初始化脚本需要一个符号链接/etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/ plugins/ml2/ml2_con.ini
# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
9)同步数据库
# 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
注:由于脚本需要完整的服务器和插件配置文件,所以稍后会出现网络数据库填充。
3.重启计算服务API
# systemctl restart openstack-nova-api.service
4.启动网络服务,并配置它们在系统启动时启动。
# systemctl enable neutron-server.service \
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
neutron-metadata-agent.service
5.对于方案二,还可以启用和启动layer-3服务:
# systemctl enable neutron-l3-agent.service
# systemctl start neutron-l3-agent.service
安装配置Compute节点
1.安装组件
# yum install -y openstack-neutron-linuxbridge ebtables ipset
2.配置组件
1)编辑/etc/neutron/neutron.conf 文件
网络公共组件配置包括身份验证机制、消息队列和插件。
在[database]选项,注释掉任何连接选项,因为计算节点不直接访问数据库。
在[DEFAULT]选项,配置RabbitMQ消息队列访问:
在[DEFAULT]和[keystone_authtoken]选项,配置身份服务访问:
在[oslo_concurrency]选项,配置lock路径
# vi /etc/neutron/neutron.conf
[DEFAULT]
transport_url = rabbit://openstack:123456@controller
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 = 123456
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
2)配置Linux网桥代理
Linux bridge代理为实例构建layer-2层(桥接和交换)虚拟网络基础设施,并处理安全组。
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件
在[linux_bridge]选项,将提供者的虚拟网络映射到提供者的物理网络接口:
在[vxlan]部分,启用vxlan overlay网络,配置处理overlay网络的物理网络接口的IP地址,并启用layer-2填充:
在[securitygroup]选项,启用安全组并配置Linux bridge iptables防火墙驱动程序:
# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = provider:ens33
[vxlan]
enable_vxlan = true
local_ip = 192.168.100.20 (Compute节点的IPAddress)
l2_population = true
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
3)确保您的Linux操作系统内核支持网络桥接过滤器,通过验证所有以下sysctl值设置为1:
编辑/etc/sysctl.conf文件,添加
# vi /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
注:要启用网络桥接支持,通常需要加载br_netfilter内核模块。
4.配置计算服务以使用网络服务
编辑/etc/nova/nova.conf文件
在[neutron]选项,配置访问参数
# vi /etc/nova/nova.conf
[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 = 123456
5.重新启动计算服务
# systemctl restart openstack-nova-compute.service
6.启动Linux bridge代理,并将其配置为在系统启动时启动:
# systemctl enable neutron-linuxbridge-agent.service
# systemctl start neutron-linuxbridge-agent.service
四、验证Neutron操作
# . admin-openrc
# openstack network agent lis
# openstack extension list --network