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

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

 

  

  

  

  

posted @ 2020-01-14 11:07  一叶知秋~~  阅读(803)  评论(0编辑  收藏  举报