5.4. 풀에서 세 개의 가용성 영역 활성화
이 정보를 사용하여 일반화된 확장 클러스터 구성에서 세 개의 가용성 영역을 활성화하고 통합합니다.
사전 요구 사항
시작하기 전에 노드에 대한 다음과 같은 사전 요구 사항: * 루트 수준 액세스 권한이 있는지 확인하십시오. * CRUSH 위치는 호스트로 설정됩니다.
프로세스
최신 CRUSH 맵을 가져와서 맵을 텍스트 파일에 컴파일합니다.
구문
ceph osd getcrushmap > COMPILED_CRUSHMAP_FILENAME crushtool -d COMPILED_CRUSHMAP_FILENAME -o DECOMPILED_CRUSHMAP_FILENAME예
[ceph: root@host01 /]# ceph osd getcrushmap > crush.map.bin [ceph: root@host01 /]# crushtool -d crush.map.bin -o crush.map.txt새 CRUSH 규칙을 이전에서 분리된 CRUSH 맵 파일에 추가합니다. 이 예제에서 규칙 이름은
3az_rule입니다.구문
rule 3az_rule { id 1 type replicated step take default step choose firstn 3 type datacenter step chooseleaf firstn 2 type host step emit }이 규칙을 사용하면 3개의 데이터 센터 각각에 두 개의 사본으로 배치 그룹이 복제됩니다.
CRUSH 맵을 삽입하여 클러스터에서 규칙을 사용할 수 있도록 합니다.
구문
crushtool -c DECOMPILED_CRUSHMAP_FILENAME -o COMPILED_CRUSHMAP_FILENAME ceph osd setcrushmap -i COMPILED_CRUSHMAP_FILENAME예
[ceph: root@host01 /]# crushtool -c crush.map.txt -o crush2.map.bin [ceph: root@host01 /]# ceph osd setcrushmap -i crush2.map.bin다음 단계를 사용하여 규칙이 성공적으로 삽입되었는지 확인할 수 있습니다.
클러스터의 규칙을 나열합니다.
구문
ceph osd crush rule ls예
[ceph: root@host01 /]# ceph osd crush rule ls replicated_rule ec86_pool 3az_rule
CRUSH 규칙을 덤프합니다.
구문
ceph osd crush rule dump CRUSH_RULE예
[ceph: root@host01 /]# ceph osd crush rule dump 3az_rule { "rule_id": 1, "rule_name": "3az_rule", "type": 1, "steps": [ { "op": "take", "item": -1, "item_name": "default" }, { "op": "choose_firstn", "num": 3, "type": "datacenter" }, { "op": "chooseleaf_firstn", "num": 2, "type": "host" }, { "op": "emit" } ] }MON 선택 전략을 connectivity로 설정합니다.
구문
ceph mon set election_strategy connectivity성공적으로 업데이트되면 election_strategy가
3으로 업데이트됩니다. 기본 election_strategy는1입니다.선택 사항: 이전 단계에서 설정한 선택 전략을 확인합니다.
구문
ceph mon dump모든 mon 데몬이 출력에 있고 올바른 CRUSH 위치가 추가되었는지 확인합니다.
예
[ceph: root@host01 /]# ceph mon dump epoch 19 fsid b556497a-693a-11ef-b9d1-fa163e841fd7 last_changed 2024-09-03T12:47:08.419495+0000 created 2024-09-02T14:50:51.490781+0000 min_mon_release 19 (squid) election_strategy: 3 0: [v2:10.0.67.43:3300/0,v1:10.0.67.43:6789/0] mon.host01-installer; crush_location {datacenter=DC1} 1: [v2:10.0.67.20:3300/0,v1:10.0.67.20:6789/0] mon.host02; crush_location {datacenter=DC1} 2: [v2:10.0.64.242:3300/0,v1:10.0.64.242:6789/0] mon.host03; crush_location {datacenter=DC1} 3: [v2:10.0.66.17:3300/0,v1:10.0.66.17:6789/0] mon.host06; crush_location {datacenter=DC2} 4: [v2:10.0.66.228:3300/0,v1:10.0.66.228:6789/0] mon.host09; crush_location {datacenter=DC3} 5: [v2:10.0.65.125:3300/0,v1:10.0.65.125:6789/0] mon.host05; crush_location {datacenter=DC2} 6: [v2:10.0.66.252:3300/0,v1:10.0.66.252:6789/0] mon.host07; crush_location {datacenter=DC3} 7: [v2:10.0.64.145:3300/0,v1:10.0.64.145:6789/0] mon.host08; crush_location {datacenter=DC3} 8: [v2:10.0.64.125:3300/0,v1:10.0.64.125:6789/0] mon.host04; crush_location {datacenter=DC2} dumped monmap epoch 19세 개의 가용성 영역 확장 클러스터와 연결할 풀을 설정합니다. 사용 가능한 풀 값에 대한 자세한 내용은 Red Hat Ceph Storage Storage Strategies Guide의 Pool 값을 참조하십시오.
구문
ceph osd pool stretch set _POOL_NAME_ _PEERING_CRUSH_BUCKET_COUNT_ _PEERING_CRUSH_BUCKET_TARGET_ _PEERING_CRUSH_BUCKET_BARRIER_ _CRUSH_RULE_ _SIZE_ _MIN_SIZE_ [--yes-i-really-mean-it]다음과 같이 변수를 변경합니다.
- POOL_NAME
- 풀의 이름입니다. 기존 풀이어야 합니다. 이 명령은 새 풀을 생성하지 않습니다.
- PEERING_CRUSH_BUCKET_COUNT
- 이 값은 peering_crush_bucket_barrier와 함께 사용되어, 동작 세트에 있는 개별 버킷 수에 따라 선택한 동작 세트의 OSD 집합이 서로 피어링할 수 있는지 여부를 결정합니다.
- PEERING_CRUSH_BUCKET_TARGET
- 이 값은 peering_crush_bucket_barrier 및 size와 함께 사용하여 동일한 버킷의 OSD 수를 PG의 동작 세트에 있는 OSD 수를 제한하는 버킷_max 값을 계산합니다.
- PEERING_CRUSH_BUCKET_BARRIER
- 풀이 확장되는 버킷 유형입니다. 예를 들면 rack, row 또는 datacenter입니다.
- CRUSH_RULE
- 스트레치 풀에 사용할 crush 규칙입니다. 풀 유형은 crush_rule(복제 또는 삭제) 유형과 일치해야 합니다.
- SIZE
- 확장 풀의 오브젝트 복제본 수입니다.
- MIN_SIZE
확장 풀의 I/O에 필요한 최소 복제본 수입니다.
중요CRUSH 맵의 버킷 수 이상으로 PEERING_CRUSH_BUCKET_COUNT 및 PEERING_CRUSH_BUCKET_TARGET 을 설정할 때 '--yes-i-really-mean-it 플래그가 필요합니다. 옵션 플래그를 사용하여 안전 검사를 바이패스하고 스트레치 풀 값을 설정합니다.
예
[ceph: root@host01 /]# ceph osd pool stretch set pool01 2 3 datacenter 3az_rule 6 3참고풀을stretched 클러스터로 되돌리려면
ceph osd pool stretch unset POOL_NAME명령을 사용합니다. 이 명령을 사용하면crush_rule,size,min_size값이 설정되지 않습니다. 필요한 경우 수동으로 재설정해야 합니다.풀 스트레치 값이 올바르게 설정되었음을 성공 메시지가 전송됩니다.
선택 사항:
ceph osd pool stretch show명령을 사용하여 확장 클러스터와 연결된 풀을 확인합니다.예
[ceph: root@host01 /]# ceph osd pool stretch show pool01 pool: pool01 pool_id: 1 is_stretch_pool: 1 peering_crush_bucket_count: 2 peering_crush_bucket_target: 3 peering_crush_bucket_barrier: 8 crush_rule: 3az_rule size: 6 min_size: 3