9.7. 버킷 관리
스토리지 관리자는 Ceph Object Gateway를 사용할 때 사용자 간에 이동하고 이름을 변경하여 버킷을 관리할 수 있습니다. 특정 이벤트에서 트리거하도록 버킷 알림을 생성할 수 있습니다. 또한 스토리지 클러스터의 수명 동안 발생할 수 있는 Ceph Object Gateway 내에서 고립되거나 누출된 오브젝트도 찾을 수 있습니다.
수집 속도가 높은 수백만 개의 오브젝트가 Ceph Object Gateway 버킷에 업로드되면 radosgw-admin 버킷 통계
명령을 사용하여 잘못된 num_objects
가 보고됩니다. radosgw-admin 버킷 목록
명령을 사용하면 num_objects
매개변수 값을 수정할 수 있습니다.
다중 사이트 클러스터에서 보조 사이트에서 버킷을 삭제해도 메타데이터 변경 사항이 기본 사이트와 동기화되지 않습니다. 따라서 Red Hat은 보조 사이트에서가 아닌 기본 사이트에서만 버킷을 삭제하는 것이 좋습니다.
9.7.1. 버킷 이름 변경
버킷의 이름을 바꿀 수 있습니다. 버킷 이름에 밑줄을 허용하려면 rgw_relaxed_s3_bucket_names
옵션을 true
로 설정합니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- Ceph Object Gateway 소프트웨어 설치.
- 기존 버킷입니다.
프로세스
버킷을 나열합니다.
예
[ceph: root@host01 /]# radosgw-admin bucket list [ "34150b2e9174475db8e191c188e920f6/swcontainer", "s3bucket1", "34150b2e9174475db8e191c188e920f6/swimpfalse", "c278edd68cfb4705bb3e07837c7ad1a8/ec2container", "c278edd68cfb4705bb3e07837c7ad1a8/demoten1", "c278edd68cfb4705bb3e07837c7ad1a8/demo-ct", "c278edd68cfb4705bb3e07837c7ad1a8/demopostup", "34150b2e9174475db8e191c188e920f6/postimpfalse", "c278edd68cfb4705bb3e07837c7ad1a8/demoten2", "c278edd68cfb4705bb3e07837c7ad1a8/postupsw" ]
버킷의 이름을 변경합니다.
구문
radosgw-admin bucket link --bucket=ORIGINAL_NAME --bucket-new-name=NEW_NAME --uid=USER_ID
예
[ceph: root@host01 /]# radosgw-admin bucket link --bucket=s3bucket1 --bucket-new-name=s3newb --uid=testuser
버킷이 테넌트 내에 있는 경우 테넌트도 지정합니다.
구문
radosgw-admin bucket link --bucket=tenant/ORIGINAL_NAME --bucket-new-name=NEW_NAME --uid=TENANT$USER_ID
예
[ceph: root@host01 /]# radosgw-admin bucket link --bucket=test/s3bucket1 --bucket-new-name=s3newb --uid=test$testuser
버킷의 이름이 변경되었는지 확인합니다.
예
[ceph: root@host01 /]# radosgw-admin bucket list [ "34150b2e9174475db8e191c188e920f6/swcontainer", "34150b2e9174475db8e191c188e920f6/swimpfalse", "c278edd68cfb4705bb3e07837c7ad1a8/ec2container", "s3newb", "c278edd68cfb4705bb3e07837c7ad1a8/demoten1", "c278edd68cfb4705bb3e07837c7ad1a8/demo-ct", "c278edd68cfb4705bb3e07837c7ad1a8/demopostup", "34150b2e9174475db8e191c188e920f6/postimpfalse", "c278edd68cfb4705bb3e07837c7ad1a8/demoten2", "c278edd68cfb4705bb3e07837c7ad1a8/postupsw" ]
9.7.2. 버킷 제거
Ceph Object Gateway 구성을 사용하여 Red Hat Ceph Storage 클러스터에서 버킷을 제거합니다.
버킷에 오브젝트가 없는 경우 radosgw-admin bucket rm
명령을 실행할 수 있습니다. 버킷에 오브젝트가 있는 경우 --purge-objects
옵션을 사용할 수 있습니다.
다중 사이트 구성의 경우 Red Hat은 기본 사이트에서 버킷을 삭제하는 것이 좋습니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- Ceph Object Gateway 소프트웨어 설치.
- 기존 버킷입니다.
프로세스
버킷을 나열합니다.
예
[ceph: root@host01 /]# radosgw-admin bucket list [ "34150b2e9174475db8e191c188e920f6/swcontainer", "s3bucket1", "34150b2e9174475db8e191c188e920f6/swimpfalse", "c278edd68cfb4705bb3e07837c7ad1a8/ec2container", "c278edd68cfb4705bb3e07837c7ad1a8/demoten1", "c278edd68cfb4705bb3e07837c7ad1a8/demo-ct", "c278edd68cfb4705bb3e07837c7ad1a8/demopostup", "34150b2e9174475db8e191c188e920f6/postimpfalse", "c278edd68cfb4705bb3e07837c7ad1a8/demoten2", "c278edd68cfb4705bb3e07837c7ad1a8/postupsw" ]
버킷을 제거합니다.
구문
radosgw-admin bucket rm --bucket=BUCKET_NAME
예
[ceph: root@host01 /]# radosgw-admin bucket rm --bucket=s3bucket1
버킷에 오브젝트가 있는 경우 다음 명령을 실행합니다.
구문
radosgw-admin bucket rm --bucket=BUCKET --purge-objects --bypass-gc
예
[ceph: root@host01 /]# radosgw-admin bucket rm --bucket=s3bucket1 --purge-objects --bypass-gc
--purge-objects
옵션은 objects를 제거하고--bypass-gc
옵션은 가비지 수집기 없이 오브젝트 삭제를 트리거하여 프로세스를 보다 효율적으로 만듭니다.버킷이 제거되었는지 확인합니다.
예
[ceph: root@host01 /]# radosgw-admin bucket list [ "34150b2e9174475db8e191c188e920f6/swcontainer", "34150b2e9174475db8e191c188e920f6/swimpfalse", "c278edd68cfb4705bb3e07837c7ad1a8/ec2container", "c278edd68cfb4705bb3e07837c7ad1a8/demoten1", "c278edd68cfb4705bb3e07837c7ad1a8/demo-ct", "c278edd68cfb4705bb3e07837c7ad1a8/demopostup", "34150b2e9174475db8e191c188e920f6/postimpfalse", "c278edd68cfb4705bb3e07837c7ad1a8/demoten2", "c278edd68cfb4705bb3e07837c7ad1a8/postupsw" ]
9.7.3. 버킷 이동
radosgw-admin 버킷
유틸리티는 사용자 간에 버킷을 이동하는 기능을 제공합니다. 이렇게 하려면 버킷을 새 사용자에게 연결하고 버킷의 소유권을 새 사용자로 변경합니다.
버킷을 이동할 수 있습니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- Ceph Object Gateway가 설치되어 있습니다.
- S3 버킷입니다.
- 테넌트 및 테넌트가 아닌 다양한 사용자.
9.7.3.1. 테넌트가 아닌 사용자 간에 버킷 이동
radosgw-admin 버킷 chown
명령은 버킷과 포함된 모든 오브젝트의 소유권을 한 사용자의 다른 사용자로 변경할 수 있는 기능을 제공합니다. 이를 수행하려면 현재 사용자의 버킷을 연결 해제하고 새 사용자에게 연결한 다음 버킷의 소유권을 새 사용자로 변경합니다.
프로세스
버킷을 새 사용자에게 연결합니다.
구문
radosgw-admin bucket link --uid=USER --bucket=BUCKET
예
[ceph: root@host01 /]# radosgw-admin bucket link --uid=user2 --bucket=data
버킷이
user2
에 성공적으로 연결되었는지 확인합니다.예
[ceph: root@host01 /]# radosgw-admin bucket list --uid=user2 [ "data" ]
버킷의 소유권을 새 사용자로 변경합니다.
구문
radosgw-admin bucket chown --uid=user --bucket=bucket
예
[ceph: root@host01 /]# radosgw-admin bucket chown --uid=user2 --bucket=data
다음 명령의 출력에서
owner
행을 확인하여데이터
버킷의 소유권이 성공적으로 변경되었는지 확인합니다.예
[ceph: root@host01 /]# radosgw-admin bucket list --bucket=data
9.7.3.2. 테넌트 사용자 간에 버킷 이동
테넌트된 사용자와 다른 사용자 간에 버킷을 이동할 수 있습니다.
프로세스
버킷을 새 사용자에게 연결합니다.
구문
radosgw-admin bucket link --bucket=CURRENT_TENANT/BUCKET --uid=NEW_TENANT$USER
예
[ceph: root@host01 /]# radosgw-admin bucket link --bucket=test/data --uid=test2$user2
버킷이
user2
에 성공적으로 연결되었는지 확인합니다.[ceph: root@host01 /]# radosgw-admin bucket list --uid=test$user2 [ "data" ]
버킷의 소유권을 새 사용자로 변경합니다.
구문
radosgw-admin bucket chown --bucket=NEW_TENANT/BUCKET --uid=NEW_TENANT$USER
예
[ceph: root@host01 /]# radosgw-admin bucket chown --bucket='test2/data' --uid='test$tuser2'
다음 명령의 출력에서
owner
행을 확인하여데이터
버킷의 소유권이 성공적으로 변경되었는지 확인합니다.[ceph: root@host01 /]# radosgw-admin bucket list --bucket=test2/data
9.7.3.3. 테넌트가 아닌 사용자의 버킷을 테넌트 사용자로 이동
테넌트가 아닌 사용자의 버킷을 테넌트 사용자로 이동할 수 있습니다.
프로세스
선택 사항: 테넌트가 여러 개 없는 경우
rgw_keystone_implicit_tenants
를 활성화하고 외부 테넌트에서 Ceph Object Gateway에 액세스하여 생성할 수 있습니다.rgw_keystone_implicit_tenants
옵션을 활성화합니다.예
[ceph: root@host01 /]# ceph config set client.rgw rgw_keystone_implicit_tenants true
s3cmd
또는swift
명령을 사용하여 테넌트에서 Ceph Object Gateway에 액세스합니다.예
[ceph: root@host01 /]# swift list
또는
s3cmd
를 사용하십시오.예
[ceph: root@host01 /]# s3cmd ls
외부 테넌트에서 첫 번째 액세스 권한은 동일한 Ceph Object Gateway 사용자를 생성합니다.
버킷을 테넌트 사용자로 이동합니다.
구문
radosgw-admin bucket link --bucket=/BUCKET --uid='TENANT$USER'
예
[ceph: root@host01 /]# radosgw-admin bucket link --bucket=/data --uid='test$tenanted-user'
데이터
버킷이tenanted-user
에 성공적으로 연결되었는지 확인합니다.예
[ceph: root@host01 /]# radosgw-admin bucket list --uid='test$tenanted-user' [ "data" ]
버킷의 소유권을 새 사용자로 변경합니다.
구문
radosgw-admin bucket chown --bucket='tenant/bucket name' --uid='tenant$user'
예
[ceph: root@host01 /]# radosgw-admin bucket chown --bucket='test/data' --uid='test$tenanted-user'
다음 명령의 출력에서
owner
행을 확인하여데이터
버킷의 소유권이 성공적으로 변경되었는지 확인합니다.예
[ceph: root@host01 /]# radosgw-admin bucket list --bucket=test/data
9.7.3.4. 고립 및 누출 오브젝트 찾기
정상적인 스토리지 클러스터에는 고립되거나 누출된 오브젝트가 없지만 경우에 따라 고립되거나 누출된 오브젝트가 발생할 수 있습니다.
스토리지 클러스터에 고립된 오브젝트가 있으며 RADOS 오브젝트와 연결된 오브젝트 ID가 있습니다. 그러나 버킷 인덱스 참조에 S3 개체가 있는 RADOS 오브젝트에 대한 참조는 없습니다. 예를 들어 작업 중간에 Ceph Object Gateway가 다운되면 일부 개체가 고립될 수 있습니다. 또한 발견되지 않은 버그로 인해 고립된 오브젝트가 발생할 수 있습니다.
Ceph Object Gateway 오브젝트가 RADOS 오브젝트에 매핑되는 방법을 확인할 수 있습니다. radosgw-admin
명령은 이러한 잠재적인 고립 또는 누출 오브젝트 목록을 검색하고 생성하는 툴을 제공합니다. radoslist
하위 명령을 사용하면 버킷 또는 스토리지 클러스터의 모든 버킷에 저장된 오브젝트가 표시됩니다. rgw-orphan-list
스크립트는 풀 내에 고립된 오브젝트를 표시합니다.
radoslist
하위 명령은 더 이상 사용되지 않는 orphans find
및 orphans finish
하위 명령을 대체합니다.
모든 오브젝트가 고립된 상태로 표시될 때 Indexless
버킷이 사용 중인 이 명령을 사용하지 마십시오
.
고립된 오브젝트를 식별하는 또 다른 방법은 rados -p <pool> ls | grep BUCKET_ID
명령을 실행하는 것입니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- 실행 중인 Ceph Object Gateway입니다.
프로세스
버킷 내에 데이터를 보관하는 오브젝트 목록을 생성합니다.
구문
radosgw-admin bucket radoslist --bucket BUCKET_NAME
예
[root@host01 ~]# radosgw-admin bucket radoslist --bucket mybucket
참고BUCKET_NAME 을 생략하면 모든 버킷의 모든 오브젝트가 표시됩니다.
rgw-orphan-list
의 버전을 확인합니다.예
[root@host01 ~]# head /usr/bin/rgw-orphan-list
버전은
2023-01-11
이상이어야 합니다.고립 목록을 생성해야 하는 디렉토리를 만듭니다.
예
[root@host01 ~]# mkdir orphans
이전에 만든 디렉터리로 이동합니다.
예
[root@host01 ~]# cd orphans
풀 목록에서 고립을 찾을 풀을 선택합니다. 이 스크립트는 클러스터의 오브젝트에 따라 오랫동안 실행될 수 있습니다.
예
[root@host01 orphans]# rgw-orphan-list
예
Available pools: .rgw.root default.rgw.control default.rgw.meta default.rgw.log default.rgw.buckets.index default.rgw.buckets.data rbd default.rgw.buckets.non-ec ma.rgw.control ma.rgw.meta ma.rgw.log ma.rgw.buckets.index ma.rgw.buckets.data ma.rgw.buckets.non-ec Which pool do you want to search for orphans?
고립을 검색할 풀 이름을 입력합니다.
중요메타데이터 풀이 아닌
rgw-orphan-list
명령을 사용할 때 데이터 풀을 지정해야 합니다.rgw-orphan-list
툴 사용량의 세부 정보를 확인합니다.Synatx
rgw-orphan-list -h rgw-orphan-list POOL_NAME /DIRECTORY
예
[root@host01 orphans]# rgw-orphan-list default.rgw.buckets.data /orphans 2023-09-12 08:41:14 ceph-host01 Computing delta... 2023-09-12 08:41:14 ceph-host01 Computing results... 10 potential orphans found out of a possible 2412 (0%). <<<<<<< orphans detected The results can be found in './orphan-list-20230912124113.out'. Intermediate files are './rados-20230912124113.intermediate' and './radosgw-admin-20230912124113.intermediate'. *** *** WARNING: This is EXPERIMENTAL code and the results should be used *** only with CAUTION! *** Done at 2023-09-12 08:41:14.
ls -l
명령을 실행하여 오류로 끝나는 파일이 문제 없이 실행되었음을 나타내는 0 길이여야 하는지 확인합니다.예
[root@host01 orphans]# ls -l -rw-r--r--. 1 root root 770 Sep 12 03:59 orphan-list-20230912075939.out -rw-r--r--. 1 root root 0 Sep 12 03:59 rados-20230912075939.error -rw-r--r--. 1 root root 248508 Sep 12 03:59 rados-20230912075939.intermediate -rw-r--r--. 1 root root 0 Sep 12 03:59 rados-20230912075939.issues -rw-r--r--. 1 root root 0 Sep 12 03:59 radosgw-admin-20230912075939.error -rw-r--r--. 1 root root 247738 Sep 12 03:59 radosgw-admin-20230912075939.intermediate
나열된 고립 오브젝트를 검토합니다.
예
[root@host01 orphans]# cat ./orphan-list-20230912124113.out a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.0 a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.1 a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.2 a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.3 a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.4 a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.5 a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.6 a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.7 a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.8 a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.9
고립 오브젝트를 제거합니다.
구문
rados -p POOL_NAME rm OBJECT_NAME
예
[root@host01 orphans]# rados -p default.rgw.buckets.data rm myobject
주의올바른 오브젝트를 제거 중인지 확인합니다.
rados rm
명령을 실행하면 스토리지 클러스터에서 데이터가 제거됩니다.
9.7.3.5. 버킷 인덱스 항목 관리
radosgw-admin 버킷 검사 하위 명령을 사용하여 Red Hat Ceph Storage 클러스터에서 Ceph Object Gateway의 버킷
인덱스 항목을 관리할 수 있습니다.
multipart 업로드 오브젝트 조각과 관련된 각 버킷 인덱스 항목은 해당 .meta
인덱스 항목과 일치합니다. 지정된 다중 파트 업로드에 대해 하나의 .meta
항목이 있어야 합니다. 조각에 대한 해당 .meta
항목을 찾지 못하면 출력의 섹션에 "orphaned" 조각 항목이 나열됩니다.
버킷의 통계는 버킷 인덱스 헤더에 저장됩니다. 이 단계에서는 해당 헤더를 로드하고 버킷 인덱스의 모든 일반 오브젝트 항목을 반복하고 통계를 다시 계산합니다. 그런 다음 "existing_header" 및 "calculated_header"라는 섹션에 실제 및 계산된 통계를 각각 표시하여 비교할 수 있습니다.
버킷 검사 하위 명령과 함께
인덱스에서 "orphaned" 항목을 제거하고 계산된 헤더의 기존 통계도 덮어씁니다. 이 경우 버전 관리에 사용되는 여러 항목을 포함한 모든 항목이 출력에 나열됩니다.
--fix
옵션을 사용하는 경우 버킷
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- 실행 중인 Ceph Object Gateway입니다.
- 새로 생성된 버킷입니다.
프로세스
특정 버킷의 버킷 인덱스를 확인합니다.
구문
radosgw-admin bucket check --bucket=BUCKET_NAME
예
[root@rgw ~]# radosgw-admin bucket check --bucket=mybucket
분리된 오브젝트 제거를 포함하여 버킷 인덱스의 불일치를 수정합니다.
구문
radosgw-admin bucket check --fix --bucket=BUCKET_NAME
예
[root@rgw ~]# radosgw-admin bucket check --fix --bucket=mybucket
9.7.3.6. 버킷 알림
버킷 알림은 버킷에서 특정 이벤트가 발생할 때 Ceph Object Gateway에서 정보를 보내는 방법을 제공합니다. 버킷 알림은 HTTP, AMQP0.9.1 및 Kafka 끝점으로 보낼 수 있습니다. 특정 버킷 및 특정 주제의 이벤트에 대한 버킷 알림을 보내려면 알림 항목을 생성해야 합니다. 버킷 알림은 이벤트 유형의 서브 세트에서 또는 기본적으로 모든 이벤트 유형에 대해 생성할 수 있습니다. 버킷 알림은 키 접두사 또는 접미사, 키와 일치하는 정규식, 오브젝트에 연결된 메타데이터 속성 또는 오브젝트 태그를 기반으로 이벤트를 필터링할 수 있습니다. 버킷 알림에는 버킷 알림 메커니즘에 대한 구성 및 제어 인터페이스를 제공하는 REST API가 있습니다.
버킷 알림 API는 기본적으로 활성화되어 있습니다. rgw_enable_apis
구성 매개 변수가 명시적으로 설정된 경우 s3
및 알림이
포함되어 있는지 확인합니다. 이를 확인하려면 ceph --admin-daemon /var/run/ceph/ceph-client.rgw.NAME.asok config get rgw_enable_apis
명령을 실행합니다. NAME 을 Ceph Object Gateway 인스턴스 이름으로 바꿉니다.
CLI를 사용한 주제 관리
Ceph Object Gateway 버킷에 대한 목록, 가져오기 및 제거를 관리할 수 있습니다.
항목 나열: 다음 명령을 실행하여 모든 주제의 구성을 나열합니다.
예
[ceph: host01 /]# radosgw-admin topic list
주제 가져오기: 다음 명령을 실행하여 특정 주제의 구성을 가져옵니다.
예
[ceph: host01 /]# radosgw-admin topic get --topic=topic1
Remove topics: 다음 명령을 실행하여 특정 주제의 구성을 제거합니다.
예
[ceph: host01 /]# radosgw-admin topic rm --topic=topic1
참고Ceph Object Gateway 버킷이 해당 주제로 구성된 경우에도 항목이 제거됩니다.
9.7.3.7. 버킷 알림 생성
버킷 수준에서 버킷 알림을 생성합니다. 알림 구성에는 Red Hat Ceph Storage Object Gateway S3 이벤트, ObjectCreated
,ObjectRemoved
, ObjectLifecycle:Expiration
이 있습니다. 버킷 알림을 보내려면 대상과 게시해야 합니다. 버킷 알림은 S3 작업입니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- 실행 중인 HTTP 서버, RabbitMQ 서버 또는 Kafka 서버.
- 루트 수준 액세스.
- Red Hat Ceph Storage Object Gateway 설치
- 사용자 액세스 키 및 시크릿 키.
- 엔드포인트 매개 변수.
Red Hat은 put
,post
,multipartUpload
와 같은 ObjectCreate
이벤트를 지원합니다
. Red Hat은 object_delete
및 s3_multi_object_delete
와 같은 ObjectRemove
이벤트도 지원합니다.
프로세스
- S3 버킷을 생성합니다.
-
http
,amqp
또는kafka
프로토콜에 대한 Cryostat 주제를 만듭니다. s3:objectCreate
,s3:objectRemove
,s3:ObjectLifecycle:Expiration
이벤트에 대한 S3 버킷 알림을 생성합니다.예
client.put_bucket_notification_configuration( Bucket=bucket_name, NotificationConfiguration={ 'TopicConfigurations': [ { 'Id': notification_name, 'TopicArn': topic_arn, 'Events': ['s3:ObjectCreated:*', 's3:ObjectRemoved:*', 's3:ObjectLifecycle:Expiration:*'] }]})
- 버킷에 S3 오브젝트를 생성합니다.
-
http
,rabbitmq
또는kafka
수신자에서 오브젝트 생성 이벤트를 확인합니다. - 오브젝트를 삭제합니다.
-
http
,rabbitmq
또는kafka
수신자에서 오브젝트 삭제 이벤트를 확인합니다.
9.7.4. S3 버킷 복제 API
S3 버킷 복제 API가 구현되고 사용자가 다양한 버킷 간에 복제 규칙을 생성할 수 있습니다. AWS 복제 기능은 동일한 영역 내에서 버킷 복제를 허용하지만 Ceph Object Gateway에서는 현재 이를 허용하지 않습니다. 그러나 Ceph Object Gateway API에는 사용자가 특정 버킷을 동기화할 영역을 선택할 수 있는 Zone
배열도 추가되었습니다.
9.7.4.1. S3 버킷 복제 생성
버킷에 대한 복제 구성을 생성하거나 기존 구성을 교체합니다.
복제 구성에는 하나 이상의 규칙이 포함되어야 합니다. 각 규칙은 소스 버킷의 오브젝트를 필터링하여 복제할 오브젝트 서브 세트를 식별합니다.
사전 요구 사항
- 다중 사이트 Ceph 개체 게이트웨이가 구성된 실행 중인 Red Hat Ceph Storage 클러스터입니다. 다중 사이트 동기화 정책 생성에 대한 자세한 내용은 동기화 정책 그룹 생성을 참조하십시오.
- 영역 그룹 수준 정책이 생성되었습니다. 영역 그룹 정책 생성에 대한 자세한 내용은 Bucket 세분화된 동기화 정책을 참조하십시오.
프로세스
복제의 세부 정보가 포함된 복제 구성 파일을 만듭니다.
구문
{ "Role": "arn:aws:iam::account-id:role/role-name", "Rules": [ { "ID": "String", "Status": "Enabled", "Priority": 1, "DeleteMarkerReplication": { "Status": "Enabled"|"Disabled" }, "Destination": { "Bucket": "BUCKET_NAME" } } ] }
예
[root@host01 ~]# cat replication.json { "Role": "arn:aws:iam::account-id:role/role-name", "Rules": [ { "ID": "pipe-bkt", "Status": "Enabled", "Priority": 1, "DeleteMarkerReplication": { "Status": "Disabled" }, "Destination": { "Bucket": "testbucket" } } ] }
S3 API put bucket 복제를 생성합니다.
구문
aws --endpoint-url=RADOSGW_ENDPOINT_URL s3api put-bucket-replication --bucket BUCKET_NAME --replication-configuration file://REPLICATION_CONFIIRATION_FILE.json
예
[root@host01 ~]# aws --endpoint-url=http://host01:80 s3api put-bucket-replication --bucket testbucket --replication-configuration file://replication.json
검증
동기화 정책
get 명령을 사용하여 동기화 정책을
확인합니다.구문
radosgw-admin sync policy get --bucket BUCKET_NAME
참고복제 정책을 적용할 때 규칙은 파이프 라고 하는 sync-policy 규칙으로 변환되며
활성화 및
분류됩니다.비활성화
됨으로-
enabled: 이 파이프는 활성화되고 활성 상태이며 그룹 상태는 'rgw_sync_policy_group:STATUS'로 설정됩니다. 예를 들어
s3-bucket-replication:enabled
. -
disabled: 이 세트의 파이프는 활성 상태가 아니며 그룹 상태는 'rgw_sync_policy_group:STATUS'로 설정됩니다. 예를 들어
s3-bucket-replication:disabled
.
복제 정책의 일부로 구성할 수 있는 규칙이 여러 개 있을 수 있으므로 각 그룹의 정확한 매핑을 위해 두 개의 개별 그룹('enabled' 및 '허용됨' 상태의 다른 그룹)이 있습니다.
예
[ceph: root@host01 /]# radosgw-admin sync policy get --bucket testbucket { "groups": [ { "id": "s3-bucket-replication:disabled", "data_flow": {}, "pipes": [], "status": "allowed" }, { "id": "s3-bucket-replication:enabled", "data_flow": {}, "pipes": [ { "id": "", "source": { "bucket": "*", "zones": [ "*" ] }, "dest": { "bucket": "testbucket", "zones": [ "*" ] }, "params": { "source": {}, "dest": {}, "priority": 1, "mode": "user", "user": "s3cmd" } } ], "status": "enabled" } ] }
-
enabled: 이 파이프는 활성화되고 활성 상태이며 그룹 상태는 'rgw_sync_policy_group:STATUS'로 설정됩니다. 예를 들어
추가 리소스
- 자세한 내용은 Red Hat Ceph Storage Object Gateway 가이드 의 다중 사이트 동기화 정책 사용 섹션을 참조하십시오.
9.7.4.2. S3 버킷 복제 가져오기
버킷의 복제 구성을 검색할 수 있습니다.
사전 요구 사항
- 다중 사이트 Ceph 개체 게이트웨이가 구성된 실행 중인 Red Hat Ceph Storage 클러스터입니다. 다중 사이트 동기화 정책 생성에 대한 자세한 내용은 동기화 정책 그룹 생성을 참조하십시오.
- 영역 그룹 수준 정책이 생성되었습니다. 영역 그룹 정책 생성에 대한 자세한 내용은 Bucket 세분화된 동기화 정책을 참조하십시오.
- S3 버킷 복제가 생성되었습니다. 자세한 내용은 S3 버킷 복제 API 를 참조하십시오.
프로세스
S3 API put 버킷 복제를 가져옵니다.
구문
aws s3api get-bucket-replication --bucket BUCKET_NAME --endpoint-url=RADOSGW_ENDPOINT_URL
예
[root@host01 ~]# aws s3api get-bucket-replication --bucket testbucket --endpoint-url=http://host01:80 { "ReplicationConfiguration": { "Role": "", "Rules": [ { "ID": "pipe-bkt", "Status": "Enabled", "Priority": 1, "Destination": { Bucket": "testbucket" } } ] } }
9.7.4.3. S3 버킷 복제 삭제
버킷에서 복제 구성을 삭제합니다.
버킷 소유자는 다른 사용자에게 복제 구성을 제거할 수 있는 권한을 부여할 수 있습니다.
사전 요구 사항
- 다중 사이트 Ceph 개체 게이트웨이가 구성된 실행 중인 Red Hat Ceph Storage 클러스터입니다. 다중 사이트 동기화 정책 생성에 대한 자세한 내용은 동기화 정책 그룹 생성을 참조하십시오.
- 영역 그룹 수준 정책이 생성되었습니다. 영역 그룹 정책 생성에 대한 자세한 내용은 Bucket 세분화된 동기화 정책을 참조하십시오.
- S3 버킷 복제가 생성되었습니다. 자세한 내용은 S3 버킷 복제 API 를 참조하십시오.
프로세스
S3 API put 버킷 복제를 삭제합니다.
구문
aws s3api delete-bucket-replication --bucket BUCKET_NAME --endpoint-url=RADOSGW_ENDPOINT_URL
예
[root@host01 ~]# aws s3api delete-bucket-replication --bucket testbucket --endpoint-url=http://host01:80
검증
기존 복제 규칙이 삭제되었는지 확인합니다.
구문
radosgw-admin sync policy get --bucket=BUCKET_NAME
예
[ceph: root@host01 /]# radosgw-admin sync policy get --bucket=testbucket
9.7.4.4. 사용자의 S3 버킷 복제 비활성화
관리자는 다른 사용자가 해당 특정 사용자/사용자 아래에 있는 버킷에서 s3 복제 API 작업 수행을 제한하도록 사용자 정책을 설정할 수 있습니다.
사전 요구 사항
- 다중 사이트 Ceph 개체 게이트웨이가 구성된 실행 중인 Red Hat Ceph Storage 클러스터입니다. 다중 사이트 동기화 정책 생성에 대한 자세한 내용은 동기화 정책 그룹 생성을 참조하십시오.
- 영역 그룹 수준 정책이 생성되었습니다. 영역 그룹 정책 생성에 대한 자세한 내용은 Bucket 세분화된 동기화 정책을 참조하십시오.
프로세스
S3 버킷 복제 API에 대한 액세스를 거부하려면 사용자 정책 구성 파일을 생성합니다.
예
[root@host01 ~]# cat user_policy.json { "Version":"2012-10-17", "Statement": { "Effect":"Deny", "Action": [ "s3:PutReplicationConfiguration", "s3:GetReplicationConfiguration", "s3:DeleteReplicationConfiguration" ], "Resource": "arn:aws:s3:::*", } }
관리자 권한으로 S3 API에 대한 사용자 액세스를 비활성화하려면 사용자 정책을 user로 설정합니다.
구문
aws --endpoint-url=ENDPOINT_URL iam put-user-policy --user-name USER_NAME --policy-name USER_POLICY_NAME --policy-document POLICY_DOCUMENT_PATH
예
[root@host01 ~]# aws --endpoint-url=http://host01:80 iam put-user-policy --user-name newuser1 --policy-name userpolicy --policy-document file://user_policy.json
검증
관리자로서 사용자 정책이 설정되었는지 확인합니다.
구문
aws --endpoint-url=ENDPOINT_URL iam get-user-policy --user-name USER_NAME --policy-name USER_POLICY_NAME --region us
예
[root@host01 ~]# aws --endpoint-url=http://host01:80 iam get-user-policy --user-name newuser1 --policy-name userpolicy --region us
admin 사용자가 사용자 정책을 설정하는 사용자로 S3 버킷 복제 API 작업 아래 작업을 수행하여 작업이 예상대로 거부되는지 확인합니다.
추가 리소스
- 자세한 내용은 Red Hat Ceph Storage Object Gateway 가이드 의 S3 버킷 복제 API 섹션을 참조하십시오.