2.6网络服务
2.6.1neutron的概况
网络服务提供网络,子网以及路由这些对象的抽象概念。每个抽象概念都有自己的功能,可以模拟对应的物理设备:网络包括子网,路由在不同的子网和网络之间进行路由转发。
对于任意一个给定的网络都必须包含至少一个外部网络。不想其他的网络那样,外部网络不仅仅是一个定义的虚拟网络。相反,它代表了一种openstack安装之外的能从物理的,外部访问的试图。外部网络上的IP地址可供外部网络上的任意的物理设备访问,外部网络之外,任何networking设置拥有一个或多个内部网络。这些软件定义的网络直接连接到虚拟机。仅仅在给定网络上的虚拟机,或那些在通过接口连接到相近路由的子网上的虚拟机,能直接访问连接到那个网络上的虚拟机。
如果外部网络想要访问实例或者相反实例想要访问外部网络,那么网络之间的路由就是必要的了。每一个路由都配有一个网关用于连接到外部网络,以及一个或多个连接到内部网络的接口。就像一个物理路由一样,子网可以访问同一个路由上其他子网中的机器,并且机器也可以访问的网关访问外部网络。
另外,可以讲外部网络的IP地址分配给内部网络的端口,不符按什么时候一旦有链接到子网,那个链接被称作端口,你可以给实例的端口分配外部网络的IP地址。通过这种方式,外部网络上的实体可以访问实例。
网络服务统一支持安全组。安全组允许管理员在安全组中定义防火墙规则,一个实例了一属于一个或多个安全组,网络为这个实例配置这些安全组中的规则,阻止或者开启端口,端口范围或者通信类型。
每一个networking使用的插件都有其自有的概念。虽然对操作vni和openstack环境至关重要的,所有的networking安装使用了一个核心插件和一个安全组插件(或仅是空操作安全组插件)。另外,防火墙即服务(FWaas)和负载均衡即服务(LBaas)插件是可用的。
Openstack networking
网络:实际的物理环境下,我们使用交换机或者集线器把多个计算机连接起来形成了网络。在neutron的世界里,网络也是将多个不同的云主机连接起来。
子网:在实际的物理环境下,在一个网络中。我们可以将网络划分成多个逻辑子网。在neutron的世界里,子网也是隶属于网络下的。
端口:是实际的物理环境下,每个子网或者每个网络,都有很多的端口,比如交换机端口来供计算机连接。在neutron的世界里端口也隶属子网下,云主机的网卡会对应到一个端口上。
路由器:在实际的网络环境下,不同网络或者不同逻辑子网之间如果需要进行通信,需要通过路由器进行路由。在neutron的实际物理路由也是这个作用。用来连接不同的网络或者子网。
2.6.2控制节点上neutron的配置与安装
a数据库的创建并授权
create databaseneutron;
grant all onneutron.* to ‘neutron‘@‘localhost‘ identified by ‘neutron‘;
grant all onneutron.* to ‘neutron‘@‘%‘ identified by ‘neutron‘;
b创建服务证书
获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
sourceadmin-openstack
创建``neutron``用户:
openstack usercreate --domain default --password-prompt neutron
添加``admin`` 角色到``neutron`` 用户:
openstack role add--project service --user neutron admin
c创建``neutron``服务实体
openstack servicecreate --name neutron \
--description"OpenStack Networking" network
d创建网络服务API端点
openstack endpointcreate --region RegionOne \
network publichttp://192.168.56.11:9696
openstack endpointcreate --region RegionOne \
network internalhttp://192.168.56.11:9696
openstack endpointcreate --region RegionOne \
network adminhttp://192.168.56.11:9696
e软件包的安装
yum install -yopenstack-neutron openstack-neutron-ml2 \
openstack-neutron-linuxbridgeebtables
f编辑``/etc/neutron/neutron.conf``
[database]#配置数据库访问
connection =mysql+pymysql://neutron:[email protected]/neutron
[DEFAULT]#启用ML2插件并禁用其他插件
core_plugin = ml2
service_plugins =
transport_url =rabbit://openstack:[email protected] #配置rabbitMQ消息队列访问权限
auth_strategy =keystone
notify_nova_on_port_status_changes= True
notify_nova_on_port_data_changes= True
[keystone_authtoken]#配置认证服务访问
auth_uri =http://192.168.56.11:5000
auth_url =http://192.168.56.11:35357
memcached_servers =192.168.56.11:11211
auth_type =password
project_domain_name= default
user_domain_name =default
project_name =service
username = neutron
password = neutron
[nova] #配置网络服务来通知计算节点的网络拓扑变化
auth_url =http://192.168.56.11:35357
auth_type =password
project_domain_id =default
user_domain_id =default
region_name =RegionOne
project_name =service
username = nova
password = nova
[oslo_concurrency]配置锁路径
lock_path =/var/lib/neutron/tmp
配置 Modular Layer 2 (ML2) 插件
g编辑``/etc/neutron/plugins/ml2/ml2_conf.ini``
[ml2]
type_drivers=flat,vlan,gre,vxlan,geneve #启用flat和VLAN网络
tenant_network_types= flat,vlan,gre,vxlan,geneve #禁用私有网络
mechanism_drivers=linuxbridge #启用Linuxbridge机制
extension_drivers =port_security #启用端口安装扩展驱动
[ml2_type_flat]
flat_networks =public #配置公共虚拟网络为public网络
[securitygroup]
enable_ipset = True#启用IPset增肌安全组的方便性
配置Linuxbridge代理
h编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``
[linux_bridge]#将公共虚拟网络和公共物理网络接口对应起来
physical_interface_mappings= public:eth0
[vxlan]#禁止vxlan覆盖网络
enable_vxlan =False
[securitygroup]#启用安全组并配置Linux桥接iptables防火墙驱动
enable_security_group= True
firewall_driver =neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置DHCP代理
i编辑``/etc/neutron/dhcp_agent.ini``
[DEFAULT]#配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络访问元数据
interface_driver =neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver =neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata= True
配置metadata元数据
元数据代理提供配置信息,如凭据实例。
j编辑``/etc/neutron/metadata_agent.ini``
[DEFAULT]#配置元数据主机以及共享密码
nova_metadata_ip =192.168.56.11
metadata_proxy_shared_secret= chunchun
配置计算服务来使用网络服务
k编辑``/etc/nova/nova.conf``
[neutron]#配置访问参数,启用元数据代理并设置密码
url =http://192.168.56.11:9696
auth_url =http://192.168.56.11:35357
auth_type =password
project_domain_name= default
user_domain_name =default
region_name =RegionOne
project_name =service
username = neutron
password = neutron
service_metadata_proxy= True
metadata_proxy_shared_secret= chunchun
网络服务初始化脚本需要一个超链接 /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
l同步数据库
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
验证数据库同步成功
mysql -h192.168.56.11 -uneutron -pneutron \
-e "useneutron;show tables;"|wc -l
163
m重新启动控制节点Nova API服务
systemctl restartopenstack-nova-api.service
n启动网络服务并将其配置为系统启动时启动
systemctl enableneutron-server.service \
neutron-linuxbridge-agent.serviceneutron-dhcp-agent.service \
neutron-metadata-agent.service
systemctl startneutron-server.service \
neutron-linuxbridge-agent.serviceneutron-dhcp-agent.service \
neutron-metadata-agent.service
2.6.3计算节点上neutron的配置与安装
a软件包的安装
yum install -yopenstack-neutron-linuxbridge ebtables ipset
b编辑``/etc/neutron/neutron.conf``文件
[DEFAULT]
transport_url =rabbit://openstack:[email protected] #配置``RabbitMQ``消息队列访问权限
auth_strategy =keystone
[keystone_authtoken]#配置认证服务访问
auth_uri =http://192.168.56.11:5000
auth_url =http://192.168.56.11:35357
memcached_servers =192.168.56.11:11211
auth_type =password
project_domain_name= default
user_domain_name =default
project_name =service
username = neutron
password = neutron
[oslo_concurrency]配置锁路径
lock_path =/var/lib/neutron/tmp
配置Linux桥接代理
c编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件
[linux_bridge]#将公共虚拟网络和公共物理网络接口对应起来
physical_interface_mappings= public:eth0
[vxlan]#禁止Vxlan覆盖网络
enable_vxlan =false
[securitygroup] #启用安全组并配置Linux桥接iptables防火墙驱动
enable_security_group= True
firewall_driver =neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置计算节点使用网络
d编辑``/etc/nova/nova.conf``文件
在[neutron]部分,配置访问
[neutron]
url =http://192.168.56.11:9696
auth_url =http://192.168.56.11:35357
auth_type =password
project_domain_id =default
user_domain_id =default
region_name =RegionOne
project_name =service
username = neutron
password = neutron
e重启计算节点nova-compute服务
systemctl restartopenstack-nova-compute
f启动Linux桥接代理,包括它的依赖和配置并在系统启动时启动
systemctl enableneutron-linuxbridge-agent.service
systemctl startneutron-linuxbridge-agent.service
验证:
获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
sourceadmin-openstack
列出加载的扩展来验证``neutron-server``进程是否正常启动:
neutron agent-list
+-----------------------------+--------------------+-------------------------+-------------------+-------+----------------+---------------------------+
| id | agent_type |host | availability_zone | alive | admin_state_up | binary |
+-----------------------------+--------------------+-------------------------+-------------------+-------+----------------+---------------------------+
|3dfb07a5-d9e2-45ec-b77a- | Metadata agent | linux-node1.example.com | | :-) |True | neutron-metadata-agent |
| 471842f603e8 | || | | | |
| 9e7c94cf-fadd- |Linux bridge agent | linux-node1.example.com | | :-) | True |neutron-linuxbridge-agent |
|4b42-a316-ea1a5bce22de | | | | | | |
|a2ae2f2c-f453-449d-a46a- | DHCP agent | linux-node1.example.com | nova | :-) |True | neutron-dhcp-agent |
| c49edea6f9c5 | || | | | |
|ef8b5e4e-682e-4f57-af5e- | Linux bridge agent | linux-node2.example.com | | :-)| True | neutron-linuxbridge-agent |
| e50e9fa56615 | || | | | |
+-----------------------------+--------------------+-------------------------+-------------------+-------+----------------+---------------------------+