date: 2021-02-21title: openstack配置私有网络vxlan #标题
tags: vxlan #标签
categories: openstack # 分类

openstack queens部署 文章中,我们配置neutron网络服务时,只是配置了公共网络,也就是二层网络,那么这样呢,在私有云环境中还可以,但公有云环境肯定是采用私有网络vxlan这种方式的,这篇博文就讲述如何基于openstack queens部署这篇文章部署的环境,让网络服务支持三层vxlan网络。

vxlan网络概念

vxlan中有如下几个关键点:

  • VXLAN类似于VLAN技术,解决的是二层通信的问题;
  • VXLAN ID用VNI表示,VNI字段包含24位,因此VXLAN的最大数量为2的24次方,约合16M个
  • VXLAN是一种overlay技术,在云计算环境中体现的逻辑网络,它是基于物理网络之上的网络,在用户看来,物理网络是透明的。
  • VXLAN采用的是隧道技术,只要隧道端到端之间是连通的,隧道两端的网络节点就可以属于同一个二层网络,并可以通信。

配置控制节点neutron服务

注:在进行如下操作前,必需保证你参考openstack queens部署这篇文章,将环境部署了出来,包括创建好了网络。另外,每个节点都需要新增一块网卡,用于各个节点间建立隧道网络。

在进行接下来的操作前,为了方便起见,最好删除所有虚机实例。

  1. # 修改 /etc/neutron/neutron.conf 配置文件
  2. openstack-config --set /etc/neutron/neutron.conf DEFAULT core_plugin ml2
  3. openstack-config --set /etc/neutron/neutron.conf DEFAULT service_plugins router
  4. openstack-config --set /etc/neutron/neutron.conf DEFAULT allow_overlapping_ips true
  5. # 修改 /etc/neutron/plugins/ml2/ml2_conf.ini 配置文件
  6. openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers flat,vlan,vxlan
  7. openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types vxlan
  8. openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers linuxbridge,l2population
  9. # VXLAN ID用VNI表示,VNI字段包含24位,因此VXLAN的最大数量为2的24次方,约合1600多万个
  10. openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_vxlan vni_ranges 1:100000
  11. # 修改 /etc/neutron/plugins/ml2/linuxbridge_agent.ini 配置文件
  12. openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan true
  13. # 172.16.20.2是新增网卡的IP地址
  14. openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan local_ip 172.16.20.2
  15. openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan l2_population true
  16. # 配置三层代理,修改 /etc/neutron/l3_agent.ini 配置文件
  17. openstack-config --set /etc/neutron/l3_agent.ini DEFAULT interface_driver linuxbridge
  18. # 重启服务
  19. $ systemctl restart neutron-server \
  20. neutron-linuxbridge-agent neutron-dhcp-agent \
  21. neutron-metadata-agent
  22. # 启动l3代理并加入开机自启
  23. $ systemctl enable neutron-l3-agent && systemctl start neutron-l3-agent

配置计算节点neutron服务

相比较控制节点,计算节点要做的修改就很少了。如下操作需要在所有计算节点执行。

  1. openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan true
  2. # 请将下面 local_ip 的值换为每个计算节点的实际IP
  3. openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan local_ip 172.16.20.3
  4. openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan l2_population true
  5. # 重启服务
  6. $ systemctl restart neutron-linuxbridge-agent

修改dashboard配置以便开启三层路由

  1. $ vim /etc/openstack-dashboard/local_settings
  2. # 将
  3. OPENSTACK_NEUTRON_NETWORK = {
  4. 'enable_router': False,
  5. ...
  6. # 改为
  7. OPENSTACK_NEUTRON_NETWORK = {
  8. 'enable_router': True,
  9. ...
  10. # 重启dashboard
  11. $ systemctl restart httpd

dashboard测试vxlan网络

配置外部网络

这里将openstack queens部署 文章中创建的网络改为外部网络,如下:

openstack配置私有网络vxlan - 图1

openstack配置私有网络vxlan - 图2

创建路由

openstack配置私有网络vxlan - 图3

创建网络

openstack配置私有网络vxlan - 图4

openstack配置私有网络vxlan - 图5

openstack配置私有网络vxlan - 图6

关联外部网络

将上面创建的内部网络,关联到外部网络,以便可以与外网通信。

openstack配置私有网络vxlan - 图7

成功后,即可看到如下网络拓扑:

openstack配置私有网络vxlan - 图8

创建实例进行验证

openstack配置私有网络vxlan - 图9

实例绑定浮动IP

openstack配置私有网络vxlan - 图10

openstack配置私有网络vxlan - 图11

openstack配置私有网络vxlan - 图12

至此,即可通过绑定的浮动IP和此实例通信。

openstack配置私有网络vxlan - 图13

如下:

openstack配置私有网络vxlan - 图14