9.11. 데이터 수집에 대한 속도 제한
스토리지 관리자는 Ceph Object Gateway 구성으로 Red Hat Ceph Storage 클러스터에 오브젝트를 저장할 때 작업 및 대역폭을 기반으로 사용자와 버킷에 대한 속도 제한을 설정할 수 있습니다.
9.11.1. 스토리지 클러스터의 속도 제한의 목적
Ceph Object Gateway 구성에서 사용자 및 버킷에 대한 속도 제한을 설정할 수 있습니다. 속도 제한에는 최대 읽기 작업 수, 분당 쓰기 작업 수 및 사용자당 또는 버킷당 읽기/분당 바이트 수가 포함됩니다.
REST에서 GET 또는 HEAD 메서드를 사용하는 요청은 "읽기 요청"이고, 그 요청은 "쓰기 요청"입니다.
Ceph Object Gateway는 사용자 및 버킷 요청을 별도로 추적하고 다른 게이트웨이와 공유하지 않습니다. 즉, 구성된 원하는 제한을 활성 Object Gateway 수로 나누어야 합니다.
예를 들어, 사용자 A를 분당 10개의 ops로 제한해야 하고 클러스터에 두 개의 Ceph Object Gateway가 있는 경우 사용자 A에 대한 제한은 5개, 즉 두 개의 Ceph Object Gateway의 분당 10개의 ops가 있어야 합니다. Ceph Object Gateway 간에 요청의 균형을 조정하지 않으면 속도 제한이 악용되지 않을 수 있습니다. 예를 들어 ops 제한이 5개이고 Ceph Object Gateway 두 개가 있지만 로드 밸런서에서 해당 Ceph Object Gateway 중 하나에만 부하를 보내는 경우 Ceph Object Gateway마다 이 제한이 적용되므로 유효 제한은 5개의 ops가 됩니다.
버킷에 대해 제한에 도달했지만 사용자를 위해 도달하지 않거나 그 반대의 경우 요청도 취소됩니다.
대역폭 계산은 요청이 승인된 후 수행됩니다. 결과적으로 이 요청은 요청 중 버킷 또는 사용자가 대역폭 제한에 도달한 경우에도 진행됩니다.
Ceph Object Gateway는 구성된 값보다 사용된 바이트의 "debt"를 유지하고, "debt"가 지불될 때까지 이 사용자 또는 버킷이 더 많은 요청을 전송하지 못하도록 합니다. "debt" 최대 크기는 분당 max-read/write-bytes의 두 배입니다. 사용자 A에 분당 1바이트 읽기 제한이 있고 이 사용자가 1GB 오브젝트를 가져오려고 하면 사용자가 수행할 수 있습니다.
사용자 A가 이 1GB 작업을 완료하면 사용자 A가 GET 요청을 다시 보낼 수 있을 때까지 Ceph Object Gateway에서 최대 2분 동안 사용자 요청을 차단합니다.
속도 제한에 대한 다양한 옵션:
-
버킷:
--bucket
옵션을 사용하면 버킷에 대한 속도 제한을 지정할 수 있습니다. -
user:
--uid
옵션을 사용하면 사용자의 속도 제한을 지정할 수 있습니다. -
최대 읽기 작업:
--max-read-ops
설정을 사용하면 Ceph Object Gateway당 분당 최대 읽기 ops 수를 지정할 수 있습니다. 값이0
이면 이 설정이 비활성화됩니다. 즉, 무제한 액세스를 의미합니다. -
최대 읽기 바이트:
--max-read-bytes
설정을 사용하면 Ceph Object Gateway당 분당 최대 읽기 바이트 수를 지정할 수 있습니다. 값이0
이면 이 설정이 비활성화됩니다. 즉, 무제한 액세스를 의미합니다. -
최대 쓰기 작업:
--max-write-ops
설정을 사용하면 Ceph Object Gateway당 분당 최대 쓰기 작업 수를 지정할 수 있습니다. 값이0
이면 이 설정이 비활성화됩니다. 즉, 무제한 액세스를 의미합니다. -
최대 쓰기 바이트:
--max-write-bytes
설정을 사용하면 Ceph Object Gateway당 분당 최대 쓰기 바이트 수를 지정할 수 있습니다. 값이0
이면 이 설정이 비활성화됩니다. 즉, 무제한 액세스를 의미합니다. -
rate limit 범위:
--rate-limit-scope
옵션은 속도 제한 범위를 설정합니다. 옵션은버킷
,사용자
및익명
입니다. 버킷 속도 제한은 버킷에 적용되며, 사용자 속도 제한이 사용자에게 적용되며, 인증되지 않은 사용자에게 익명이 적용됩니다. 익명 범위는 글로벌 속도 제한에서만 사용할 수 있습니다.
9.11.2. 사용자 속도 제한 활성화
Ceph Object Gateway 구성에서 사용자에 대한 속도 제한을 설정할 수 있습니다. 사용자의 속도 제한에는 최대 읽기 작업 수, 분당 쓰기 작업 수, 사용자당 쓰기 또는 읽을 수 있는 분당 바이트 수가 포함됩니다.
ratelimit-scope
가 사용자로 설정된 radosgw-admin ratelimit set
명령을 사용하여 속도 제한 값을 설정한 후 사용자에
게 속도 제한을 활성화할 수 있습니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- Ceph Object Gateway가 설치되어 있어야 합니다.
프로세스
사용자의 유량 제한을 설정합니다.
구문
radosgw-admin ratelimit set --ratelimit-scope=user --uid=USER_ID [--max-read-ops=NUMBER_OF_OPERATIONS] [--max-read-bytes=NUMBER_OF_BYTES] [--max-write-ops=NUMBER_OF_OPERATIONS] [--max-write-bytes=NUMBER_OF_BYTES]
예
[ceph: root@host01 /]# radosgw-admin ratelimit set --ratelimit-scope=user --uid=testing --max-read-ops=1024 --max-write-bytes=10240
NUMBER_OF_OPERATIONS 또는 NUMBER_OF_BYTES 의 경우
0
값은 특정 속도 제한 특성 검사가 비활성화되어 있음을 의미합니다.사용자 속도 제한을 가져옵니다.
구문
radosgw-admin ratelimit get --ratelimit-scope=user --uid=USER_ID
예
[ceph: root@host01 /]# radosgw-admin ratelimit get --ratelimit-scope=user --uid=testing { "user_ratelimit": { "max_read_ops": 1024, "max_write_ops": 0, "max_read_bytes": 0, "max_write_bytes": 10240, "enabled": false } }
사용자 속도 제한을 활성화합니다.
구문
radosgw-admin ratelimit enable --ratelimit-scope=user --uid=USER_ID
예
[ceph: root@host01 /]# radosgw-admin ratelimit enable --ratelimit-scope=user --uid=testing { "user_ratelimit": { "max_read_ops": 1024, "max_write_ops": 0, "max_read_bytes": 0, "max_write_bytes": 10240, "enabled": true } }
선택 사항: 사용자 속도 제한을 비활성화합니다.
구문
radosgw-admin ratelimit disable --ratelimit-scope=user --uid=USER_ID
예
[ceph: root@host01 /]# radosgw-admin ratelimit disable --ratelimit-scope=user --uid=testing
9.11.3. 버킷 속도 제한 활성화
Ceph Object Gateway 구성에서 버킷에 대한 속도 제한을 설정할 수 있습니다. 버킷의 속도 제한에는 최대 읽기 작업 수, 분당 쓰기 작업 수, 사용자당 쓰기 또는 읽을 수 있는 분당 바이트 수가 포함됩니다.
ratelimit-scope
가 버킷으로 설정된 radosgw-admin ratelimit set
명령을 사용하여 속도 제한 값을 설정한 후 버킷에
속도 제한을 활성화할 수 있습니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- Ceph Object Gateway가 설치되어 있어야 합니다.
프로세스
버킷의 속도 제한을 설정합니다.
구문
radosgw-admin ratelimit set --ratelimit-scope=bucket --bucket= BUCKET_NAME [--max-read-ops=NUMBER_OF_OPERATIONS] [--max-read-bytes=NUMBER_OF_BYTES] [--max-write-ops=NUMBER_OF_OPERATIONS] [--max-write-bytes=NUMBER_OF_BYTES]
예
[ceph: root@host01 /]# radosgw-admin ratelimit set --ratelimit-scope=bucket --bucket=mybucket --max-read-ops=1024 --max-write-bytes=10240
NUMBER_OF_OPERATIONS 또는 NUMBER_OF_BYTES 의 경우
0
값은 특정 속도 제한 특성 검사가 비활성화되어 있음을 의미합니다.버킷 속도 제한을 가져옵니다.
구문
radosgw-admin ratelimit get --ratelimit-scope=bucket --bucket=BUCKET_NAME
예
[ceph: root@host01 /]# radosgw-admin ratelimit get --ratelimit-scope=bucket --bucket=mybucket { "bucket_ratelimit": { "max_read_ops": 1024, "max_write_ops": 0, "max_read_bytes": 0, "max_write_bytes": 10240, "enabled": false } }
버킷 속도 제한을 활성화합니다.
구문
radosgw-admin ratelimit enable --ratelimit-scope=bucket --bucket=BUCKET_NAME
예
[ceph: root@host01 /]# radosgw-admin ratelimit enable --ratelimit-scope=bucket --bucket=mybucket { "bucket_ratelimit": { "max_read_ops": 1024, "max_write_ops": 0, "max_read_bytes": 0, "max_write_bytes": 10240, "enabled": true } }
선택 사항: 버킷 속도 제한을 비활성화합니다.
구문
radosgw-admin ratelimit disable --ratelimit-scope=bucket --bucket=BUCKET_NAME
예
[ceph: root@host01 /]# radosgw-admin ratelimit disable --ratelimit-scope=bucket --bucket=mybucket
9.11.4. 글로벌 속도 제한 구성
기간 구성에서 글로벌 속도 제한 설정을 읽거나 쓸 수 있습니다. ratelimit 세트 ,
설정을 조작하여 사용자 또는 버킷 속도 제한 구성을 덮어쓸 수 있습니다.
ratelimit enable
, ratelimit enable 및 ratelimit disable
명령인 global ratelimit
매개변수를 사용하여 글로벌 속도 제한
영역과 기간이 있는 다중 사이트 구성에서 글로벌 속도 제한에 대한 변경 사항을 period update --commit
명령을 사용하여 커밋해야 합니다. 기간이 없는 경우 변경 사항을 적용하려면 Ceph Object Gateway를 다시 시작해야 합니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- Ceph Object Gateway가 설치되어 있어야 합니다.
프로세스
글로벌 속도 제한 설정을 확인합니다.
구문
radosgw-admin global ratelimit get
예
[ceph: root@host01 /]# radosgw-admin global ratelimit get { "bucket_ratelimit": { "max_read_ops": 1024, "max_write_ops": 0, "max_read_bytes": 0, "max_write_bytes": 0, "enabled": false }, "user_ratelimit": { "max_read_ops": 0, "max_write_ops": 0, "max_read_bytes": 0, "max_write_bytes": 0, "enabled": false }, "anonymous_ratelimit": { "max_read_ops": 0, "max_write_ops": 0, "max_read_bytes": 0, "max_write_bytes": 0, "enabled": false } }
버킷에 대한 속도 제한 범위를 구성하고 활성화합니다.
버킷에 대한 글로벌 속도 제한을 설정합니다.
구문
radosgw-admin global ratelimit set --ratelimit-scope=bucket [--max-read-ops=NUMBER_OF_OPERATIONS] [--max-read-bytes=NUMBER_OF_BYTES] [--max-write-ops=NUMBER_OF_OPERATIONS] [--max-write-bytes=NUMBER_OF_BYTES]
예
[ceph: root@host01 /]# radosgw-admin global ratelimit set --ratelimit-scope bucket --max-read-ops=1024
버킷 속도 제한을 활성화합니다.
구문
radosgw-admin global ratelimit enable --ratelimit-scope=bucket
예
[ceph: root@host01 /]# radosgw-admin global ratelimit enable --ratelimit-scope bucket
인증된 사용자의 속도 제한 범위를 구성하고 활성화합니다.
사용자의 글로벌 속도 제한을 설정합니다.
구문
radosgw-admin global ratelimit set --ratelimit-scope=user [--max-read-ops=NUMBER_OF_OPERATIONS] [--max-read-bytes=NUMBER_OF_BYTES] [--max-write-ops=NUMBER_OF_OPERATIONS] [--max-write-bytes=NUMBER_OF_BYTES]
예
[ceph: root@host01 /]# radosgw-admin global ratelimit set --ratelimit-scope=user --max-read-ops=1024
사용자 속도 제한을 활성화합니다.
구문
radosgw-admin global ratelimit enable --ratelimit-scope=user
예
[ceph: root@host01 /]# radosgw-admin global ratelimit enable --ratelimit-scope=user
인증되지 않은 사용자의 속도 제한 범위를 구성하고 활성화합니다.
인증되지 않은 사용자의 글로벌 속도 제한을 설정합니다.
구문
radosgw-admin global ratelimit set --ratelimit-scope=anonymous [--max-read-ops=NUMBER_OF_OPERATIONS] [--max-read-bytes=NUMBER_OF_BYTES] [--max-write-ops=NUMBER_OF_OPERATIONS] [--max-write-bytes=NUMBER_OF_BYTES]
예
[ceph: root@host01 /]# radosgw-admin global ratelimit set --ratelimit-scope=anonymous --max-read-ops=1024
사용자 속도 제한을 활성화합니다.
구문
radosgw-admin global ratelimit enable --ratelimit-scope=anonymous
예
[ceph: root@host01 /]# radosgw-admin global ratelimit enable --ratelimit-scope=anonymous