11.4. 为 CephFS/NFS 服务实施 HA (技术预览)
您可以使用- ingress
标志和指定虚拟 IP 地址,使用高可用性(HA)前端、虚拟 IP 和负载均衡器部署 NFS。这会部署 keepalived
和 haproxy
的组合,并为 NFS 服务提供高可用性 NFS 前端。
当使用-- ingress
标志创建集群时,还会部署入口服务来为 NFS 服务器提供负载均衡和高可用性。虚拟 IP 用于提供一个已知稳定的 NFS 端点,所有 NFS 客户端都可以使用该端点挂载。Ceph 处理将虚拟 IP 上 NFS 流量重定向到适当的后端 NFS 服务器的详细信息,并在 NFS 服务器失败时重新部署 NFS 服务器。
为现有服务部署入口服务提供:
- 用于访问 NFS 服务器的稳定虚拟 IP。
- 在多个 NFS 网关之间加载分发。
- 当主机故障时,在主机间故障转移。
CephFS/NFS 的 HA 只是一个技术预览功能。红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。如需了解更多详细信息,请参阅红帽技术预览功能的支持范围。
当在 NFS 集群前面部署 入口
服务时,后端 NFS-ganesha 服务器将看到 haproxy 的 IP 地址,而不是客户端的 IP 地址。因此,如果您要根据 IP 地址限制客户端访问,NFS 导出的访问限制将无法正常工作。
如果为客户端服务的活跃 NFS 服务器停机,则客户端的 I/O 将中断,直到替换活跃 NFS 服务器在线为止,且 NFS 集群再次处于活动状态。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 部署所有管理器、监控和 OSD 守护进程。
- 确保启用了 NFS 模块。
流程
登录到 Cephadm shell:
示例
[root@host01 ~]# cephadm shell
使用--
ingress
标志创建 NFS 集群:语法
ceph nfs cluster create CLUSTER_ID [PLACEMENT] [--port PORT_NUMBER] [--ingress --virtual-ip IP_ADDRESS/CIDR_PREFIX]
- 将 CLUSTER_ID 替换为一个唯一字符串,以命名 NFS Ganesha 集群。
- 将 PLACEMENT 替换为要部署的 NFS 服务器的数量,以及您要在其上部署 NFS Ganesha 守护进程容器的主机或主机。
使用--
port
PORT_NUMBER 标志在默认端口 12049 以外的端口上部署 NFS。注意使用入口模式时,高可用性代理使用端口 2049,并且 NFS 服务部署在 12049 上。
-
--ingress
标志与--virtual-ip
标志相结合,使用高可用性前端(虚拟 IP 和负载均衡器)部署 NFS。 将
--virtual-ip
IP_ADDRESS 替换为 IP 地址,以提供所有客户端都可以用来挂载 NFS 导出的已知稳定的 NFS 端点。--virtual-ip
必须包含 CIDR 前缀长度。虚拟 IP 通常在第一个标识的网络接口上配置,该接口在同一子网中具有现有 IP。注意为 NFS 服务分配的主机数量必须大于您请求的活跃 NFS 服务器数量,由
placement: count
参数指定。在以下示例中,请求一个活跃的 NFS 服务器,并分配了两个主机。示例
[ceph: root@host01 /]# ceph nfs cluster create mycephnfs "1 host02 host03" --ingress --virtual-ip 10.10.128.75/22
注意部署 NFS 守护进程和入口服务是异步的,在服务完全启动前可能会返回该命令。
检查服务是否已成功启动:
语法
ceph orch ls --service_name=nfs.CLUSTER_ID ceph orch ls --service_name=ingress.nfs.CLUSTER_ID
示例
[ceph: root@host01 /]# ceph orch ls --service_name=nfs.mycephnfs NAME PORTS RUNNING REFRESHED AGE PLACEMENT nfs.mycephnfs ?:12049 2/2 0s ago 20s host02;host03 [ceph: root@host01 /]# ceph orch ls --service_name=ingress.nfs.mycephnfs NAME PORTS RUNNING REFRESHED AGE PLACEMENT ingress.nfs.mycephnfs 10.10.128.75:2049,9049 4/4 46s ago 73s count:2
验证
查看 IP 端点、单个 NFS 守护进程的 IP 和
入口
服务的虚拟 IP:语法
ceph nfs cluster info CLUSTER_NAME
示例
[ceph: root@host01 /]# ceph nfs cluster info mycephnfs { "mycephnfs": { "virtual_ip": "10.10.128.75", "backend": [ { "hostname": "host02", "ip": "10.10.128.69", "port": 12049 }, { "hostname": "host03", "ip": "10.10.128.70", "port": 12049 } ], "port": 2049, "monitor_port": 9049 } }
列出主机和进程:
示例
[ceph: root@host01 /]# ceph orch ps | grep nfs haproxy.nfs.cephnfs.host01.rftylv host01 *:2049,9000 running (11m) 10m ago 11m 23.2M - 2.2.19-7ea3822 5e6a41d77b38 f8cc61dc827e haproxy.nfs.cephnfs.host02.zhtded host02 *:2049,9000 running (11m) 53s ago 11m 21.3M - 2.2.19-7ea3822 5e6a41d77b38 4cad324e0e23 keepalived.nfs.cephnfs.host01.zktmsk host01 running (11m) 10m ago 11m 2349k - 2.1.5 18fa163ab18f 66bf39784993 keepalived.nfs.cephnfs.host02.vyycvp host02 running (11m) 53s ago 11m 2349k - 2.1.5 18fa163ab18f 1ecc95a568b4 nfs.cephnfs.0.0.host02.fescmw host02 *:12049 running (14m) 3m ago 14m 76.9M - 3.5 cef6e7959b0a bb0e4ee9484e nfs.cephnfs.1.0.host03.avaddf host03 *:12049 running (14m) 3m ago 14m 74.3M - 3.5 cef6e7959b0a ea02c0c50749
其他资源
- 有关在客户端主机上挂载 NFS 导出的详情,请参考 Red Hat Ceph Storage 文件系统指南中的通过 NFS 协议导出 Ceph 文件系统命名空间部分。