11.2. Ceph Storage 노드 축소 및 교체
Ceph Storage 노드에 결함이 있는 경우와 같이 Ceph 클러스터를 축소하거나 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.00000Ceph Storage 노드에서 OSD를 비활성화합니다. 이 경우 OSD ID는 0과 1입니다.
[heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph osd out 0 [heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph osd out 1Ceph Storage 클러스터는 리밸런싱을 시작합니다. 이 프로세스가 완료될 때까지 기다립니다. 다음 명령을 사용하여 상태를 따릅니다.
[heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph -wCeph 클러스터 재조정이 완료되면 제거할 Ceph Storage 노드에
heat-admin사용자로overcloud-cephstorage-0에 로그인하고 노드를 중지하고 비활성화합니다.[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@1OSD를 중지합니다.
[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 podman exec ceph-mon-<HOSTNAME> ceph osd crush remove osd.0 [heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph osd crush remove osd.1OSD 인증 키를 제거합니다.
[heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph auth del osd.0 [heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph auth del osd.1클러스터에서 OSD를 제거합니다.
[heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph osd rm 0 [heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph osd rm 1CRUSH 맵에서 Storage 노드를 제거합니다.
[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 podman 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 트리에서 items 목록이 비어 있는지 확인합니다. 목록이 비어 있지 않으면 7단계를 다시 방문하십시오.
노드를 종료하고
stack사용자로 언더클라우드로 돌아갑니다.[heat-admin@overcloud-controller-0 ~]$ exit [stack@director ~]$Ceph Storage 노드를 비활성화하여 director가 다시 프로비저닝하지 않도록 합니다.
[stack@director ~]$ openstack baremetal node list [stack@director ~]$ openstack baremetal node maintenance set UUIDCeph 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에서CephStorageCount매개 변수를 사용하여~/templates/storage-config.yaml을 사용하여 오버클라우드에서 총 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_FILE>director가 새 노드를 프로비저닝하고 새 노드의 세부 정보로 전체 스택을 업데이트합니다.
컨트롤러 노드에
heat-admin사용자로 로그인하고 Ceph Storage 노드의 상태를 확인합니다.[heat-admin@overcloud-controller-0 ~]$ sudo ceph status-
osdmap섹션의 값이 원하는 클러스터의 노드 수와 일치하는지 확인합니다. 제거한 Ceph Storage 노드는 새 노드로 교체됩니다.