4장. 데이터 센터 오류 처리
Red Hat Ceph Storage는 확장 클러스터에서 세 개의 데이터 센터 중 하나를 손실하는 등 인프라에 치명적인 실패를 초래할 수 있습니다. 표준 오브젝트 저장소 사용 사례의 경우 세 개의 데이터 센터를 둘 간에 설정한 복제와 독립적으로 구성할 수 있습니다. 이 시나리오에서는 로컬 기능과 종속성을 반영하여 각 데이터 센터의 클러스터 구성이 다를 수 있습니다.
배치 계층 구조의 논리적 구조를 고려해야 합니다. 인프라 내에서 장애 도메인의 계층 구조를 반영하여 적절한 CRUSH 맵을 사용할 수 있습니다. 논리적 계층 구조 정의를 사용하면 표준 계층 구조 정의를 사용하는 대신 스토리지 클러스터의 안정성이 향상됩니다. 실패 도메인은 CRUSH 맵에 정의되어 있습니다. 기본 CRUSH 맵에는 플랫 계층 구조의 모든 노드가 포함됩니다.
3개의 데이터 센터 환경 예에서는 확장 클러스터를 사용하는 노드 배치는 하나의 데이터 센터를 중단할 수 있는 방식으로 관리되어야 하지만 스토리지 클러스터는 가동 상태를 유지해야 합니다. 데이터에 3-방향 복제를 사용할 때 노드가 상주하는 장애 도메인의 경우 하나의 데이터 센터에 중단되는 경우 일부 데이터를 한 복사본으로 유지할 수 있습니다. 이 시나리오가 발생하면 다음 두 가지 옵션이 있습니다.
- 표준 설정을 사용하여 데이터를 읽기 전용 상태로 둡니다.
- 정전 기간 동안 단 하나의 사본으로만 라이브.
표준 설정을 사용하고 노드에서 데이터 배치의 임의성 때문에 모든 데이터가 영향을 받는 것은 아니지만 일부 데이터는 하나의 복사본만 가질 수 있으며 스토리지 클러스터는 읽기 전용 모드로 되돌아갑니다.
아래 예제에서 결과 맵은 6개의 OSD 노드로 클러스터의 초기 설정에서 파생됩니다. 이 예에서 모든 노드에는 디스크가 하나만 있고 OSD가 하나만 있습니다. 모든 노드는 기본 루트, 즉 계층 구조 트리의 표준 루트에 따라 정렬됩니다. 2개의 OSD에 할당된 가중치가 있으므로 이러한 OSD에는 다른 OSD보다 더 적은 데이터 청크가 부여됩니다. 이러한 노드는 초기 OSD 디스크보다 큰 디스크가 나중에 도입되었습니다. 이는 노드 그룹의 실패를 견디도록 데이터 배치에는 영향을 미치지 않습니다.
표준 CRUSH 맵
$ sudo ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 0.33554 root default -2 0.04779 host ceph-node3 0 0.04779 osd.0 up 1.00000 1.00000 -3 0.04779 host ceph-node2 1 0.04779 osd.1 up 1.00000 1.00000 -4 0.04779 host ceph-node1 2 0.04779 osd.2 up 1.00000 1.00000 -5 0.04779 host ceph-node4 3 0.04779 osd.3 up 1.00000 1.00000 -6 0.07219 host ceph-node6 4 0.07219 osd.4 up 0.79999 1.00000 -7 0.07219 host ceph-node5 5 0.07219 osd.5 up 0.79999 1.00000
논리 계층 정의를 사용하여 노드를 동일한 데이터 센터로 그룹화하면 데이터 배치 완성도를 달성할 수 있습니다. 루트,데이터센터,랙,행 및 호스트의 가능한 정의 유형을 사용하면 세 개의 데이터 센터에 대한 장애 도메인을 반영할 수 있습니다.
- ceph-node1 및 ceph-node2 노드가 데이터 센터 1(DC1)에 상주합니다.
- 노드 ceph-node3 및 ceph-node5는 DC2(데이터 센터 2)에 상주합니다.
- ceph-node4 및 ceph-node6 노드가 데이터센터 3(DC3)에 상주합니다.
- 모든 데이터 센터는 동일한 구조(모든 DC)에 속합니다.
호스트의 모든 OSD가 호스트 정의에 속해 있으므로 변경할 필요가 없습니다. 스토리지 클러스터 런타임 중에 다음을 통해 다른 모든 할당을 조정할 수 있습니다.
다음 명령을 사용하여 버킷 구조를 정의합니다.
ceph osd crush add-bucket allDC root ceph osd crush add-bucket DC1 datacenter ceph osd crush add-bucket DC2 datacenter ceph osd crush add-bucket DC3 datacenter
CRUSH 맵을 수정하여 이 구조 내에서 노드를 적절한 위치로 이동합니다.
ceph osd crush move DC1 root=allDC ceph osd crush move DC2 root=allDC ceph osd crush move DC3 root=allDC ceph osd crush move ceph-node1 datacenter=DC1 ceph osd crush move ceph-node2 datacenter=DC1 ceph osd crush move ceph-node3 datacenter=DC2 ceph osd crush move ceph-node5 datacenter=DC2 ceph osd crush move ceph-node4 datacenter=DC3 ceph osd crush move ceph-node6 datacenter=DC3
이 구조 내에서 새 호스트도 추가할 수 있으며 새 디스크도 추가할 수 있습니다. 계층 구조에서 OSD를 올바른 위치에 배치하면 CRUSH 알고리즘은 구조 내의 다른 장애 도메인에 중복 조각을 배치하도록 변경됩니다.
위 예제는 다음과 같습니다.
$ sudo ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -8 6.00000 root allDC -9 2.00000 datacenter DC1 -4 1.00000 host ceph-node1 2 1.00000 osd.2 up 1.00000 1.00000 -3 1.00000 host ceph-node2 1 1.00000 osd.1 up 1.00000 1.00000 -10 2.00000 datacenter DC2 -2 1.00000 host ceph-node3 0 1.00000 osd.0 up 1.00000 1.00000 -7 1.00000 host ceph-node5 5 1.00000 osd.5 up 0.79999 1.00000 -11 2.00000 datacenter DC3 -6 1.00000 host ceph-node6 4 1.00000 osd.4 up 0.79999 1.00000 -5 1.00000 host ceph-node4 3 1.00000 osd.3 up 1.00000 1.00000 -1 0 root default
위의 목록은 osd 트리를 표시하여 결과 CRUSH 맵을 보여줍니다. 이제 호스트가 데이터 센터에 속한 방법 및 모든 데이터 센터가 동일한 최상위 수준에 속하지만 위치를 명확하게 구분할 수 있습니다.
맵에 따라 적절한 위치에 데이터를 배치하면 정상 클러스터 내에서만 올바르게 작동합니다. Misplacement는 일부 OSD를 사용할 수 없는 경우 경우에 따라 발생할 수 있습니다. 이러한 변경 사항은 가능한 한 자동으로 수정됩니다.
추가 리소스
- 자세한 내용은 Red Hat Ceph Storage 전략 가이드의 CRUSH 관리 장을 참조하십시오.