11.5. 为 CephFS/NFS 服务实施 HA(技术预览)
您可以使用 --ingress
标志和指定虚拟 IP 地址来部署带有高可用性(HA)前端、虚拟 IP 和负载均衡器的 NFS。这部署了 keepalived
和 haproxy
的组合,并为 NFS 服务提供高可用性 NFS 前端。
使用 --ingress
标志创建集群时,还会部署入口服务,以便为 NFS 服务器提供负载均衡和高可用性。虚拟 IP 用于提供已知、稳定的 NFS 端点,所有 NFS 客户端都可用来挂载。Ceph 处理将虚拟 IP 上的 NFS 流量重定向到相应的后端 NFS 服务器的详情,并在 NFS 服务器失败时重新部署 NFS 服务器。
为现有服务部署入口服务提供:
- 稳定的虚拟 IP,可用于访问 NFS 服务器。
- 在多个 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]
- 使用命名 NFS Ganesha 集群的唯一字符串替换 CLUSTER_ID。
- 将 PLACEMENT 替换为要部署的 NFS 服务器数以及您要在其上部署 NFS Ganesha 守护进程的主机或主机。
-
使用
--port
PORT_NUMBER 标志,在默认端口 2049 之外的端口上部署 NFS。 -
--ingress
标志与--virtual-ip
标志相结合,使用高可用性前端(虚拟 IP 和负载均衡器)部署 NFS。 使用 IP 地址替换
--virtual-ip
IP_ADDRESS,以提供所有客户端可以用来挂载 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 1/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
验证
查看单个 NFS 守护进程的 IP 端点、IP 地址,以及
入口
服务的虚拟 IP:语法
ceph nfs cluster info CLUSTER_ID
示例
[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 文件系统命名空间部分。