6.7. 共享文件系统的网络
共享文件系统可通过网络访问。规划云上的网络非常重要,以确保最终用户客户端可以将其共享连接到 Red Hat OpenStack Platform (RHOSP)虚拟机、裸机服务器和容器上运行的工作负载。
根据最终用户所需的安全性和隔离级别,您可以以管理员身份将 driver_handles_share_servers
参数设置为 true 或 false。
如果将 driver_handles_share_servers
参数设置为 true,这可让服务通过隔离共享服务器将共享导出到最终用户定义的共享网络。
当 driver_handles_share_servers
参数等于 true 时,用户可以在自助服务共享网络上调配其工作负载。这样可确保通过专用网络段上完全隔离的 NAS 文件服务器导出其共享。
最终用户使用的共享网络可以与他们可以创建的私有项目网络相同。作为管理员,您必须确保将这些隔离网络映射到您的存储基础架构的物理网络。
您还必须确保所使用的存储系统支持项目网络的网络分段风格。存储系统(如 NetApp ONTAP 和 Dell EMC PowerMax、celly 和 VNX)不支持虚拟覆盖分段风格,如 GENEVE 或 VXLAN。
另外,您还可以在顶级交换机时终止覆盖网络,并为项目网络使用更原语的网络,如 VLAN。另一种方法是允许共享提供商网络上的 VLAN 段,或提供对已经连接到您的存储系统的预先存在的段网络的访问。
如果将 driver_handles_share_servers
参数设置为 false,用户无法在其自己的共享网络上创建共享。相反,它们必须将其客户端连接到云管理员配置的网络。
当 driver_handles_share_servers
参数等于 false 时,director 可以为您创建专用的共享存储网络。例如,当您使用标准 director 模板部署原生 CephFS 后端时,director 会创建一个名为 Storage
的共享提供商网络。当您通过 NFS 后端部署 CephFS 时,共享提供商网络称为 StorageNFS
。您的最终用户必须将其客户端连接到共享存储网络,才能访问其共享。
并非所有共享文件系统存储驱动程序都支持这两种操作模式。无论您选择什么模式,该服务都确保硬数据路径多租户隔离保证。
如果要为租户工作负载提供硬网络路径多租户隔离保证,作为自助服务模型的一部分,您必须使用支持 driver_handles_share_servers
驱动程序模式的后端进行部署。
有关与共享的网络连接的详情,请参考 第 6.7.1 节 “确保与共享的网络连接”。
6.7.1. 确保与共享的网络连接 复制链接链接已复制到粘贴板!
需要连接到文件共享的客户端必须具有该共享的一个或多个导出位置的网络连接。
可以通过多种方式使用共享文件系统服务配置网络,包括使用网络插件。
当共享类型的 driver_handles_share_servers
参数等于 true 时,云用户可以创建一个带有计算实例附加的网络详细信息的共享网络,然后在创建共享时引用它。
当共享类型的 driver_handles_share_servers
参数等于 false 时,云用户必须将其计算实例连接到共享存储网络。
有关如何配置和验证与共享网络的网络连接的更多信息,请参阅 第 6.7.2 节 “连接到共享网络以访问共享网络”。
6.7.2. 连接到共享网络以访问共享网络 复制链接链接已复制到粘贴板!
当 driver_handles_share_servers
参数等于 false 时,共享将导出到管理员可用的共享提供商网络。作为最终用户,您必须将客户端(如计算实例)连接到共享提供商网络,以访问您的共享。
在本例中,共享提供商网络称为 StorageNFS。当 director 通过 NFS 后端使用 CephFS 部署共享文件系统服务时,配置了 StorageNFS。按照以下步骤连接到您的云管理员提供的网络。
在示例中,客户端的 IP 地址系列版本不重要。此流程中的步骤使用 IPv4 地址,但步骤与 IPv6 相同。
流程
为 StorageNFS 端口创建一个安全组,允许数据包到出口端口,但不允许来自未建立的连接的入站数据包:
openstack security group create no-ingress -f yaml
(user) [stack@undercloud-0 ~]$ openstack security group create no-ingress -f yaml created_at: '2018-09-19T08:19:58Z' description: no-ingress id: 66f67c24-cd8b-45e2-b60f-9eaedc79e3c5 name: no-ingress project_id: 1e021e8b322a40968484e1af538b8b63 revision_number: 2 rules: 'created_at=''2018-09-19T08:19:58Z'', direction=''egress'', ethertype=''IPv4'', id=''6c7f643f-3715-4df5-9fef-0850fb6eaaf2'', updated_at=''2018-09-19T08:19:58Z'' created_at=''2018-09-19T08:19:58Z'', direction=''egress'', ethertype=''IPv6'', id=''a8ca1ac2-fbe5-40e9-ab67-3e55b7a8632a'', updated_at=''2018-09-19T08:19:58Z''' updated_at: '2018-09-19T08:19:58Z'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 StorageNFS 网络中创建一个端口,其安全性由
no-ingress
安全组强制使用。openstack port create nfs-port0 --network StorageNFS --security-group no-ingress -f yaml
(user) [stack@undercloud-0 ~]$ openstack port create nfs-port0 --network StorageNFS --security-group no-ingress -f yaml admin_state_up: UP allowed_address_pairs: '' binding_host_id: null binding_profile: null binding_vif_details: null binding_vif_type: null binding_vnic_type: normal created_at: '2018-09-19T08:03:02Z' data_plane_status: null description: '' device_id: '' device_owner: '' dns_assignment: null dns_name: null extra_dhcp_opts: '' fixed_ips: ip_address='172.17.5.160', subnet_id='7bc188ae-aab3-425b-a894-863e4b664192' id: 7a91cbbc-8821-4d20-a24c-99c07178e5f7 ip_address: null mac_address: fa:16:3e:be:41:6f name: nfs-port0 network_id: cb2cbc5f-ea92-4c2d-beb8-d9b10e10efae option_name: null option_value: null port_security_enabled: true project_id: 1e021e8b322a40968484e1af538b8b63 qos_policy_id: null revision_number: 6 security_group_ids: 66f67c24-cd8b-45e2-b60f-9eaedc79e3c5 status: DOWN subnet_id: null tags: '' trunk_details: null updated_at: '2018-09-19T08:03:03Z'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意StorageNFSSubnet
分配 IP 地址 172.17.5.160 到nfs-port0
。将
nfs-port0
添加到 Compute 实例。openstack server add port instance0 nfs-port0 openstack server list -f yaml
(user) [stack@undercloud-0 ~]$ openstack server add port instance0 nfs-port0 (user) [stack@undercloud-0 ~]$ openstack server list -f yaml - Flavor: m1.micro ID: 0b878c11-e791-434b-ab63-274ecfc957e8 Image: manila-test Name: demo-instance0 Networks: demo-network=172.20.0.4, 10.0.0.53; StorageNFS=172.17.5.160 Status: ACTIVE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 除了它的私有和浮动地址外,计算实例还会分配一个在 StorageNFS 网络上 IP 地址为 172.17.5.160 的端口,您可以在问题中为该地址授予访问权限时挂载 NFS 共享。
注意您可能需要调整 Compute 实例上的网络配置,并重新启动 Compute 实例的服务,以激活具有此地址的接口。
6.7.3. 在网络和实例间配置 IPv6 接口 复制链接链接已复制到粘贴板!
当导出的共享网络使用 IPv6 寻址时,您可能会在二级接口上遇到 DHCPv6 的问题。如果出现这个问题,请在实例上手动配置 IPv6 接口。
先决条件
- 连接到共享网络以访问共享网络
流程
- 登录该实例。
配置 IPv6 接口地址:
sudo ip address add fd00:fd00:fd00:7000::c/64 dev eth1
$ sudo ip address add fd00:fd00:fd00:7000::c/64 dev eth1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 激活接口:
sudo ip link set dev eth1 up
$ sudo ip link set dev eth1 up
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在共享的导出位置 ping IPv6 地址来测试接口连接:
ping -6 fd00:fd00:fd00:7000::21
$ ping -6 fd00:fd00:fd00:7000::21
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,通过 Telnet 验证您可以访问 NFS 服务器:
sudo dnf install -y telnet telnet fd00:fd00:fd00:7000::21 2049
$ sudo dnf install -y telnet $ telnet fd00:fd00:fd00:7000::21 2049
Copy to Clipboard Copied! Toggle word wrap Toggle overflow