Openstack 网络服务 Neutron介绍和控制节点部署 (十)
Neutron介绍
neutron是openstack重要组件之一,在以前是时候没有neutron项目。
早期的时候是没有neutron,早期所使用的网络的nova-network,经过版本改变才有个neutron。
OpenStack Networking
- 网络:在实际的物理环境下,我们使用交换机或者集线器把多个计算机连接起来形成了网络。在Neutron的世界里,网络也是将多个不同的云主机连接起来。
- 子网:在实际的物理环境下,在一个网络中。我们可以将网络划分成多为逻辑子网。在Neutron的世界里,子网也是隶属于网络下的。
- 端口:在实际的物理环境下,每个子网或者网络,都有很多的端口,比如交换机端口来供计算机连接。在Neutron的世界端口也是隶属于子网下,云主机的网卡会对应到一个端口上。
- 路由器:在实际的网络环境下,不同网络或者不同逻辑子网之间如果需要进行通信,需要通过路由器进行路由。在Neutron的实际里路由也是这个作用。用来连接不同的网络或者子网。
Neutron 架构介绍
Neutron分为控制节点和计算节点。
openstack默认的网络是单一扁平网络(虚拟机跟宿主机在同一个网段)在官方文档上称为提供者网络。
网络介绍
配置网络选项,分公共网络和私有网络
部署网络服务使用公共网络和私有网络两种架构中的一种来部署网络服务。
- 公共网络采用尽可能简单的架构进行部署,只支持实例连接到公有网络(外部网络)。没有私有网络(个人网络),路由器以及浮动IP地址。只有admin或者其他特权用户才可以管理公有网络。
- 私有网络在公共网络的基础上多了layer-3服务,支持实例连接到私有网络。demo或者其他没有特权的用户可以管理自己的私有网络,包含连接公网和私网的路由器。另外,浮动IP地址可以让实例使用私有网络连接到外部网络,例如互联网。典型的私有网络一般使用覆盖网络。覆盖网络,例如VXLAN包含了额外的数据头,这些数据头增加了开销,减少了有效内容和用户数据的可用空间。在不了解虚拟网络架构的情况下,实例尝试用以太网 最大传输单元 (MTU) 1500字节发送数据包。网络服务会自动给实例提供正确的MTU的值通过DHCP的方式。但是,一些云镜像并没有使用DHCP或者忽视了DHCP MTU选项,要求使用元数据或者脚本来进行配置。
本章使用公共网络进行配置,为openstack官方文档option1
一)keystone上注册Neutron服务
1.1创建neutron服务实体
[root@controller ~]# openstack service create --name neutron \ > --description "OpenStack Networking" network +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Networking | | enabled | True | | id | 495368853408499fb644f93c881000aa | | name | neutron | | type | network | +-------------+----------------------------------+
1.2创建neutron网络服务API端点(公有、私有、admin)
[root@controller ~]# openstack endpoint create --region RegionOne \ > network public http://controller:9696 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 8dac39f8dd8a4b47b1205862fccde94d | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | 495368853408499fb644f93c881000aa | | service_name | neutron | | service_type | network | | url | http://controller:9696 | +--------------+----------------------------------+ [root@controller ~]# [root@controller ~]# openstack endpoint create --region RegionOne \ > network internal http://controller:9696 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 275645aee3414c6c8cc116890f503d44 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | 495368853408499fb644f93c881000aa | | service_name | neutron | | service_type | network | | url | http://controller:9696 | +--------------+----------------------------------+ [root@controller ~]# openstack endpoint create --region RegionOne \ > network admin http://controller:9696 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 0912896c151544d3a1c21ac45d7e62d1 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | 495368853408499fb644f93c881000aa | | service_name | neutron | | service_type | network | | url | http://controller:9696 | +--------------+----------------------------------+
1.3 配置neutron.conf配置文件
# vim /etc/neutron/neutron.conf 数据库配置 [database] connection = mysql+pymysql://neutron:redhat@controller/neutron [DEFAULT] core_plugin = ml2 #neutron核心配置,启用ML2插件并禁用其他插件 service_plugins = #neutron核心配置,启用ML2插件并禁用其他插件 transport_url = rabbit://openstack:redhat@controller #rabbitmq(消息队列)配置 auth_strategy = keystone notify_nova_on_port_status_changes = True #配置网络服务来通知计算节点的网络拓扑变化 notify_nova_on_port_data_changes = True 配置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 = redhat [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 = redhat [oslo_concurrency] #配置锁路径 lock_path = /var/lib/neutron/tmp
1.4 配置ml2_conf.ini配置文件
vim /etc/neutron/plugins/ml2/ml2_conf.ini [ml2] type_drivers = flat,vlan #驱动的选择 tenant_network_types = #禁用私有网络(租户的网络类型) mechanism_drivers = linuxbridge #设置使用什么插件来创建网络 extension_drivers = port_security #启动端口安全扩展驱动 [ml2_type_flat] flat_networks = provider #配置公共的网络 [securitygroup] enable_ipset = True #启用 ipset增加安全组规则的高效性
1.5 配置linuxbridge_agent.ini配置文件
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini [linux_bridge] physical_interface_mappings = provider:ens33 #将公共虚拟网络和公共物理网络接口对应起来 [vxlan] #禁止VXLAN覆盖网络 enable_vxlan = False [securitygroup] #启用安全组并配置防火墙驱动 enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
1.5 配置dhcp_agent.ini配置文件
vim /etc/neutron/dhcp_agent.ini [DEFAULT] interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver # 虚拟接口驱动,使用Linuxbridge dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq # dhcp驱动,默认使用Dnsmasq(是一个小的开源项目)来提供dhcp服务 enable_isolated_metadata = true # 刷新路由使用
1.6、配置元数据代理
<Metadata agent>负责提供配置信息,例如:访问实例的凭证
编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:
[root@controller ~]# vim /etc/neutron/metadata_agent.ini [DEFAULT]
nova_metadata_ip = controller # 元数据主机 metadata_proxy_shared_secret = redhat # 共享密钥
1.7、为nova-api配置网络服务
编辑/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 = redhat
1.8、在[neutron]部分,启用元数据代理并设置密码
[neutron]
service_metadata_proxy=true metadata_proxy_shared_secret = redhat # 共享密钥
1.9、网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
[root@controller ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
1.10、同步数据库
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
1.11、重启Nova API 服务
# systemctl restart openstack-nova-api.service
1.12、启动Neutron服务并配置开机自启动
systemctl start neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service
1.13、检查neutron是否安装成功
# neutron agent-list