Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

10.2. Ceph Storage 노드 축소 및 교체

Ceph 클러스터 축소 또는 Ceph Storage 노드에 결함이 있는 경우와 같이 Ceph Storage 노드를 교체해야 하는 경우가 있습니다. 두 경우 모두 데이터 손실을 방지하기 위해 오버클라우드에서 삭제할 Ceph Storage 노드를 비활성화하고 재조정해야 합니다.

참고

이 절차에서는 Red Hat Ceph Storage 관리 가이드의 단계를 사용하여 Ceph Storage 노드를 수동으로 삭제합니다. Ceph Storage 노드를 수동으로 제거 하는 방법에 대한 자세 한 내용은 컨테이너에서 실행되는 Ceph 클러스터 관리 및 명령줄 인터페이스를 사용하여 Ceph OSD 제거를 참조하십시오.

절차

  1. 컨트롤러 노드에 heat-admin 사용자로 로그인합니다. director stack 사용자에게는 heat-admin 사용자에 액세스할 수 있는 SSH 키가 있습니다.
  2. 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
  3. 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
  4. Ceph Storage 클러스터의 재조정이 시작됩니다. 이 프로세스가 완료될 때까지 기다립니다. 다음 명령을 사용하여 상태를 따릅니다.

    [heat-admin@overcloud-controller-0 ~]$ sudo docker exec ceph-mon-<HOSTNAME> ceph -w
  5. 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
  6. OSD를 중지합니다.

    [heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl stop ceph-osd@0
    [heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl stop ceph-osd@1
  7. 컨트롤러 노드에 로그인하는 동안 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
  8. 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
  9. 클러스터에서 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
  10. 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단계로 이동합니다.

  11. 노드를 종료하고 stack 사용자로 언더클라우드로 돌아갑니다.

    [heat-admin@overcloud-controller-0 ~]$ exit
    [stack@director ~]$
  12. director가 다시 프로비저닝하지 않도록 Ceph Storage 노드를 비활성화합니다.

    [stack@director ~]$ openstack baremetal node list
    [stack@director ~]$ openstack baremetal node maintenance set UUID
  13. Ceph Storage 노드를 삭제하려면 로컬 템플릿 파일을 사용하여 director의 오버클라우드 스택을 업데이트해야 합니다. 먼저 오버클라우드 스택의 UUID를 확인합니다.

    $ openstack stack list
  14. 삭제하려는 Ceph Storage 노드의 UUID를 확인합니다.

    $ openstack server list
  15. 스택에서 노드를 삭제하고 그에 따라 계획을 업데이트합니다.

    중요

    오버클라우드를 생성할 때 추가 환경 파일을 전달한 경우 -e 옵션을 사용하여 오버클라우드를 원하지 않는 변경을 수행하지 않도록 여기에서 다시 전달합니다. 자세한 내용은 Director 설치 및 사용 가이드 의 Overcloud 환경 수정 참조하십시오.

    $ openstack overcloud node delete /
    --stack <stack-name> /
    --templates /
    -e <other-environment-files> /
    <node_UUID>
  16. 스택이 업데이트를 완료할 때까지 기다립니다. heat stack-list --show-nested 명령을 사용하여 스택 업데이트를 모니터링합니다.
  17. 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절. “역할에 노드 및 플레이버 할당” 을 참조하십시오.

  18. 환경 파일을 업데이트한 후 오버클라우드를 다시 배포합니다.

    $ openstack overcloud deploy --templates -e <ENVIRONMENT_FILES>

    director는 새 노드를 프로비저닝하고 전체 스택을 새 노드의 세부 정보로 업데이트합니다.

  19. 컨트롤러 노드에 heat-admin 사용자로 로그인하고 Ceph Storage 노드의 상태를 확인합니다.

    [heat-admin@overcloud-controller-0 ~]$ sudo ceph status
  20. osdmap 섹션의 값이 클러스터의 노드 수와 일치하는지 확인합니다. 제거한 Ceph Storage 노드가 새 노드로 교체됩니다.