10.2. Ceph Storage 노드 축소 및 교체
Ceph 클러스터 축소 또는 Ceph Storage 노드에 결함이 있는 경우와 같이 Ceph Storage 노드를 교체해야 하는 경우가 있습니다. 두 경우 모두 데이터 손실을 방지하기 위해 오버클라우드에서 삭제할 Ceph Storage 노드를 비활성화하고 재조정해야 합니다.
이 절차에서는 Red Hat Ceph Storage 관리 가이드의 단계를 사용하여 Ceph Storage 노드를 수동으로 삭제합니다. Ceph Storage 노드를 수동으로 제거 하는 방법에 대한 자세 한 내용은 컨테이너에서 실행되는 Ceph 클러스터 관리 및 명령줄 인터페이스를 사용하여 Ceph OSD 제거를 참조하십시오.
절차
-
컨트롤러 노드에
heat-admin
사용자로 로그인합니다. directorstack
사용자에게는heat-admin
사용자에 액세스할 수 있는 SSH 키가 있습니다. OSD 트리를 나열하고 노드의 OSD를 찾습니다. 예를 들어 삭제하려는 노드에는 다음 OSD가 포함될 수 있습니다.
-2 0.09998 host overcloud-cephstorage-0 0 0.04999 osd.0 up 1.00000 1.00000 1 0.04999 osd.1 up 1.00000 1.00000
Ceph Storage 노드에서 OSD를 비활성화합니다. 이 경우 OSD ID는 0과 1입니다.
[heat-admin@overcloud-controller-0 ~]$ sudo docker exec ceph-mon-<HOSTNAME> ceph osd out 0 [heat-admin@overcloud-controller-0 ~]$ sudo docker exec ceph-mon-<HOSTNAME> ceph osd out 1
Ceph Storage 클러스터의 재조정이 시작됩니다. 이 프로세스가 완료될 때까지 기다립니다. 다음 명령을 사용하여 상태를 따릅니다.
[heat-admin@overcloud-controller-0 ~]$ sudo docker exec ceph-mon-<HOSTNAME> ceph -w
Ceph 클러스터의 재조정이 완료되면 삭제 중인 Ceph Storage 노드에 로그인합니다(이 경우
overcloud-cephstorage-0
,heat-admin
사용자로, 노드를 중지 및 비활성화합니다.[heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl stop ceph-osd@0 [heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl stop ceph-osd@1 [heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl disable ceph-osd@0 [heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl disable ceph-osd@1
OSD를 중지합니다.
[heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl stop ceph-osd@0 [heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl stop ceph-osd@1
컨트롤러 노드에 로그인하는 동안 CRUSH 맵에서 OSD를 제거하여 더 이상 데이터를 수신하지 못하도록 합니다.
[heat-admin@overcloud-controller-0 ~]$ sudo docker exec ceph-mon-<HOSTNAME> ceph osd crush remove osd.0 [heat-admin@overcloud-controller-0 ~]$ sudo docker exec ceph-mon-<HOSTNAME> ceph osd crush remove osd.1
OSD 인증 키를 제거합니다.
[heat-admin@overcloud-controller-0 ~]$ sudo docker exec ceph-mon-<HOSTNAME> ceph auth del osd.0 [heat-admin@overcloud-controller-0 ~]$ sudo docker exec ceph-mon-<HOSTNAME> ceph auth del osd.1
클러스터에서 OSD를 제거합니다.
[heat-admin@overcloud-controller-0 ~]$ sudo docker exec ceph-mon-<HOSTNAME> ceph osd rm 0 [heat-admin@overcloud-controller-0 ~]$ sudo docker exec ceph-mon-<HOSTNAME> ceph osd rm 1
CRUSH 맵에서 스토리지 노드를 제거합니다.
[heat-admin@overcloud-controller-0 ~]$ sudo docker exec ceph-mon-<HOSTNAME> ceph osd crush rm <NODE> [heat-admin@overcloud-controller-0 ~]$ sudo ceph osd crush remove <NODE>
CRUSH 트리를 검색하여 CRUSH 맵에 정의된 <NODE> 이름을 확인할 수 있습니다.
[heat-admin@overcloud-controller-0 ~]$ sudo docker exec ceph-mon-<HOSTNAME> ceph osd crush tree | grep overcloud-osd-compute-3 -A 4 "name": "overcloud-osd-compute-3", "type": "host", "type_id": 1, "items": [] }, [heat-admin@overcloud-controller-0 ~]$
CRUSH 트리에서 항목 목록이 비어 있는지 확인합니다. 목록이 비어 있지 않으면 7단계로 이동합니다.
노드를 종료하고
stack
사용자로 언더클라우드로 돌아갑니다.[heat-admin@overcloud-controller-0 ~]$ exit [stack@director ~]$
director가 다시 프로비저닝하지 않도록 Ceph Storage 노드를 비활성화합니다.
[stack@director ~]$ openstack baremetal node list [stack@director ~]$ openstack baremetal node maintenance set UUID
Ceph Storage 노드를 삭제하려면 로컬 템플릿 파일을 사용하여 director의
오버클라우드
스택을 업데이트해야 합니다. 먼저 오버클라우드 스택의 UUID를 확인합니다.$ openstack stack list
삭제하려는 Ceph Storage 노드의 UUID를 확인합니다.
$ openstack server list
스택에서 노드를 삭제하고 그에 따라 계획을 업데이트합니다.
중요오버클라우드를 생성할 때 추가 환경 파일을 전달한 경우
-e
옵션을 사용하여 오버클라우드를 원하지 않는 변경을 수행하지 않도록 여기에서 다시 전달합니다. 자세한 내용은 Director 설치 및 사용 가이드 의 Overcloud 환경 수정 을 참조하십시오.$ openstack overcloud node delete / --stack <stack-name> / --templates / -e <other-environment-files> / <node_UUID>
-
스택이 업데이트를 완료할 때까지 기다립니다.
heat stack-list --show-nested
명령을 사용하여 스택 업데이트를 모니터링합니다. director 노드 풀에 새 노드를 추가하고 이를 Ceph Storage 노드로 배포합니다. 환경 파일의
parameter_defaults
(이 경우~/templates/storage-config.yaml
)에서CephStorageCount
매개변수를 사용하여 오버클라우드의 총 Ceph Storage 노드 수를 정의합니다.parameter_defaults: ControllerCount: 3 OvercloudControlFlavor: control ComputeCount: 3 OvercloudComputeFlavor: compute CephStorageCount: 3 OvercloudCephStorageFlavor: ceph-storage CephMonCount: 3 OvercloudCephMonFlavor: ceph-mon
참고역할당 노드 수를 정의하는 방법에 대한 자세한 내용은 7.1절. “역할에 노드 및 플레이버 할당” 을 참조하십시오.
환경 파일을 업데이트한 후 오버클라우드를 다시 배포합니다.
$ openstack overcloud deploy --templates -e <ENVIRONMENT_FILES>
director는 새 노드를 프로비저닝하고 전체 스택을 새 노드의 세부 정보로 업데이트합니다.
컨트롤러 노드에
heat-admin
사용자로 로그인하고 Ceph Storage 노드의 상태를 확인합니다.[heat-admin@overcloud-controller-0 ~]$ sudo ceph status
-
osdmap
섹션의 값이 클러스터의 노드 수와 일치하는지 확인합니다. 제거한 Ceph Storage 노드가 새 노드로 교체됩니다.