11.7. 사양 파일을 사용하여 CephFS/NFS에 대한 HA 배포

먼저 NFS 서비스를 배포한 다음 동일한 NFS 서비스에 Ingress를 배포하여 사양 파일을 사용하여 CephFS/NFS의 HA 를 배포할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 호스트는 클러스터에 추가됩니다.
  • 모든 manager, monitor, OSD 데몬이 배포됩니다.
  • NFS 모듈이 활성화되었는지 확인합니다.

절차

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell

  2. NFS 모듈이 활성화되었는지 확인합니다.

    예제

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

  3. Cephadm 쉘을 종료하고 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 서비스에 할당한 호스트 수는 deploy : count 매개변수로 지정하는 활성 NFS 서버 수보다 커야 합니다.

    예제

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

    이 예에서 서버는 host02 및 host03에서 기본 포트가 2049 인 기본 포트가 아니라 12345 의 non-default 포트에서 실행됩니다.

  5. 컨테이너의 디렉터리에 YAML 파일을 마운트합니다.

    예제

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

  6. Cephadm 쉘에 로그인하고 디렉터리로 이동합니다.

    예제

    [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 쉘을 종료하고 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입니다. 2keepalivedhaproxy 서비스를 임의의 노드에 배포합니다. 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 쉘에 로그인하고 디렉터리로 이동합니다.

    예제

    [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. 수신 서비스가 성공적으로 시작되었는지 확인합니다.

    구문

    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

검증

  • Ingress 서비스의 IP 끝점, 개별 NFS 데몬의 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