11.7. 使用规格文件为 CephFS/NFS 部署 HA

您可以首先部署 NFS 服务,然后部署到相同 NFS 服务的 ingress 来使用规格文件部署 HA。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 主机添加到集群中。
  • 部署所有管理器、监控和 OSD 守护进程。
  • 确保启用了 NFS 模块。

流程

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 确定启用了 NFS 模块:

    示例

    [ceph: root@host01 /]# ceph mgr module ls | more

  3. 退出 Cephadm shell 并创建 nfs.yaml 文件:

    示例

    [root@host01 ~]# touch nfs.yaml

  4. 编辑 nfs.yaml 文件,使其包含以下详情:

    语法

    service_type: nfs
    service_id: SERVICE_ID
    placement:
      hosts:
        - HOST_NAME_1
        - HOST_NAME_2
      count: COUNT
    spec:
      port: PORT_NUMBER

    注意

    为 NFS 服务分配的主机数量必须大于您要部署的活跃 NFS 服务器数量,由 placement: count 参数指定。

    示例

    service_type: nfs
    service_id: cephfsnfs
    placement:
      hosts:
        - host02
        - host03
      count: 1
    spec:
      port: 12345

    在本例中,服务器在非默认端口 12345 中运行,而不是默认端口 2049,在 host02 和 host03 上运行。

  5. 将 YAML 文件挂载到容器中的一个目录下:

    示例

    [root@host01 ~]# cephadm shell --mount nfs.yaml:/var/lib/ceph/nfs.yaml

  6. 登录 Cephadm shell 并导航至该目录:

    示例

    [ceph: root@host01 /]# cd /var/lib/ceph/

  7. 使用服务规格部署 NFS 服务:

    语法

    ceph orch apply -i FILE_NAME.yaml

    示例

    [ceph: root@host01 ceph]# ceph orch apply -i nfs.yaml

    注意

    NFS 服务部署是异步的,在服务完全启动前可能会返回该命令。

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

    语法

    ceph orch ls --service_name=nfs.CLUSTER_ID

    示例

    [ceph: root@host01 /]# ceph orch ls --service_name=nfs.cephfsnfs
    
    NAME           PORTS    RUNNING  REFRESHED  AGE  PLACEMENT
    nfs.cephfsnfs  ?:12345      2/2  3m ago     13m  host02;host03

  9. 退出 Cephadm shell 并创建 ingress.yaml 文件:

    示例

    [root@host01 ~]# touch ingress.yaml

  10. 编辑 ingress.yaml 文件,使其包含以下详情:

    语法

    service_type: SERVICE_TYPE
    service_id: SERVICE_ID
    placement:
      count: PLACEMENT
    spec:
      backend_service: SERVICE_ID_BACKEND
      frontend_port: FRONTEND_PORT
      monitor_port: MONITOR_PORT
      virtual_ip: VIRTUAL_IP_WITH_CIDR

    示例

    service_type: ingress
    service_id: nfs.cephfsnfs
    placement:
      count: 2
    spec:
      backend_service: nfs.cephfsnfs
      frontend_port: 2049
      monitor_port: 9000
      virtual_ip: 10.10.128.75/22

    注意

    在本例中,placement: count: 2 在随机节点上部署 keepalivedhaproxy 服务。要指定要在其上部署 keepalivedhaproxy 的节点,请使用 placement: hosts 选项:

    示例

    service_type: ingress
    service_id: nfs.cephfsnfs
    placement:
      hosts:
        - host02
        - host03

  11. 将 YAML 文件挂载到容器中的一个目录下:

    示例

    [root@host01 ~]# cephadm shell --mount ingress.yaml:/var/lib/ceph/ingress.yaml

  12. 登录 Cephadm shell 并导航至该目录:

    示例

    [ceph: root@host01 /]# cd /var/lib/ceph/

  13. 使用服务规格部署 入口 服务:

    语法

    ceph orch apply -i FILE_NAME.yaml

    示例

    [ceph: root@host01 ceph]# ceph orch apply -i ingress.yaml

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

    语法

    ceph orch ls --service_name=ingress.nfs.CLUSTER_ID

    示例

    [ceph: root@host01 /]# ceph orch ls --service_name=ingress.nfs.cephfsnfs
    
    NAME                   PORTS                  RUNNING  REFRESHED  AGE  PLACEMENT
    ingress.nfs.cephfsnfs  10.10.128.75:2049,9000      4/4   4m ago     22m  count:2

验证

  • 查看单个 NFS 守护进程的 IP 端点、IP 地址,以及 入口 服务的虚拟 IP:

    语法

    ceph nfs cluster info CLUSTER_ID

    示例

    [ceph: root@host01 /]# ceph nfs cluster info cephfsnfs
    
    {
        "cephfsnfs": {
            "virtual_ip": "10.10.128.75",
            "backend": [
                {
                    "hostname": "host02",
                    "ip": "10.10.128.69",
                    "port": 12345
                },
                {
                    "hostname": "host03",
                    "ip": "10.10.128.70",
                    "port": 12345
                }
            ],
            "port": 2049,
            "monitor_port": 9049
        }
    }

  • 列出主机和进程:

    示例

    [ceph: root@host01 /]# ceph orch ps | grep nfs
    
    haproxy.nfs.cephfsnfs.host01.ruyyhq     host01  *:2049,9000  running (27m)     6m ago  34m    9.85M        -  2.2.19-7ea3822   5e6a41d77b38  328d27b3f706
    haproxy.nfs.cephfsnfs.host02.ctrhha     host02  *:2049,9000  running (34m)     6m ago  34m    4944k        -  2.2.19-7ea3822   5e6a41d77b38  4f4440dbfde9
    keepalived.nfs.cephfsnfs.host01.fqgjxd  host01               running (27m)     6m ago  34m    31.2M        -  2.1.5            18fa163ab18f  0e22b2b101df
    keepalived.nfs.cephfsnfs.host02.fqzkxb  host02               running (34m)     6m ago  34m    17.5M        -  2.1.5            18fa163ab18f  c1e3cc074cf8
    nfs.cephfsnfs.0.0.host02.emoaut         host02  *:12345      running (37m)     6m ago  37m    82.7M        -  3.5              91322de4f795  2d00faaa2ae5
    nfs.cephfsnfs.1.0.host03.nsxcfd         host03  *:12345      running (37m)     6m ago  37m    81.1M        -  3.5              91322de4f795  d4bda4074f17

其他资源