Openstack之八:部署自服务网络
一、在控制端创建自服务网络
在Openstack部署提供者网络(Openstack之七)的基础上进行部署自服务网络
官方文档:https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/neutron-controller-install-option2.html
1、安装组件
# yum install openstack-neutron openstack-neutron-ml2 \ openstack-neutron-linuxbridge ebtables
2、编辑``/etc/neutron/neutron.conf`` 文件并完成如下操作:
在 [database]
部分,配置数据库访问:
[database] # ... connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
3、在``[DEFAULT]``部分,启用Modular Layer 2 (ML2)插件,路由服务和重叠的IP地址:
[DEFAULT] # ... core_plugin = ml2 service_plugins = router allow_overlapping_ips = true
4、在``[DEFAULT]``部分,配置``RabbitMQ``消息队列访问权限:已经创建过
[DEFAULT] # ... transport_url = rabbit://openstack:RABBIT_PASS@controller
用你在RabbitMQ中为``openstack``选择的密码替换 “RABBIT_PASS”。
5、在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:已经创建过
[DEFAULT] # ... 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 = NEUTRON_PASS
6、在``[DEFAULT]``和``[nova]``部分,配置网络服务来通知计算节点的网络拓扑变化:已添加
[DEFAULT] # ... notify_nova_on_port_status_changes = true notify_nova_on_port_data_changes = true [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 = NOVA_PASS
使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``。
7、在 [oslo_concurrency]
部分,配置锁路径:
[oslo_concurrency] # ... lock_path = /var/lib/neutron/tmp
配置 Modular Layer 2 (ML2) 插件
ML2插件使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施
编辑``/etc/neutron/plugins/ml2/ml2_conf.ini``文件并完成以下操作:
1、在``[ml2]``部分,启用flat,VLAN以及VXLAN网络:
[ml2] # ... type_drivers = flat,vlan,vxlan
2、在``[ml2]``部分,启用VXLAN私有网络:
[ml2] # ... tenant_network_types = vxlan
3、在``[ml2]``部分,启用Linuxbridge和l2机制,(l2population机制是为了简化网络通信拓扑,减少网络广播):
[ml2] # ... mechanism_drivers = linuxbridge,l2population
在``[ml2]`` 部分,启用端口安全扩展驱动:
[ml2] # ... extension_drivers = port_security
在``[ml2_type_flat]``部分,配置公共虚拟网络为flat网络:
[ml2_type_flat] # ... flat_networks = provider
在``[ml2_type_vxlan]``部分,为私有网络配置VXLAN网络识别的网络范围:
[ml2_type_vxlan] # ... vni_ranges = 1:10000
在 ``[securitygroup]``部分,启用 ipset 增加安全组的方便性:
[securitygroup] # ... enable_ipset = true
配置Linuxbridge代理
Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:
1、在``[linux_bridge]``部分,将公共虚拟网络和公共物理网络接口对应起来:
[linux_bridge] physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
将``PUBLIC_INTERFACE_NAME`` 替换为底层的物理公共网络接口。
2、在``[vxlan]``部分,启用VXLAN覆盖网络,配置覆盖网络的物理网络接口的IP地址,启用layer-2 population:
[vxlan] enable_vxlan = true local_ip = 192.168.7.100 #控制端的宿主机IP地址 l2_population = true
将``OVERLAY_INTERFACE_IP_ADDRESS`` 替换为处理覆盖网络的底层物理网络接口的IP地址。这个示例架构中使用管理网络接口与其他节点建立流量隧道。因此,将``OVERLAY_INTERFACE_IP_ADDRESS``替换为计算节点的管理网络的IP地址。
3、在 ``[securitygroup]``部分,启用安全组并配置 Linux 桥接 iptables 防火墙驱动:
[securitygroup] # ... enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置layer-3代理
The Layer-3 (L3) agent provides routing and NAT services for self-service virtual networks.
编辑``/etc/neutron/l3_agent.ini``文件并完成以下操作:
在``[DEFAULT]``部分,配置Linuxbridge接口驱动和外部网络网桥:
[DEFAULT] # ... interface_driver = linuxbridge
配置DHCP代理
The DHCP agent provides DHCP services for virtual networks.
编辑``/etc/neutron/dhcp_agent.ini``文件并完成下面的操作:
在``[DEFAULT]``部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
[DEFAULT] # ... interface_driver = linuxbridge dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true
重新启动neutron服务
# systemctl start neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service
对于自服务网络项,同样启用layer-3服务并设置其随系统自启动
# systemctl enable neutron-l3-agent.service # systemctl start neutron-l3-agent.service
测试验证结果
# neutron agent-list
如果能查到此时有l3-agent的网络,说明控制端已经配置完成。
二、在计算节点安装和配置计算节点
官方文档:https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/neutron-compute-install-option2.html
1、安装组件
# yum install openstack-neutron-linuxbridge ebtables ipset
2、配置Linuxbridge代理
Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。
编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:
1、在``[linux_bridge]``部分,将公共虚拟网络和公共物理网络接口对应起来:
[linux_bridge] physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
2、在``[vxlan]``部分,启用VXLAN覆盖网络,配置覆盖网络的物理网络接口的IP地址,启用layer-2 population:将原先的enable_vxlan=false删除
[vxlan] enable_vxlan = true local_ip = 192.168.7.106 #地址改为计算节点的IP地址 l2_population = true
3、在 ``[securitygroup]``部分,启用安全组并配置 Linux 桥接 iptables 防火墙驱动:
[securitygroup] # ... enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
三、启动一个实例
官方文档:https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/launch-instance-networks-selfservice.html
用admin账号在控制端创建自服务网络
1、在控制节点上,获得 admin
凭证来获取只有管理员能执行的命令的访问权限:
$ . admin-openrc
2、创建网络:
$ openstack network create admin-net #admin-net为网络名称
3、修改配置文件:/etc/neutron/plugins/ml2/ml2_conf.ini
[ml2] tenant_network_types = vxlan [ml2_type_vxlan] vni_ranges = 1:10000
4、在网络上创建一个子网:
$ openstack subnet create --network admin-net \ --dns-nameserver 192.168.1.1 --gateway 192.168.1.1 \ --subnet-range 192.168.0.0/24 admin-sub #admin-sub创建私网
在控制台创建路由器
1、创建路由器
$ openstack router create admin-router
2、给路由器添加一个私网子网的接口:
$ neutron router-interface-add router admin-sub #关联私网
3、给路由器设置公有网络的网关:
$ neutron router-gateway-set admin-router external-net
配置Horzen支持三层网络:
[root@linux-host1 ~]# vim /etc/openstack-dashboard/local_settings OPENSTACK_NEUTRON_NETWORK = { 'enable_router': True, 'enable_quotas': True, 'enable_ipv6': True, 'enable_distributed_router': True, 'enable_ha_router': True, 'enable_lb': True, 'enable_firewall': True, 'enable_vpn': True, 'enable_fip_topology_check': True,
重启httpd服务:
#重启之后,在openstack管理界面使用admin登录会有个浮动IP的选项。
[root@linux-host1 ~]# systemctl restart httpd
在控制端验证操作
在控制节点上,加载 admin
凭证来获取管理员能执行的命令访问权限:
$ . admin-openrc
列出网络命名空间。你应该可以看到一个’ qrouter ‘命名空间和两个’qdhcp ‘ 命名空间
$ ip netns qrouter-89dd2083-a160-4d75-ab3a-14239f01ea0b qdhcp-7c6f9b37-76b4-463e-98d8-27e5686ed083 qdhcp-0e62efcd-8cee-46c7-b163-d8df05c3c5ad
列出路由器上的端口来确定公网网关的IP 地址:
$ neutron router-port-list router +--------------------------------------+------+-------------------+------------------------------------------+ | id | name | mac_address | fixed_ips | +--------------------------------------+------+-------------------+------------------------------------------+ | bff6605d-824c-41f9-b744-21d128fc86e1 | | fa:16:3e:2f:34:9b | {"subnet_id": | | | | | "3482f524-8bff-4871-80d4-5774c2730728", | | | | | "ip_address": "172.16.1.1"} | | d6fe98db-ae01-42b0-a860-37b1661f5950 | | fa:16:3e:e8:c1:41 | {"subnet_id": | | | | | "5cc70da8-4ee7-4565-be53-b9c011fca011", | | | | | "ip_address": "203.0.113.102"} | +--------------------------------------+------+-------------------+------------------------------------------
从控制节点或任意公共物理网络上的节点Ping这个IP地址:
$ ping -c 4 203.0.113.102 PING 203.0.113.102 (203.0.113.102) 56(84) bytes of data. 64 bytes from 203.0.113.102: icmp_req=1 ttl=64 time=0.619 ms 64 bytes from 203.0.113.102: icmp_req=2 ttl=64 time=0.189 ms 64 bytes from 203.0.113.102: icmp_req=3 ttl=64 time=0.165 ms 64 bytes from 203.0.113.102: icmp_req=4 ttl=64 time=0.216 ms --- 203.0.113.102 ping statistics --- rtt min/avg/max/mdev = 0.165/0.297/0.619/0.187 ms
web端验证菜单:
创建两台实例:
定义实例名称:
网络部分选择:
实例状态:
验证网络通信:
用demo账号在控制端创建自服务网络
1、在控制节点上,获得 admin
凭证来获取只有管理员能执行的命令的访问权限:
$ . demo-openrc
2、创建网络:
$ openstack network create demo-net #demo-net为网络名称
3、在网络上创建一个子网:
$ openstack subnet create --network demo-net \ --dns-nameserver 192.168.1.1 --gateway 192.168.1.1 \ --subnet-range 192.168.0.0/24 demo-sub #demo-sub创建私网
在控制台创建路由器
1、创建路由器
$ openstack router create demo-router #demo-router 为路由
2、给路由器添加一个私网子网的接口:
$ neutron router-interface-add router demo-sub #关联私网demo-sub
3、给路由器设置公有网络的网关:
$ neutron router-gateway-set demo-router external-net
重启httpd服务:
#重启之后,在openstack管理界面使用admin登录会有个浮动IP的选项。
[root@linux-host1 ~]# systemctl restart httpd