4.2. 확장 클러스터에서 선호도 읽기
Read Affinity는 해당 데이터 센터 내에 데이터 액세스를 유지하여 영역 간 트래픽을 줄입니다.
다중 영역 환경에 배포된 확장된 클러스터의 경우 읽기 선호도 토폴로지 구현에서는 시작된 데이터 센터 내에서 트래픽을 유지하는 데 도움이 되는 메커니즘을 제공합니다. Ceph Object Gateway 볼륨은 노드의 CRUSH 맵 및 토폴로지 레이블에 정의된 OSD 위치에 따라 OSD에서 클라이언트와 근접하여 데이터를 읽을 수 있습니다.
예를 들어 확장 클러스터에는 Ceph Object Gateway 기본 OSD와 두 데이터 센터 A 및 B에 걸쳐 복제된 OSD가 포함되어 있습니다. 데이터 센터 A의 Object에서 GET
작업을 수행하면 데이터 센터 A의 클라이언트와 가장 가까운 OSD 데이터에서 READ
작업이 수행됩니다.
4.2.1. 지역화된 읽기 수행
확장 클러스터의 복제 풀에서 지역화된 읽기를 수행할 수 있습니다. 복제 풀에서 지역화된 읽기 요청이 생성되면 Ceph는 crush_location에 지정된 클라이언트 위치를 기반으로 클라이언트에 가장 가까운 로컬 OSD를 선택합니다.
사전 요구 사항
- 두 개의 데이터 센터와 Ceph Object Gateway가 둘 다 구성된 확장 클러스터입니다.
- 버킷에 기본 및 복제 OSD가 있는 사용자가 생성되었습니다.
프로세스
지역화된 읽기를 수행하려면
ceph config set
명령을 사용하여 OSD 데몬 구성에서rados_replica_read_policy
를 'localize'로 설정합니다.[ceph: root@host01 /]# ceph config set client.rgw.rgw.1 rados_replica_read_policy localize
verification: 다음 단계를 수행하여 OSD 세트에서 지역화된 읽기를 확인합니다.
ceph osd tree
명령을 실행하여 OSD 및 데이터 센터를 확인합니다.예
[ceph: root@host01 /]# ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.58557 root default -3 0.29279 datacenter DC1 -2 0.09760 host ceph-ci-fbv67y-ammmck-node2 2 hdd 0.02440 osd.2 up 1.00000 1.00000 11 hdd 0.02440 osd.11 up 1.00000 1.00000 17 hdd 0.02440 osd.17 up 1.00000 1.00000 22 hdd 0.02440 osd.22 up 1.00000 1.00000 -4 0.09760 host ceph-ci-fbv67y-ammmck-node3 0 hdd 0.02440 osd.0 up 1.00000 1.00000 6 hdd 0.02440 osd.6 up 1.00000 1.00000 12 hdd 0.02440 osd.12 up 1.00000 1.00000 18 hdd 0.02440 osd.18 up 1.00000 1.00000 -5 0.09760 host ceph-ci-fbv67y-ammmck-node4 5 hdd 0.02440 osd.5 up 1.00000 1.00000 10 hdd 0.02440 osd.10 up 1.00000 1.00000 16 hdd 0.02440 osd.16 up 1.00000 1.00000 23 hdd 0.02440 osd.23 up 1.00000 1.00000 -7 0.29279 datacenter DC2 -6 0.09760 host ceph-ci-fbv67y-ammmck-node5 3 hdd 0.02440 osd.3 up 1.00000 1.00000 8 hdd 0.02440 osd.8 up 1.00000 1.00000 14 hdd 0.02440 osd.14 up 1.00000 1.00000 20 hdd 0.02440 osd.20 up 1.00000 1.00000 -8 0.09760 host ceph-ci-fbv67y-ammmck-node6 4 hdd 0.02440 osd.4 up 1.00000 1.00000 9 hdd 0.02440 osd.9 up 1.00000 1.00000 15 hdd 0.02440 osd.15 up 1.00000 1.00000 21 hdd 0.02440 osd.21 up 1.00000 1.00000 -9 0.09760 host ceph-ci-fbv67y-ammmck-node7 1 hdd 0.02440 osd.1 up 1.00000 1.00000 7 hdd 0.02440 osd.7 up 1.00000 1.00000 13 hdd 0.02440 osd.13 up 1.00000 1.00000 19 hdd 0.02440 osd.19 up 1.00000 1.00000
ceph orch
명령을 실행하여 데이터 센터의 Ceph Object Gateway 데몬을 식별합니다.예
[ceph: root@host01 /]# ceph orch ps | grep rg rgw.rgw.1.ceph-ci-fbv67y-ammmck-node4.dmsmex ceph-ci-fbv67y-ammmck-node4 *:80 running (4h) 10m ago 22h 93.3M - 19.1.0-55.el9cp 0ee0a0ad94c7 34f27723ccd2 rgw.rgw.1.ceph-ci-fbv67y-ammmck-node7.pocecp ceph-ci-fbv67y-ammmck-node7 *:80 running (4h) 10m ago 22h 96.4M - 19.1.0-55.el9cp 0ee0a0ad94c7 40e4f2a6d4c4
Ceph Object Gateway 로그에서
vim
명령을 실행하여 기본 읽기가 수행되었는지 확인합니다.예
[ceph: root@host01 /]# vim /var/log/ceph/<fsid>/<ceph-client-rgw>.log 2024-08-26T08:07:45.471+0000 7fc623e63640 1 ====== starting new request req=0x7fc5b93694a0 ===== 2024-08-26T08:07:45.471+0000 7fc623e63640 1 -- 10.0.67.142:0/279982082 --> [v2:10.0.66.23:6816/73244434,v1:10.0.66.23:6817/73244434] -- osd_op(unknown.0.0:9081 11.55 11:ab26b168:::3acf4091-c54c-43b5-a495-c505fe545d25.27842.1_f1:head [getxattrs,stat] snapc 0=[] ondisk+read+localize_reads+known_if_redirected+supports_pool_eio e3533) -- 0x55f781bd2000 con 0x55f77f0e8c00
지역화된 읽기가 발생한 로그에서 확인할 수 있습니다.
중요디버그 로그를 보려면
ceph config set
명령을 실행하여 구성에서debug_ms 1
을 활성화해야 합니다.[ceph: root@host01 /]#ceph config set client.rgw.rgw.1.ceph-ci-gune2w-mysx73-node4.dgvrmx advanced debug_ms 1/1 [ceph: root@host01 /]#ceph config set client.rgw.rgw.1.ceph-ci-gune2w-mysx73-node7.rfkqqq advanced debug_ms 1/1
4.2.2. 균형 잡힌 읽기 수행
풀에서 균형 잡힌 읽기를 수행하여 데이터 센터에서 균등하게 분산된 OSD를 검색할 수 있습니다. 균형 잡힌 READ가 풀에서 발행되면 읽기 작업이 데이터 센터에 분배되는 모든 OSD에 균등하게 배포됩니다.
사전 요구 사항
- 두 개의 데이터 센터와 Ceph Object Gateway가 둘 다 구성된 확장 클러스터입니다.
- 버킷 및 OSD로 생성된 사용자(기본 및 복제된 OSD)입니다.
프로세스
균형 있는 읽기를 수행하려면
ceph config set
명령을 사용하여 OSD 데몬 구성에서rados_replica_read_policy
를 'balance'로 설정합니다.[ceph: root@host01 /]# ceph config set client.rgw.rgw.1 rados_replica_read_policy balance
verification: 다음 단계를 수행하여 OSD 세트에서 읽은 균형을 확인합니다.
ceph osd tree
명령을 실행하여 OSD 및 데이터 센터를 확인합니다.예
[ceph: root@host01 /]# ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.58557 root default -3 0.29279 datacenter DC1 -2 0.09760 host ceph-ci-fbv67y-ammmck-node2 2 hdd 0.02440 osd.2 up 1.00000 1.00000 11 hdd 0.02440 osd.11 up 1.00000 1.00000 17 hdd 0.02440 osd.17 up 1.00000 1.00000 22 hdd 0.02440 osd.22 up 1.00000 1.00000 -4 0.09760 host ceph-ci-fbv67y-ammmck-node3 0 hdd 0.02440 osd.0 up 1.00000 1.00000 6 hdd 0.02440 osd.6 up 1.00000 1.00000 12 hdd 0.02440 osd.12 up 1.00000 1.00000 18 hdd 0.02440 osd.18 up 1.00000 1.00000 -5 0.09760 host ceph-ci-fbv67y-ammmck-node4 5 hdd 0.02440 osd.5 up 1.00000 1.00000 10 hdd 0.02440 osd.10 up 1.00000 1.00000 16 hdd 0.02440 osd.16 up 1.00000 1.00000 23 hdd 0.02440 osd.23 up 1.00000 1.00000 -7 0.29279 datacenter DC2 -6 0.09760 host ceph-ci-fbv67y-ammmck-node5 3 hdd 0.02440 osd.3 up 1.00000 1.00000 8 hdd 0.02440 osd.8 up 1.00000 1.00000 14 hdd 0.02440 osd.14 up 1.00000 1.00000 20 hdd 0.02440 osd.20 up 1.00000 1.00000 -8 0.09760 host ceph-ci-fbv67y-ammmck-node6 4 hdd 0.02440 osd.4 up 1.00000 1.00000 9 hdd 0.02440 osd.9 up 1.00000 1.00000 15 hdd 0.02440 osd.15 up 1.00000 1.00000 21 hdd 0.02440 osd.21 up 1.00000 1.00000 -9 0.09760 host ceph-ci-fbv67y-ammmck-node7 1 hdd 0.02440 osd.1 up 1.00000 1.00000 7 hdd 0.02440 osd.7 up 1.00000 1.00000 13 hdd 0.02440 osd.13 up 1.00000 1.00000 19 hdd 0.02440 osd.19 up 1.00000 1.00000
ceph orch
명령을 실행하여 데이터 센터의 Ceph Object Gateway 데몬을 식별합니다.예
[ceph: root@host01 /]# ceph orch ps | grep rg rgw.rgw.1.ceph-ci-fbv67y-ammmck-node4.dmsmex ceph-ci-fbv67y-ammmck-node4 *:80 running (4h) 10m ago 22h 93.3M - 19.1.0-55.el9cp 0ee0a0ad94c7 34f27723ccd2 rgw.rgw.1.ceph-ci-fbv67y-ammmck-node7.pocecp ceph-ci-fbv67y-ammmck-node7 *:80 running (4h) 10m ago 22h 96.4M - 19.1.0-55.el9cp 0ee0a0ad94c7 40e4f2a6d4c4
Ceph Object Gateway 로그에서
vim
명령을 실행하여 균형 잡힌 읽기가 수행되었는지 확인합니다.예
[ceph: root@host01 /]# vim /var/log/ceph/<fsid>/<ceph-client-rgw>.log 2024-08-27T09:32:25.510+0000 7f2a7a284640 1 ====== starting new request req=0x7f2a31fcf4a0 ===== 2024-08-27T09:32:25.510+0000 7f2a7a284640 1 -- 10.0.67.142:0/3116867178 --> [v2:10.0.64.146:6816/2838383288,v1:10.0.64.146:6817/2838383288] -- osd_op(unknown.0.0:268731 11.55 11:ab26b168:::3acf4091-c54c-43b5-a495-c505fe545d25.27842.1_f1:head [getxattrs,stat] snapc 0=[] ondisk+read+balance_reads+known_if_redirected+supports_pool_eio e3554) -- 0x55cd1b88dc00 con 0x55cd18dd6000
로그에서 균형 잡힌 읽기가 수행되었음을 확인할 수 있습니다.
중요디버그 로그를 보려면
ceph config set
명령을 실행하여 구성에서debug_ms 1
을 활성화해야 합니다.[ceph: root@host01 /]#ceph config set client.rgw.rgw.1.ceph-ci-gune2w-mysx73-node4.dgvrmx advanced debug_ms 1/1 [ceph: root@host01 /]#ceph config set client.rgw.rgw.1.ceph-ci-gune2w-mysx73-node7.rfkqqq advanced debug_ms 1/1
4.2.3. 기본 읽기 수행
풀에서 기본 읽기를 수행하여 기본 데이터 센터에서 데이터를 검색할 수 있습니다. 기본 READ가 풀에서 발행되면 데이터 센터의 각 OSD에서 직접 IO 작업이 검색됩니다.
사전 요구 사항
- 두 개의 데이터 센터와 Ceph Object Gateway가 둘 다 구성된 확장 클러스터입니다.
- 버킷 및 OSD로 생성된 사용자(기본 및 복제된 OSD)입니다.
프로세스
기본 읽기를 수행하려면
ceph config set
명령을 사용하여 OSD 데몬 구성에서rados_replica_read_policy
를 'default'로 설정합니다.예
[ceph: root@host01 /]#ceph config set client.rgw.rgw.1 advanced rados_replica_read_policy default
데이터 센터에서 가장 가까운 OSD의 IO 작업은 GET 작업이 수행될 때 검색됩니다.
verification: 다음 단계를 수행하여 OSD 세트에서 지역화된 읽기를 확인합니다.
ceph osd tree
명령을 실행하여 OSD 및 데이터 센터를 확인합니다.예
[ceph: root@host01 /]# ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.58557 root default -3 0.29279 datacenter DC1 -2 0.09760 host ceph-ci-fbv67y-ammmck-node2 2 hdd 0.02440 osd.2 up 1.00000 1.00000 11 hdd 0.02440 osd.11 up 1.00000 1.00000 17 hdd 0.02440 osd.17 up 1.00000 1.00000 22 hdd 0.02440 osd.22 up 1.00000 1.00000 -4 0.09760 host ceph-ci-fbv67y-ammmck-node3 0 hdd 0.02440 osd.0 up 1.00000 1.00000 6 hdd 0.02440 osd.6 up 1.00000 1.00000 12 hdd 0.02440 osd.12 up 1.00000 1.00000 18 hdd 0.02440 osd.18 up 1.00000 1.00000 -5 0.09760 host ceph-ci-fbv67y-ammmck-node4 5 hdd 0.02440 osd.5 up 1.00000 1.00000 10 hdd 0.02440 osd.10 up 1.00000 1.00000 16 hdd 0.02440 osd.16 up 1.00000 1.00000 23 hdd 0.02440 osd.23 up 1.00000 1.00000 -7 0.29279 datacenter DC2 -6 0.09760 host ceph-ci-fbv67y-ammmck-node5 3 hdd 0.02440 osd.3 up 1.00000 1.00000 8 hdd 0.02440 osd.8 up 1.00000 1.00000 14 hdd 0.02440 osd.14 up 1.00000 1.00000 20 hdd 0.02440 osd.20 up 1.00000 1.00000 -8 0.09760 host ceph-ci-fbv67y-ammmck-node6 4 hdd 0.02440 osd.4 up 1.00000 1.00000 9 hdd 0.02440 osd.9 up 1.00000 1.00000 15 hdd 0.02440 osd.15 up 1.00000 1.00000 21 hdd 0.02440 osd.21 up 1.00000 1.00000 -9 0.09760 host ceph-ci-fbv67y-ammmck-node7 1 hdd 0.02440 osd.1 up 1.00000 1.00000 7 hdd 0.02440 osd.7 up 1.00000 1.00000 13 hdd 0.02440 osd.13 up 1.00000 1.00000 19 hdd 0.02440 osd.19 up 1.00000 1.00000
ceph orch
명령을 실행하여 데이터 센터의 Ceph Object Gateway 데몬을 식별합니다.예
ceph orch ps | grep rg rgw.rgw.1.ceph-ci-fbv67y-ammmck-node4.dmsmex ceph-ci-fbv67y-ammmck-node4 *:80 running (4h) 10m ago 22h 93.3M - 19.1.0-55.el9cp 0ee0a0ad94c7 34f27723ccd2 rgw.rgw.1.ceph-ci-fbv67y-ammmck-node7.pocecp ceph-ci-fbv67y-ammmck-node7 *:80 running (4h) 10m ago 22h 96.4M - 19.1.0-55.el9cp 0ee0a0ad94c7 40e4f2a6d4c4
Ceph Object Gateway 로그에서 vim 명령을 실행하여 기본 읽기가 수행되었는지 확인합니다.
예
[ceph: root@host01 /]# vim /var/log/ceph/<fsid>/<ceph-client-rgw>.log 2024-08-28T10:26:05.155+0000 7fe6b03dd640 1 ====== starting new request req=0x7fe6879674a0 ===== 2024-08-28T10:26:05.156+0000 7fe6b03dd640 1 -- 10.0.64.251:0/2235882725 --> [v2:10.0.65.171:6800/4255735352,v1:10.0.65.171:6801/4255735352] -- osd_op(unknown.0.0:1123 11.6d 11:b69767fc:::699c2d80-5683-43c5-bdcd-e8912107c176.24827.3_f1:head [getxattrs,stat] snapc 0=[] ondisk+read+known_if_redirected+supports_pool_eio e4513) -- 0x5639da653800 con 0x5639d804d800
로그에서 기본 읽기가 수행되었음을 확인할 수 있습니다.
중요디버그 로그를 보려면
ceph config set
명령을 실행하여 구성에서debug_ms 1
을 활성화해야 합니다.[ceph: root@host01 /]#ceph config set client.rgw.rgw.1.ceph-ci-gune2w-mysx73-node4.dgvrmx advanced debug_ms 1/1 [ceph: root@host01 /]#ceph config set client.rgw.rgw.1.ceph-ci-gune2w-mysx73-node7.rfkqqq advanced debug_ms 1/1