Pulsar와 함께 Azure BlobStore offloader 사용하기
Pulsar와 함께 Azure BlobStore offloader 사용하기 (Use Azure BlobStore offloader with Pulsar)
이 장은 Azure BlobStore offloader를 설치·구성하고 Pulsar에서 사용하는 모든 단계를 안내해요. Azure Blob Storage로 데이터를 오프로딩해 장기·저렴한 저장소를 활용하고 싶을 때 필요해요.
출처: 문서
본문
설치 (Installation)
사전 준비 (Prerequisite)
- Pulsar: 2.6.2 이상 버전
단계 (Steps)
Azure BlobStore offloader를 설치하려면 아래 단계를 따라요.
- Pulsar tarball 다운로드.
- Pulsar offloaders 패키지를 다운로드·압축 해제한 뒤 Pulsar 디렉터리에
offloaders로 복사해요. 계층형 저장소 offloader 설치 참고.
구성 (Configuration)
note BookKeeper에서 Azure BlobStore로 데이터를 오프로딩하기 전에 Azure BlobStore offload 드라이버의 일부 속성을 구성해야 해요.
또한 Azure BlobStore offloader가 자동으로 실행되도록 구성하거나 수동으로 트리거할 수도 있어요.
Azure BlobStore offloader 드라이버 구성 (Configure Azure BlobStore offloader driver)
구성 파일 broker.conf 또는 standalone.conf에서 Azure BlobStore offloader 드라이버를 구성할 수 있어요.
- 필수(Required) 구성은 다음과 같아요.
| 필수 구성 | 설명 | 예시 값 |
| managedLedgerOffloadDriver | Offloader 드라이버 이름 | azureblob |
| offloadersDirectory | Offloader 디렉터리 | offloaders |
| managedLedgerOffloadBucket | 버킷 | pulsar-topic-offload |
- 선택(Optional) 구성은 다음과 같아요.
| 선택 | 설명 | 예시 값 |
| managedLedgerOffloadReadBufferSizeInBytes | 읽기 블록 크기 | 1 MB |
| managedLedgerOffloadMaxBlockSizeInBytes | 쓰기 블록 크기 | 64 MB |
| managedLedgerMinLedgerRolloverTimeMinutes | 토픽의 원장 롤오버 사이 최소 시간
참고: 프로덕션 환경에서는 이 구성을 설정하지 않는 것을 권장해요. | 10 |
| managedLedgerMaxEntriesPerLedger | 롤오버 전에 원장에 추가할 최대 항목 수.
참고: 프로덕션 환경에서는 이 구성을 설정하지 않는 것을 권장해요. | 50000 |
버킷 (Bucket) (필수)
버킷은 데이터를 담는 기본 컨테이너예요. Azure BlobStore에 저장하는 모든 것은 버킷에 포함되어야 해요. 버킷으로 데이터를 구성하고 접근을 제어할 수 있지만, 디렉터리·폴더와 달리 버킷은 중첩할 수 없어요.
예시 (Example)
이 예시는 버킷 이름을 pulsar-topic-offload로 정해요.
managedLedgerOffloadBucket=pulsar-topic-offload
인증 (Authentication) (필수)
Azure BlobStore에 접근하려면 Azure BlobStore와 인증해야 해요.
conf/pulsar_env.sh에서 환경 변수AZURE_STORAGE_ACCOUNT와AZURE_STORAGE_ACCESS_KEY를 설정. 하위 프로세스 환경에서 변수를 사용할 수 있게 하려면 "export"가 중요해요.
export AZURE_STORAGE_ACCOUNT=ABC123456789
export AZURE_STORAGE_ACCESS_KEY=ded7db27a4558e2ea8bbf0bf37ae0e8521618f366c
블록 읽기/쓰기 크기 (Size of block read/write)
구성 파일 broker.conf 또는 standalone.conf에서 Azure BlobStore로 보내거나 읽는 요청의 크기를 구성할 수 있어요.
| 구성 | 설명 | 기본값 |
| managedLedgerOffloadReadBufferSizeInBytes | Azure BlobStore 저장소에서 데이터를 다시 읽을 때 각 개별 읽기의 블록 크기. | 1 MB |
| managedLedgerOffloadMaxBlockSizeInBytes | Azure BlobStore 저장소에 멀티파트 업로드 중 보내는 "part"의 최대 크기. 5 MB보다 작을 수 없어요. | 64 MB |
Azure BlobStore offloader를 자동으로 실행하도록 구성 (Configure Azure BlobStore offloader to run automatically)
네임스페이스 정책을 구성하면 임계값에 도달했을 때 데이터를 자동으로 오프로딩하도록 할 수 있어요. 임계값은 토픽이 Pulsar 클러스터에 저장한 데이터 크기에 기반해요. 토픽이 임계값에 도달하면 오프로딩 작업이 자동으로 트리거돼요.
| 임계값 | 동작 | | > 0 | 토픽 저장소가 임계값에 도달하면 오프로딩 작업을 트리거해요. | | = 0 | 브로커가 가능한 한 빨리 데이터를 오프로딩하게 해요. | | < 0 | 자동 오프로딩 작업을 비활성화해요. |
자동 오프로딩은 새 세그먼트가 토픽 로그에 추가될 때 실행돼요. 네임스페이스에 임계값을 설정했지만 토픽에 생성되는 메시지가 적다면, 현재 세그먼트가 가득 차기 전까지 offloader는 동작하지 않아요.
pulsar-admin 같은 CLI 도구로 임계값 크기를 구성할 수 있어요.
broker.conf와 standalone.conf의 offload 구성은 네임스페이스 레벨 오프로드 정책이 없는 네임스페이스에 사용돼요. 각 네임스페이스는 고유한 offload 정책을 가질 수 있어요. 네임스페이스별 offload 정책을 설정하려면 pulsar-admin namespaces set-offload-policies options 명령을 사용해요.
예시 (Example)
이 예시는 pulsar-admin으로 Azure BlobStore offloader 임계값 크기를 10 MB로 설정해요.
bin/pulsar-admin namespaces set-offload-threshold --size 10M my-tenant/my-namespace
tip
pulsar-admin namespaces set-offload-threshold options명령에 대한 자세한 내용(플래그, 설명, 기본값 포함)은 Pulsar admin docs를 참고해요.
Azure BlobStore offloader를 수동으로 실행하도록 구성 (Configure Azure BlobStore offloader to run manually)
개별 토픽에 대해 다음 방법 중 하나로 Azure BlobStore offloader를 수동으로 트리거할 수 있어요.
- REST 엔드포인트 사용.
- CLI 도구(예: pulsar-admin) 사용.
CLI 도구로 트리거하려면 토픽에 대해 Pulsar 클러스터에 유지해야 하는 최대 데이터 양(임계값)을 지정해야 해요. Pulsar 클러스터의 토픽 데이터 크기가 이 임계값을 초과하면 임계값을 더 이상 초과하지 않을 때까지 토픽의 세그먼트가 Azure BlobStore로 이동돼요. 더 오래된 세그먼트가 먼저 이동돼요.
예시 (Example)
- 이 예시는 pulsar-admin으로 Azure BlobStore offloader를 수동으로 실행하도록 트리거해요.
bin/pulsar-admin topics offload --size-threshold 10M my-tenant/my-namespace/topic1
출력 (Output)
Offload triggered for persistent://my-tenant/my-namespace/topic1 for messages before 2:0:-1
tip
pulsar-admin topics offload options명령에 대한 자세한 내용(플래그, 설명, 기본값 포함)은 Pulsar admin docs를 참고해요.
- 이 예시는 pulsar-admin으로 Azure BlobStore offloader 상태를 확인해요.
bin/pulsar-admin topics offload-status persistent://my-tenant/my-namespace/topic1
출력 (Output)
Offload is currently running
Azure BlobStore offloader가 작업을 완료할 때까지 기다리려면 -w 플래그를 추가해요.
bin/pulsar-admin topics offload-status -w persistent://my-tenant/my-namespace/topic1
출력 (Output)
Offload was a success
오프로딩에 오류가 있으면 오류는 pulsar-admin topics offload-status 명령으로 전파돼요.
bin/pulsar-admin topics offload-status persistent://my-tenant/my-namespace/topic1
출력 (Output)
Error in offload
null
Reason: Error offloading: org.apache.bookkeeper.mledger.ManagedLedgerException:
tip
pulsar-admin topics offload-status options명령에 대한 자세한 내용(플래그, 설명, 기본값 포함)은 Pulsar admin docs를 참고해요.
더 알아보기 (Learn more)
- 계층형 저장소 개요는 tiered-storage-overview 문서를 참고해요.
- 구성 방법은 Tiered storage cookbook 문서를 봐요.
- 다른 클라우드 offloader 비교는 tiered-storage-overview를 살펴봐요.