XDCR 는 주로 서로 다른 데이터 센터에 배포된 Couchbase 클러스터 간에 데이터를 복제하는 데 사용되는 고성능 비동기 데이터 복제 시스템입니다. 여러 포춘 500대 기업이 미션 크리티컬 애플리케이션을 위해 XDCR을 사용하고 있습니다. 고가용성, 재해 복구 및 데이터 로컬리티는 XDCR이 솔루션으로 사용되는 주요 애플리케이션입니다.
XDCR은 대부분의 사용 사례에서 높은 처리량과 탄력적인 성능을 제공하도록 설계되었지만 최적의 성능을 위해 튜닝해야 하는 경우가 있을 수 있습니다. 이러한 성능 튜닝 및 사용자 지정이 가능하도록 고급 설정을 도입했습니다.
다음 콘텐츠는 카우치베이스 관리자 콘솔 및 지원되는 API를 통해 액세스할 수 있는 고급 설정을 통해 XDCR 튜닝에 대한 일반적인 지침을 제공하기 위한 것입니다.
복제를 처음 추가할 때 '고급 설정 표시'를 클릭하면 아래와 같은 옵션이 표시됩니다:
튜닝과 가장 관련이 있는 XDCR 설정의 하위 집합이 아래에 나와 있습니다. 이러한 설정은 처리량을 개선하거나 네트워크 대역폭을 절약하는 데 사용할 수 있습니다.
고급 XDCR 설정
|
성능 튜닝
성능에 영향을 미치는 몇 가지 요인으로는 데이터의 특성, 데이터 변이율, 클러스터의 워크로드, 네트워크 구성 등이 있으며, 이러한 매개변수를 기반으로 원하는 성능에 맞게 복제를 조정해야 합니다.
처리량을 개선하거나 대역폭을 절약하기 위한 몇 가지 모범 사례는 다음과 같습니다:
a. 처리량 개선:
- 소스 및 대상 클러스터의 리소스 헤드룸을 고려할 때 소스 노즐 및 대상 노즐에 대해 기본값보다 높은 범위를 권장합니다.
- 데이터가 10K보다 큰 크기의 문서로 구성되어 있는 경우 배치 수와 배치 크기를 기본값보다 높게 조정하는 것이 좋습니다.
b.네트워크 대역폭 절약:
- 평균 문서 크기보다 높은 낙관적 복제 임계값을 사용합니다.
이 동작을 입증하기 위해 여러 가지 실험을 수행했으며, 그 결과는 아래와 같습니다.
실험 설정: 클러스터 A와 클러스터 B는 단방향 복제가 진행 중인 두 개의 클러스터입니다(활성 데이터가 소스 클러스터에서 대상 클러스터로 복제됨).
테스트 환경 구성:
- AWS에서 실행되는 두 개의 Couchbase 클러스터
- 소스 클러스터: West1 지역, 대상 클러스터: East1 지역
- 테스트 당시 클러스터 간 평균 네트워크 지연 시간: 72ms
- 클러스터 크기: 전용 m4.4xlarge 인스턴스에서 실행되는 5개의 노드
- 카우치베이스 버킷 구성 : 버킷 유형 - 카우치베이스; 노드당 버킷 메모리 할당량 = 60GB; (복제본, 충돌 해결 및 배출 방법에 대한 기본 설정)
- Amazon Linux에서 실행되는 Couchbase Server Enterprise R5.0
- 소스 버킷에서 대상 버킷으로 이동하는 단방향 XDCR 복제 생성
Test1: 기준선 설정
구성 : 모든 고급 설정의 기본값
Test2: 병렬화를 통한 처리량 증가 입증
구성 : 소스 노즐 = 8, 타겟 노즐 = 8(모두 4배), 평균 문서 크기 = 1KB
Test3: 더 큰 네트워크 페이로드로 처리량 증가 입증
구성 : 배치 수 = 4000, 배치 크기 = 8192, 평균 문서 크기 = 20KB
Test4: 대역폭 사용률 감소 입증
구성 : 최적 복제 임계값 > 평균 문서 크기
참고 :
- 차트에 표시된 테스트 결과는 AWS의 클라우드 환경의 변화로 인해 동일한 설정에서 이러한 테스트를 반복할 때 3-5%의 편차가 나타날 수 있으므로 절대적인 것으로 간주해서는 안 됩니다.
- 모든 테스트에서 CPU 사용률은 평균 40% 이하였습니다.
원하는 성능 요구 사항에 맞게 복제를 실험하고 조정하길 바라지만, 매우 전문적이거나 비즈니스에 매우 중요한 사용 사례의 경우 XDCR 설정을 변경하기 전에 Couchbase에 문의하는 것이 좋습니다.
이 실험을 수행한 솔루션 엔지니어는 Nirvair Singh이며, 추가 안내나 설명이 필요하면 언제든지 저나 Nirvair에 문의해 주시기 바랍니다.
언제나 그렇듯이 여러분의 실험과 경험에 대해 더 많은 것을 배울 수 있기를 기대합니다.