11.7. 사양 파일을 사용하여 CephFS/NFS에 대한 HA 배포
먼저 NFS 서비스를 배포한 다음 동일한 NFS 서비스에 Ingress를 배포하여 사양 파일을 사용하여 CephFS/NFS의 HA
를 배포할 수 있습니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- 호스트는 클러스터에 추가됩니다.
- 모든 manager, monitor, OSD 데몬이 배포됩니다.
- NFS 모듈이 활성화되었는지 확인합니다.
절차
Cephadm 쉘에 로그인합니다.
예제
[root@host01 ~]# cephadm shell
NFS 모듈이 활성화되었는지 확인합니다.
예제
[ceph: root@host01 /]# ceph mgr module ls | more
Cephadm 쉘을 종료하고
nfs.yaml
파일을 생성합니다.예제
[root@host01 ~]# touch nfs.yaml
다음 세부 정보를 포함하도록
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 포트에서 실행됩니다.컨테이너의 디렉터리에 YAML 파일을 마운트합니다.
예제
[root@host01 ~]# cephadm shell --mount nfs.yaml:/var/lib/ceph/nfs.yaml
Cephadm 쉘에 로그인하고 디렉터리로 이동합니다.
예제
[ceph: root@host01 /]# cd /var/lib/ceph/
서비스 사양을 사용하여 NFS 서비스를 배포합니다.
구문
ceph orch apply -i FILE_NAME.yaml
예제
[ceph: root@host01 ceph]# ceph orch apply -i nfs.yaml
참고NFS 서비스의 배포는 비동기적으로 배포되고 서비스가 완전히 시작되기 전에 명령이 반환될 수 있습니다.
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
Cephadm 쉘을 종료하고
ingress.yaml
파일을 생성합니다.예제
[root@host01 ~]# touch ingress.yaml
다음 세부 사항을 포함하도록
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
는keepalived
및haproxy
서비스를 임의의 노드에 배포합니다.keepalived
및haproxy
를 배포할 노드를 지정하려면placement: hosts
옵션을 사용합니다.예제
service_type: ingress service_id: nfs.cephfsnfs placement: hosts: - host02 - host03
컨테이너의 디렉터리에 YAML 파일을 마운트합니다.
예제
[root@host01 ~]# cephadm shell --mount ingress.yaml:/var/lib/ceph/ingress.yaml
Cephadm 쉘에 로그인하고 디렉터리로 이동합니다.
예제
[ceph: root@host01 /]# cd /var/lib/ceph/
서비스 사양을 사용하여
수신
서비스를 배포합니다.구문
ceph orch apply -i FILE_NAME.yaml
예제
[ceph: root@host01 ceph]# ceph orch apply -i ingress.yaml
수신 서비스가 성공적으로 시작되었는지 확인합니다.
구문
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