多租户隔离

使用VLAN或VXLAN技术,可提供多租户在二层网络上的隔离。
Table 1. VLAN与VXLAN的比较
VLAN VXLAN
  • VLAN最多支持4096个VLan ID,即一套环境中最多提供4096个隔离的租户网络,难以满足大规模云计算数据中心的需求
  • 各厂商交换机配置VLAN方式各不相同
  • VXLAN基于客户机房现有的网络拓扑,提供16M个逻辑网络用于多租户隔离
  • VXLAN是基于现有三层网络之上Overlay虚拟出的二层网络,该Overlay虚拟过程可由软件方式实现,也可由支持VXLAN的交换机实现,客户可按需选择
  • 相较于VLAN,VXLAN性能损耗较大,网络延迟也较高

本场景主要介绍VXLAN-VPC网络提供多租户隔离的实践。

搭建多租户隔离VXLAN-VPC网络的基本流程:
  1. 在admin账户下创建两个普通账户,账户A和账户B。
  2. 在admin账户下创建二层公有网络,并加载此二层网络到相应集群。
  3. 在admin账户下创建三层公有网络。
  4. 在admin账户下创建二层管理网络,并加载此二层网络到相应集群。
  5. 在admin账户下创建三层管理网络,用于与物理资源通信,例如,物理机、主存储、镜像服务器等。
  6. 在admin账户下添加云路由镜像。
  7. 在admin账户下创建云路由规格,并共享给账户A和账户B。
  8. 在admin账户下创建VXLAN网络池,加载到相应集群,并共享给账户A和账户B。
  9. 基于云路由规格在账户A和账户B分别创建一个VPC路由器。例如:VPC路由器-A和VPC路由器-B。
  10. 基于VXLAN网络池在账户A和账户B分别创建两个VXLAN网络(虚拟的二层网络),例如:L2-VXLAN-A1和L2-VXLAN-A2、L2-VXLAN-B1和L2-VXLAN-B2。
  11. 使用四个VXLAN网络分别在各自账户创建VPC网路,例如:VPC网络-A1和VPC网络-A2、VPC网络-B1和VPC网络-B2。
  12. 使用四个VPC网络分别在各自账户创建一个云主机,例如:VM-A1、VM-A2、VM-B1和VM-B2。
  13. 验证四台云主机之间的连通性。
  14. 从admin账户共享三层公有网络给账户A和账户B。
  15. 给VM-A1和VM-B1添加路由表。
  16. 验证云主机VM-A1和VM-B1之间的连通性。
Note:
  • VXLAN网络池和VXLAN网络共同提供了VXLAN网络类型的配置;
  • 使用VXLAN网络需先创建VXLAN网络池,VXLAN网络对应了VXLAN网络池里的一个虚拟网络;
  • VXLAN网络池不能用于创建三层网络,只表示VXLAN网络的集合,VXLAN网络可用于创建三层网络。
假定客户环境如下:
  1. 公有网络
    Table 2. 公有网络配置信息
    公有网络 配置信息
    网卡 em01
    VLAN ID 非VLAN
    IP地址段 10.151.10.100~10.151.10.200
    子网掩码 255.0.0.0
    网关 10.0.0.1
  2. 管理网络
    Table 3. 管理网络配置信息
    管理网络 配置信息
    网卡 em02
    VLAN ID 非VLAN
    IP地址段 192.168.28.100~192.168.28.200
    子网掩码 255.255.255.0
    网关 192.168.28.1
    Note:
    • 出于安全和稳定性考虑,建议部署独立的管理网络,并与公有网络隔离。
    • 此管理网络与ZStack私有云中的管理网络为相同概念(即:管理物理机、主存储、镜像服务器的网络),如果已创建可直接复用。
  3. VXLAN网络池
    Table 4. VXLAN网络池配置信息
    VXLAN网络池 配置信息
    Vni范围 20-1200
    VTEP CIDR 192.168.28.1/24
  4. VPC网络-A1
    Table 5. VPC网络-A1配置信息
    VPC网络 配置信息
    网卡 em01
    IP CIDR 192.168.21.0/24
  5. VPC网络-A2
    Table 6. VPC网络-A2配置信息
    VPC网络 配置信息
    网卡 em01
    IP CIDR 192.168.22.0/24
  6. VPC网络-B1
    Table 7. VPC网络-B1配置信息
    VPC网络 配置信息
    网卡 em01
    IP CIDR 192.168.23.0/24
  7. VPC网络-B2
    Table 8. VPC网络-B2配置信息
    VPC网络 配置信息
    网卡 em01
    IP CIDR 192.168.24.0/24

以下介绍搭建VXLAN-VPC网络的实践步骤。

  1. 在admin账户下创建两个普通账户,账户A和账户B。
    ZStack私有云界面,点击平台管理 > 用户管理 > 账户按钮,在账户页面点击创建账户按钮,在创建账户窗口,可参考以下示例输入相应内容:
    • 名称:设置账户名称,不区分大小写,例如:账户A
    • 简介:可选项,可留空不填
    • 新密码:设置登录该账户的密码
    • 确认密码:重复输入密码,避免误输
    Figure 1所示,点击确定按钮,完成账户A创建。
    Figure 1. 创建账户


    同理,创建账户B,创建完成后如Figure 2所示:
    Figure 2. 账户创建完成


  2. 在admin账户下创建二层公有网络,并加载此二层网络到相应集群。
    ZStack私有云界面,点击网络资源 > 二层网络资源 > 二层网络,进入二层网络界面,点击创建二层网路,在弹出的创建二层网络界面,参考上述Table 2填写如下:
    • 名称:设置L2-公有网络名称
    • 简介:可选项,可留空不填
    • 类型:选择L2NoVlanNetwork
    • 网卡:em01
    • 集群:选择集群,如Cluster-1
    Figure 3所示,点击确定,创建L2-公有网络。
    Figure 3. 创建L2-公有网络


  3. 在admin账户下创建三层公有网络。
    ZStack私有云界面,点击网络资源 > 三层网络 > 公有网络,进入公有网络界面,点击创建公有网络,在弹出的创建公有网络界面,参考上述Table 2填写如下:
    • 名称:设置L3-公有网络名称
    • 简介:可选项,可留空不填
    • 二层网络:选择已创建的L2-公有网络
    • DHCP服务:选择是否需要DHCP服务
    • 添加网络段:选择IPv4类型网络地址、IP范围方式
      Note: ZStack支持IPv4、IPv6类型网络地址;可通过IP范围或CIDR方式添加网络段。本教程以IPv4类型网络地址、IP范围方式为例。
    • 起始IP10.108.12.0
    • 结束IP10.108.13.255
    • 子网掩码255.0.0.0
    • 网关10.0.0.1
    • DNS:可选项,可留空不填,也可设置,如114.114.114.114
    Figure 4所示,点击确定,创建L3-公有网络。
    Figure 4. 创建L3-公有网络


  4. 在admin账户下创建二层管理网络,并加载此二层网络到相应集群。
    ZStack私有云界面,点击网络资源 > 二层网络资源 > 二层网络,进入二层网络界面,点击创建二层网路,在弹出的创建二层网络界面,参考上述Table 3填写如下:
    • 名称:设置L2-管理网络名称
    • 简介:可选项,可留空不填
    • 类型:选择L2NoVlanNetwork
    • 网卡:em02
    • 集群:选择集群,如Cluster-1
    Figure 5所示,点击确定,创建L2-管理网络。
    Figure 5. 创建L2-管理网络


  5. 在admin账户下创建三层管理网络,用于与物理资源通信,例如,物理机、主存储、镜像服务器等。
    ZStack私有云界面,点击网络资源 > 三层网络 > 系统网络,进入系统网络界面,点击创建系统网络,在弹出的创建系统网络界面,参考上述Table 3填写如下:
    • 名称:设置L3-管理网络名称
    • 简介:可选项,可留空不填
    • 二层网络:选择已创建的L2-管理网络
    • DHCP服务:选择是否需要DHCP服务
    • 添加网络段:选择IP范围
    • 起始IP192.168.28.100
    • 结束IP192.168.28.200
    • 子网掩码255.255.255.0
    • 网关192.168.28.1
    • DNS:可选项,可留空不填,也可设置,如114.114.114.114
    Figure 6所示,点击确定,创建L3-管理网络。
    Figure 6. 创建L3-管理网络


  6. 在admin账户下添加云路由镜像。
    ZStack私有云主菜单,点击 网络资源 > 路由资源 > 云路由镜像,进入云路由镜像界面,点击添加云路由镜像,在弹出的添加云路由镜像界面,可参考以下示例输入相应内容:
    • 名称:设置云路由镜像名称
    • 简介:可选项,可留空不填
    • 镜像服务器:选择待存放云路由镜像的镜像服务器,如BS-1
    • 镜像路径:支持添加URL路径或本地文件上传两种方式
      1. URL:输入云路由镜像的可下载路径
        Note:
        ZStack提供专用的云路由镜像供用户使用,可在ZStack官网下载最新的云路由镜像。
        • 文件名称:zstack-vrouter-3.1.1.qcow2
        • 下载地址:点击这里查看
      2. 本地文件:选择当前浏览器可访问的云路由镜像直接上传
        Note:
        • 支持上传到镜像仓库和Ceph镜像服务器;
        • 采用本地浏览器作为中转上传镜像,请勿刷新或关闭当前浏览器,也不可停止管理节点服务,否则会添加失败。
  7. 在admin账户下创建云路由规格,并共享给账户a和账户b。
    1. 在admin账户下创建云路由规格。
      ZStack私有云主菜单,点击 网络资源 > 路由资源 > 云路由规格,进入云路由规格界面,点击创建云路由规格,在弹出的创建云路由规格界面,可参考以下示例输入相应内容:
      • 名称:设置云路由规格名称
      • 简介:可选项,可留空不填
      • CPU:设置CPU个数,生产环境中建议个数设置为8以上
      • 内存:设置内存大小,单位包括:M、G、T,生产环境中建议设置为8G以上
      • 镜像:选择已添加的云路由镜像
      • 管理网络:从网络列表中选择已创建的L3-管理网络
      • 公有网络:从网络列表中选择已创建的L3-公有网络
      Figure 7所示,点击确定,创建云路由规格。
      Figure 7. 创建云路由规格


    2. 将云路由规格共享给账户A和账户B。
      ZStack私有云主菜单,点击网络资源 > 路由资源 > 云路由规格按钮,在云路由规格页面点击云路由规格名称,点击共享 > 操作 > 共享按钮,选择账户A和账户B,点击确定完成共享。如Figure 8所示:
      Figure 8. 共享云路由规格


  8. 在admin账户下创建VXLAN网络池,加载到相应集群,并共享给账户A和账户B。
    1. 在admin账户下创建VXLAN网络池。
      ZStack私有云界面,点击网络资源 > 二层网络资源 > VXLAN Pool,进入VXLAN Pool界面,点击创建VXLAN Pool,在弹出的创建VXLAN Pool界面,参考上述Table 4填写如下:
      • 名称:设置VXLAN网络池名称
      • 简介:可选项,可留空不填
      • 起始Vni:可从1-16777214之间选择一个数字作为起始Vni
      • 结束Vni:可从1-16777214之间选择一个数字作为结束Vni,需大于或等于起始Vni
        Note:
        • VXLAN网络池最大可支持16M(16777216)个虚拟网络;
        • Vni范围支持1-16777214。
      • 集群:可选项,可在创建VXLAN网络池时直接加载相应集群,也可在创建VXLAN网络池后再加载集群。
        Note: 加载的集群内物理机需存在VTEP IP。
      • VTEP CIDR:设置VTEP相应的CIDR,例如192.168.28.1/24
        Note:
        • 创建VXLAN网络池,加载集群,需设置相应的VTEP(VXLAN隧道端点),VTEP一般对应于集群内物理机的某一网卡IP地址,ZStack设置VTEP是基于相应的CIDR来配置;
        • VXLAN网络池加载到集群时,检查的是VTEP IP,与物理的二层设备无关。
      Figure 9所示,点击确定,创建VXLAN网络池。
      Figure 9. 创建VXLAN网络池


    2. 将VXLAN网络池共享给账户A和账户B。
      ZStack私有云主菜单,点击网络资源 > 二层网络资源 > VXLAN Pool按钮,在VXLAN Pool页面点击VXLAN网络池名称,点击共享 > 操作 > 共享按钮,选择账户A和账户B,点击确定完成共享。如Figure 10所示:
      Figure 10. 共享VXLAN网络池


  9. 基于云路由规格在账户A和账户B分别创建一个VPC路由器。例如:VPC路由器-A和VPC路由器-B。
    ZStack私有云主菜单,点击网络资源 > VPC > VPC路由器,进入VPC路由器界面,点击创建VPC路由器,在弹出的创建VPC路由器界面,可参考以下示例输入相应内容:
    • 名称:设置VPC云路由规格名称,例如:VPC路由器-A
    • 简介:可选项,可留空不填
    • 云路由规格:选择已创建的云路由规格
    • DNS:可选项,用于设置VPC路由器的DNS解析服务,默认指定223.5.5.5
    Figure 11所示,点击确定按钮,完成VPC路由器-A创建。
    Figure 11. 创建VPC路由器-A


    同理,在账户B,创建VPC路由器-B。
  10. 基于VXLAN网络池在账户A和账户B分别创建两个VXLAN网络(虚拟的二层网络),例如:L2-VXLAN-A1和L2-VXLAN-A2、L2-VXLAN-B1和L2-VXLAN-B2。
    ZStack私有云界面,点击网络资源 > 二层网络资源 > 二层网络,进入二层网络界面,点击创建二层网路,在弹出的创建二层网络界面,可参考以下示例输入相应内容:
    • 名称:设置VXLAN网络名称,例如:L2-VXLAN-A1
    • 简介:可选项,可留空不填
    • 类型:选择VxlanNetwork
    • VXLAN网络池:选择已创建的VXLAN网络池
    Figure 12所示,点击确定,创建L2-VXLAN-A1。
    Figure 12. 创建L2-VXLAN-A1


    同理,创建L2-VXLAN-A2、L2-VXLAN-B1和L2-VXLAN-B2。VXLAN网络,创建完成后如Figure 13所示:
    Figure 13. VXLAN网络




  11. 使用四个VXLAN网络分别在各自账户创建VPC网路,例如:VPC网络-A1和VPC网络-A2、VPC网络-B1和VPC网络-B2。
    ZStack私有云界面,点击网络资源 > VPC > VPC网络,进入VPC网络界面,点击创建VPC网络,在弹出的创建VPC网络界面,参考上述Table 5填写如下:
    • 名称:设置VPC网络名称,例如:VPC网络-A1
    • 简介:可选项,可留空不填
    • 二层网络:选择已创建的L2-VXLAN-A1
    • VPC路由器:选择已创建的VPC路由器
    • 关闭DHCP服务:选择是否需要DHCP服务
    • 添加网络段:选择CIDR
    • CIDR192.168.21.0/24
    • DNS:可选项,可留空不填,也可设置,如114.114.114.114
    Figure 14所示,点击确定,创建L3-VXLAN-云路由网络1。
    Figure 14. 创建VPC网络-A1


    同理,创建VPC网络-A2、VPC网络-B1和VPC网络-B2,创建完成后如Figure 15所示:
    Figure 15. VPC网络




  12. 使用四个VPC网络分别在各自账户创建一个云主机,例如:VM-A1、VM-A2、VM-B1和VM-B2。
    参考本教程基本部署章节的使用VPC网络创建云主机,使用四个VPC网络分别在各自账户创建一个云主机,VM-A1、VM-A2、VM-B1和VM-B2。创建的云主机如Figure 16所示:
    Figure 16. 创建云主机




  13. 验证四台云主机之间的连通性。
    1. 登录VM-A1,用ping命令验证网络连通性:
      预期结果:
      • ping baidu.com:可以成功
      • ping VM-A2:可以成功
      • ping VM-B1:会失败(两套VXLAN-VPC环境二层隔离)
      • ping VM-B2:会失败(两套VXLAN-VPC环境二层隔离)
      Note:
      在VM-A1系统中,手动添加其他VM的IP地址到/etc/hosts文件路径下。
      [root@VM-web ~]# vim /etc/hosts
      ...
      192.168.22.156 VM-A2
      192.168.23.177 VM-B1
      192.168.24.193 VM-B2
      ...
      实际结果如Figure 17所示:
      Figure 17. 验证VM-A1网络连通性


    2. 同理,VM-A2的网络连通性和VM-A1相同。
    3. 登录VM-B1,用ping命令验证网络连通性:
      预期结果:
      • ping baidu.com:可以成功
      • ping VM-A1:会失败(两套VXLAN-VPC环境二层隔离)
      • ping VM-A2:会失败(两套VXLAN-VPC环境二层隔离)
      • ping VM-B2:可以成功
      Note:
      在VM-B1系统中,手动添加其他VM的IP地址到/etc/hosts文件路径下。
      [root@VM-web ~]# vim /etc/hosts
      ...
      192.168.21.250 VM-A1
      192.168.22.156 VM-A2
      192.168.24.193 VM-B2
      ...
      实际结果如Figure 18所示:
      Figure 18. 验证VM-B2网络连通性


    4. 同理,VM-B2的网络连通性和VM-B1相同。
  14. 从admin账户共享三层公有网络给账户A和账户B。
    ZStack私有云界面,点击网络资源 > 三层网络 > 公有网络,再公有网络界面点击三层公网名称,点击共享 > 操作 > 共享按钮,勾选账户A和账户B,点击确定按钮完成共享。如Figure 19所示:
    Figure 19. 共享三层公网


  15. 通过配置路由表,可让二层隔离的云主机VM-A1和VM-B1互相访问。
    1. 创建路由表。
      ZStack私有云界面,点击网络资源 > 路由资源 > 路由表,进入路由表界面,点击创建路由表,在弹出的创建路由表界面,可参考以下示例输入相应内容:
      • 名称:设置路由表名称
      • 简介:可选项,可留空不填
      • 路由器:选择VM-A1、VM-B1对应的云路由器
      Figure 20所示:
      Figure 20. 创建路由表


    2. 添加两条自定义路由条目。
      Table 9. 自定义路由条目
      目标网段 下一跳
      自定义路由条目1 VM-A1相应的云路由器的公网IP VM-A1相应的云路由器的公网IP
      自定义路由条目2 VM-B1相应的云路由器的公网IP VM-B1相应的云路由器的公网IP
      路由表界面,点击已创建的路由表,进入路由表详情页,点击路由条目,进入路由条目界面,点击操作 > 添加路由条目,弹出添加路由条目界面,可依次添加上述两条自定义路由条目。如Figure 21所示:
      Figure 21. 添加路由表条目


  16. 验证云主机VM-A1和VM-B1之间的连通性。
    预期结果:
    • 登录VM-A1,ping VM-B1:可以成功
    • 登录VM-B1,ping VM-A2:可以成功
    实际结果如Figure 22所示:
    Figure 22. VM-A1和VM-B1互ping




至此,VPC网络多租户隔离部署实践介绍完毕。