11.4. 为 CephFS/NFS 服务实施 HA (技术预览)


您可以使用- ingress 标志和指定虚拟 IP 地址,使用高可用性(HA)前端、虚拟 IP 和负载均衡器部署 NFS。这会部署 keepalivedhaproxy 的组合,并为 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 模块。

流程

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 使用-- 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 守护进程和入口服务是异步的,在服务完全启动前可能会返回该命令。

  3. 检查服务是否已成功启动:

    语法

    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

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.