【N版】openstack——网络服务neutron(六)

一.openstack之neutron网络服务

1.1 neutron介绍

    neutron是openstack重要组件之一,在以前是时候没有neutron项目,早期的时候是没有neutron,早期所使用的网络的nova-network,经过版本改变才有neutron。

OpenStack的网络(Neutron),可以创建和附加其他的OpenStack服务,网络管理接口设备。插件可以被实现,以适应不同的网络设备和软件,提供灵活性,以开栈架构和部署。
OpenStack的网络(Neutron)管理虚拟网络基础架构(VNI),并在您的OpenStack的环境中的物理网络基础架构(PNI)的接入层方面的所有网络方面。开栈网络允许租户创建高级的虚拟网络拓扑可包括服务,例如防火墙,负载均衡器,和虚拟专用网(×××)。

1.1.1Openstack Networking

  • 网络:在实际的物理环境下,我们使用交换机或者集线器把多个计算机连接起来形成了网络。在neutron的世界里,网络也是将多个不同的云主机连起来。

  • 子网:在十几的物理环境下,在一个网络中,我们可以讲网络划分成多位逻辑子网。在neutron世界里,子网也是隶属于网络下的。

  • 端口:是十几的物理环境下,每个子网或者每个网络,都有很多的端口,比如交换机端口来供计算机连接。在neutron的世界里,端口也是隶属于自往下,云主机的网卡会对应到一个端口上。

  • 路由器:在实际的网络罗环境下,不同网络或者不同逻辑子网之间如果需要进行通信,需要通过路由器进行路由。在neutron的世界里实际路由也是这个作用,用来连接不同的网络或者子网。

 

1.2 neutron控制节点配置

1.2.1修改neutron配置文件

[root@linux-node1 ~]# vim /etc/neutron/neutron.conf

722 connection =mysql+pymysql://neutron:neutron@192.168.56.11/neutron

27 auth_strategy = keystone 打开注释

30 core_plugin = ml2

33 service_plugins =

803 auth_uri = http://192.168.56.11:5000

804 auth_url = http://192.168.56.11:35357

805 memcached_servers = 192.168.56.11:11211

806 auth_type = password

807 project_domain_name = default

808 user_domain_name = default

809 project_name = service

810 username = neutron

811 password = neutron

530 transport_url =rabbit://openstack:openstack@192.168.56.11

118 notify_nova_on_port_status_changes = true

122 notify_nova_on_port_data_changes = true

1002 auth_url = http://192.168.56.11:35357

1003 auth_type = password

1004 project_domain_name = default

1005 user_domain_name = default

1006 region_name = RegionOne

1007 project_name = service

1008 username = nova

1009 password = nova

1123 lock_path = /var/lib/neutron/tmp

  • 检查neutron配置文件

[root@linux-node1 ~]# grep '^[a-z]'/etc/neutron/neutron.conf

auth_strategy = keystone

core_plugin = ml2

service_plugins =

notify_nova_on_port_status_changes = true

notify_nova_on_port_data_changes = true

transport_url = rabbit://openstack:openstack@192.168.56.11

connection =mysql+pymysql://neutron:neutron@192.168.56.11/neutron

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

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 = nova

password = nova

lock_path = /var/lib/neutron/tmp

1.2.2配置网络选项

您可以部署网络服务使用选项1和选项2两种架构中的一种来部署网络服务。

选项1:采用尽可能简单的架构进行部署,只支持实例连接到公有网络(外部网络)。没有私有网络(个人网络),路由器以及浮动IP地址。只有``admin``或者其他特权用户才可以管理公有网络

选项2:在选项1的基础上多了layer-3服务,支持实例连接到私有网络。``demo``或者其他没有特权的用户可以管理自己的私有网络,包含连接公网和私网的路由器。另外,浮动IP地址可以让实例使用私有网络连接到外部网络,例如互联网

典型的私有网络一般使用覆盖网络。覆盖网络,例如VXLAN包含了额外的数据头,这些数据头增加了开销,减少了有效内容和用户数据的可用空间。在不了解虚拟网络架构的情况下,实例尝试用以太网最大传输单元 (MTU)1500字节发送数据包。网络服务会自动给实例提供正确的MTU的值通过DHCP的方式。但是,一些云镜像并没有使用DHCP或者忽视了DHCP MTU选项,要求使用元数据或者脚本来进行配置

注:这里我们选提供者的网络,即选项1

1.2.2.1配置 Modular Layer 2 (ML2) 插件

ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施

[root@linux-node1 ~]# vim/etc/neutron/plugins/ml2/ml2_conf.ini

101 [ml2]                           <- 在ml2下修改->

109 type_drivers = flat,vlan,gre,vxlan,geneve        <- 启用flat和VLAN网络->

114 tenant_network_types = flat,vlan,gre,vxlan,geneve    <- 禁用私有网络->

118 mechanism_drivers = linuxbridge             <- 启用linuxbridge->

123 extension_drivers = port_security            <- 启用端口安全扩展 ->

150 [ml2_type_flat]                     <- ml2_type_flat配置 ->

159 flat_networks = public                  <- 配置公共虚拟网络名字 ->

236 enable_ipset = true                    <- 启用ipset->

 

  • 检查ML2配置文件

[root@linux-node1 ~]# grep -n '^[a-z]'/etc/neutron/plugins/ml2/ml2_conf.ini

109:type_drivers = flat,vlan,gre,vxlan,geneve

114:tenant_network_types = flat,vlan,gre,vxlan,geneve

118:mechanism_drivers = linuxbridge

123:extension_drivers = port_security

159:flat_networks = public

236:enable_ipset = true

1.2.2.2配置Linuxbridge代理

[root@linux-node1 ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

132 [linux_bridge]                <- 在linux_bridge下配置->

143 physical_interface_mappings = public:eth0  <- 映射虚拟网络接口和物理接口 ->

168 [vxlan]                   <- 在vxlan下配置->

176 enable_vxlan = false             <- 禁止vxlan覆盖网络->

149 [securitygroup]                <- 在securitygroup下配置->

161 enable_security_group = true          <- 启用安全组 ->

156 firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

     <- 配置linux桥接防火墙驱动 ->

 

  • 检查Linuxbridge配置

[root@linux-node1 ~]# grep '^[a-z]'/etc/neutron/plugins/ml2/linuxbridge_agent.ini

physical_interface_mappings = public:eth0

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

enable_security_group = true

enable_vxlan = false

1.2.2.3配置DHCP代理

[root@linux-node1 ~]# vim /etc/neutron/dhcp_agent.ini

16 interface_driver =neutron.agent.linux.interface.BridgeInterfaceDriver

<- 配置linuxbridge接口驱动->

32 dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq

<- DHCP驱动->

41 enable_isolated_metadata = True

<- 启用隔离元数据 ->

 

  • 检查DHCP代理

[root@linux-node1 ~]# grep '^[a-z]'/etc/neutron/dhcp_agent.ini

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq

enable_isolated_metadata = True

1.2.3配置元数据代理

[root@linux-node1 ~]# vim/etc/neutron/metadata_agent.ini

22 nova_metadata_ip = 192.168.56.11              <- 配置元数据主机 ->

34 metadata_proxy_shared_secret = oldboy           <- 配置共享密码 ->

 

  • 检查元数据代理配置

[root@linux-node1 ~]# grep '^[a-z]'/etc/neutron/metadata_agent.ini

nova_metadata_ip = 192.168.56.11

metadata_proxy_shared_secret = oldboy

1.2.4在nova配置文件里配置nuetron

[root@linux-node1 ~]# vim /etc/nova/nova.conf

6471 [neutron]

6472 url = http://192.168.56.11:9696

6473 auth_url = http://192.168.56.11:35357

6474 auth_type = password

6475 project_domain_name = default

6476 user_domain_name = default

6477 region_name = RegionOne

6478 project_name = service

6479 username = neutron

6480 password = neutron

6481 service_metadata_proxy = True

6482 metadata_proxy_shared_secret = oldboy           <- 上文配置的共享密码 ->

 

注:网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini``指向ML2插件配置文件/etc/neutron/plugins/ml2

[root@linux-node1 ~]# ln -s/etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

1.2.5同步数据库并启动服务

[root@linux-node1~]# 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

[root@linux-node1~]# systemctl restart openstack-nova-api.service

[root@linux-node1~]# systemctl enable neutron-server.service \

neutron-linuxbridge-agent.serviceneutron-dhcp-agent.service \

neutron-metadata-agent.service

 

[root@linux-node1~]# systemctl start neutron-server.service \

neutron-linuxbridge-agent.serviceneutron-dhcp-agent.service \

neutron-metadata-agent.service

 

1.2.6创建实体服务及端点

[root@linux-node1 ~]# openstack service create --nameneutron \

--description "OpenStack Networking" network

[root@linux-node1 ~]# openstack endpoint create --regionRegionOne \

network public http://192.168.56.11:9696

[root@linux-node1 ~]# openstack endpoint create --regionRegionOne \

network internal http://192.168.56.11:9696

[root@linux-node1 ~]# openstack endpoint create --regionRegionOne \

network admin http://192.168.56.11:9696

 

  • 检查服务

[root@linux-node1 ~]# neutron agent-list

wKioL1hlxljwvjXiAABiYqkLFZE941.png-wh_50

如果看见三个笑脸则证明成功

 

1.3 neutron计算节点配置

1.3.1修改neutron配置文件

[root@linux-node2 ~]# vim /etc/neutron/neutron.conf

1106 lock_path = /var/lib/neutron/tmp              <- 锁路径 ->

530 transport_url =rabbit://openstack:openstack@192.168.56.11  <-消息队列->

27 auth_strategy = keystone                   <- 开启keystone认证 ->

802 [keystone_authtoken]                    <- 添加连接keystone配置 ->

803 auth_uri = http://192.168.56.11:5000

804 auth_url = http://192.168.56.11:35357

805 memcached_servers = 192.168.56.11:11211

806 auth_type = password

807 project_domain_name = default

808 user_domain_name = default

809 project_name = service

810 username = neutron

811 password = neutron

 

  • 检查配置文件

[root@linux-node2 ~]# grep '^[a-z]'/etc/neutron/neutron.conf

auth_strategy = keystone

transport_url =rabbit://openstack:openstack@192.168.56.11

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

lock_path = /var/lib/neutron/tmp

1.3.2配置网络选项

1.3.2.1配置 Modular Layer 2 (ML2) 插件

[root@linux-node1~]# scp /etc/neutron/plugins/ml2/linuxbridge_agent.ini192.168.56.12:/etc/neutron/plugins/ml2/    <- 因为计算节点此文件和控制节点相同只需要拷贝即可 ->

1.3.3在nova配置文件里配置neutron

[root@linux-node2~]# vim /etc/nova/nova.conf

6469[neutron]

6470 url= http://192.168.56.11:9696

6471auth_url = http://192.168.56.11:35357

6472auth_type = password

6473project_domain_name = default

6474 user_domain_name= default

6475region_name = RegionOne

6476project_name = service

6477username = neutron

6478password = neutron

1.3.4启动服务

[root@linux-node2~]# systemctl restart openstack-nova-compute.service

[root@linux-node2~]# systemctl enable neutron-linuxbridge-agent.service

[root@linux-node2~]# systemctl start neutron-linuxbridge-agent.service

 

  • 检查服务

[root@linux-node1~]# neutron agent-list

wKioL1hlxx-AHi_sAABfesv6cA4044.png-wh_50

看到4个笑脸则证neutron明服务启动成功

[root@linux-node1~]# nova service-list

wKioL1hlxy6jE9dlAABIfIRJ5qc655.png-wh_50

看到4个up则证明nova服务启动成功