안티-어피니티 네임스페이스
안티-어피니티 네임스페이스 (Anti-affinity namespaces)
애플리케이션이 여러 네임스페이스를 가질 때 그중 하나라도 항상 사용 가능하게 유지해 다운타임을 피하고 싶다면, 이 네임스페이스들을 그룹으로 묶어 서로 다른 장애 도메인(failure domain)과 서로 다른 브로커에 분산할 수 있어요. 이렇게 하면 하나의 장애 도메인이 다운돼도(릴리스 롤아웃이나 브로커 재시작 때문이든) 그 특정 장애 도메인이 소유한 네임스페이스만 중단되고, 다른 도메인이 소유한 나머지 네임스페이스는 영향 없이 계속 사용할 수 있어요.
출처: 문서
본문
장애 도메인에 안티-어피니티 네임스페이스 분산하기 (Distribute anti-affinity namespaces across failure domains)
애플리케이션이 여러 네임스페이스를 가질 때 그중 하나라도 항상 사용 가능하게 유지해 다운타임을 피하고 싶다면, 이 네임스페이스들을 그룹으로 묶어 서로 다른 장애 도메인(failure domain)과 서로 다른 브로커에 분산할 수 있어요. 따라서 하나의 장애 도메인이 다운되면(릴리스 롤아웃이나 브로커 재시작 때문에) 그 특정 장애 도메인이 소유한 네임스페이스만 중단되고, 다른 도메인이 소유한 나머지 네임스페이스는 아무 영향 없이 계속 사용 가능해요.
이런 네임스페이스 그룹은 서로 안티-어피니티를 가져요. 즉, 이 그룹의 모든 네임스페이스는 안티-어피니티 네임스페이스이며 로드 밸런싱 방식으로 서로 다른 장애 도메인에 분산돼요.
아래 그림처럼 Pulsar에 2개의 장애 도메인(Domain1, Domain2)이 있고 각 도메인에 브로커 2개가 있다고 해볼게요. 4개의 네임스페이스가 들어있는 안티-어피니티 네임스페이스 그룹을 만들 수 있고, 4개 네임스페이스는 모두 서로 안티-어피니티예요. 로드 매니저는 같은 도메인의 모든 브로커에 네임스페이스를 균등하게 분산하려 해요. 각 도메인에 브로커가 2개이므로, 각 브로커가 이 안티-어피니티 네임스페이스 그룹에서 네임스페이스 하나를 소유해, 각 도메인이 2개를, 각 브로커가 1개를 소유하게 돼요.
로드 매니저는 안티-어피니티 네임스페이스를 할당할 때 장애 도메인 간 균등 분산 정책을 따라요. 아래 표는 위 그림에서 보여준 균등 분산 할당 순서를 정리한 것이에요.
| Assignment sequence | Namespace | Failure domain candidates | Broker candidates | Selected broker |
|---|---|---|---|---|
| 1 | Namespace1 | Domain1, Domain2 | Broker1, Broker2, Broker3, Broker4 | Domain1:Broker1 |
| 2 | Namespace2 | Domain2 | Broker3, Broker4 | Domain2:Broker3 |
| 3 | Namespace3 | Domain1, Domain2 | Broker2, Broker4 | Domain1:Broker2 |
| 4 | Namespace4 | Domain2 | Broker4 | Domain2:Broker4 |
tip
- 각 네임스페이스는 오직 하나의 안티-어피니티 그룹에만 속해요. 기존 안티-어피니티 할당이 있는 네임스페이스를 다른 안티-어피니티 그룹에 할당하면 원래 할당은 버려져요.
- 안티-어피니티 네임스페이스가 장애 도메인보다 많으면, 로드 매니저는 모든 도메인에 네임스페이스를 균등하게 분산하고, 각 도메인도 그 아래 모든 브로커에 네임스페이스를 균등하게 분산해요.
장애 도메인 생성과 브로커 등록 (Create a failure domain and register brokers)
note
하나의 브로커는 단 하나의 장애 도메인에만 등록될 수 있어요.
특정 클러스터 아래 도메인을 만들고 브로커를 등록하려면 다음 명령을 실행해요.
pulsar-admin clusters create-failure-domain <cluster-name> --domain-name <domain-name> --broker-list <broker-list-comma-separated>
특정 클러스터 아래 도메인을 보고, 업데이트하고, 삭제할 수도 있어요. 자세한 내용은 Pulsar admin docs를 참고해요.
안티-어피니티 네임스페이스 그룹 생성 (Create an anti-affinity namespace group)
안티-어피니티 그룹은 첫 번째 네임스페이스가 그룹에 할당될 때 자동으로 생성돼요. 네임스페이스를 안티-어피니티 그룹에 할당하려면 다음 명령을 실행해요. 이 명령은 네임스페이스에 안티-어피니티 그룹 이름을 설정해요.
pulsar-admin namespaces set-anti-affinity-group <namespace> --group <group-name>
anti-affinity-group 관련 명령에 대한 자세한 내용은 Pulsar admin docs를 참고해요.
더 알아보기 (Learn more)
- 안티-어피니티 네임스페이스 관련 명령은 pulsar-admin의 namespaces 및 clusters 명령 참고서를 확인해요.
- 장애 도메인 관리 방법은 Pulsar admin docs를 참고해요.
- 네임스페이스와 번들의 개념이 궁금하다면 핵심 개념 문서를 참고해요.