보안 패치 적용 중에 Amazon Managed Streaming for Apache Kafka(Amazon MSK) 클러스터에서 고가용성을 유지하려고 합니다.
간략한 설명
Amazon Managed Streaming for Apache Kafka(Amazon MSK)는 롤링 업데이트를 사용하여 고가용성을 유지하고 패치 적용 중에 클러스터 I/O를 지원합니다.
Amazon MSK는 브로커를 하나씩 재부팅하고 마지막으로 재부팅한 브로커의 파티션이 완전히 따라잡을 때까지 기다린 후 다음 브로커를 재부팅합니다. 이 업데이트 과정 중에 클라이언트에서 일시적인 연결 끊김 오류가 발생할 수 있습니다.
보안 패치 적용 중에 가동 중지 시간을 방지하려면 가용성이 높은 클러스터를 구축하십시오.
해결 방법
3개 가용 영역 클러스터 설정
가용 영역 장애 시 가동 중지 시간을 방지하려면 3개 가용 영역 클러스터를 설정하십시오.
참고: 기본적으로 Express 브로커는 데이터를 3개의 가용 영역에 분산합니다.
내결함성을 위한 랙 인식 복제 할당을 달성하기 위해 Amazon MSK는 가용 영역 수준에서 broker.rack 브로커 속성을 설정합니다. 복제 인수(RF)가 3인 3개 가용 영역 클러스터를 사용하는 경우 3개의 파티션 복제본은 각각 개별 가용 영역에 있습니다.
참고: RF가 3인 2개 가용 영역 클러스터에서는 3개의 파티션 복제본을 각각 개별 가용 영역에 배치할 수 없습니다. Amazon MSK에서는 단일 가용 영역에 클러스터를 만들 수 없습니다.
복제 인수를 가용 영역 수와 동일하게 설정
보안 패치 적용 중에 브로커를 다시 시작하면 리더를 사용할 수 없게 됩니다. 따라서 클러스터는 팔로워 복제본 중 하나를 새 리더로 선택하여 클라이언트에 계속 서비스를 제공할 수 있습니다.
클러스터에 새 리더로 승격할 복제본이 없기 때문에 RF가 1인 경우 롤링 업데이트 중에 오프라인 파티션이 발생할 수 있습니다. RF가 2이고 최소 동기화 복제본(minISR)이 1인 경우, 생산자 승인(acks)이 모두로 설정되어 있어도 데이터 손실이 발생할 수 있습니다. 쓰기가 성공하려면 minISR이 1이면 리더만 쓰기를 승인하면 됩니다. 승인 직후 팔로워 복제본이 따라잡기 전에 리더 복제본의 브로커가 다운되면 데이터 손실이 발생합니다.
minISR에 대한 자세한 내용은 Apache Kafka 웹 사이트의 min.insync.replicas를 참조하십시오.
참고: Express 브로커를 사용하는 경우 기본적으로 복제는 3으로 설정됩니다.
minISR을 RF - 1 이하로 설정
minlSR을 RF 값으로 설정하면 한 브로커가 서비스를 중단할 때 생산자 오류가 발생할 수 있습니다. 복제본이 생산자가 쓸 수 있도록 승인을 보내지 않으면 생산자는 예외를 발생시킵니다.
예를 들어 가용 영역이 3이고 RF가 3인 경우, 생산자는 리더를 포함하여 3개의 파티션 복제본이 모두 메시지를 승인할 때까지 기다립니다. 브로커 중 하나가 서비스를 중단하면 3개의 파티션 중 2개만 승인을 반환하므로 생산자 예외가 발생합니다.
참고: Express 브로커를 사용하는 경우 기본적으로 minISR은 2로 설정됩니다.
생산자 acks를 모두로 설정하면 동기화 중인 복제본이 하나 이상 남아 있는 한 레코드가 손실되지 않습니다. 생산자 acks에 대한 자세한 내용은 Apache Kafka 웹 사이트에서 acks를 참조하십시오.
참고: minISR에는 주제 수준 설정과 브로커 수준 설정이 있습니다. 주제 수준 설정은 항상 브로커 수준 설정보다 우선합니다.
클라이언트 연결 문자열에 각 가용 영역의 브로커를 하나 이상 포함
클라이언트는 단일 브로커의 엔드포인트를 사용하여 클러스터에 대한 연결을 부트스트랩합니다.
초기 클라이언트 연결 중에 브로커는 클라이언트가 액세스해야 하는 브로커에 대한 정보가 포함된 메타데이터를 보냅니다.
브로커를 사용할 수 없게 되면 연결이 실패합니다.
예를 들어 클라이언트의 연결 문자열에 브로커가 하나만 있는 경우입니다.
패치를 적용하는 동안 브로커를 다시 시작하면 클라이언트가 클러스터와 초기 연결을 수립하지 못합니다.
또는 클라이언트 연결 문자열에 브로커가 여러 개 있습니다.
이 경우 클라이언트의 연결 문자열은 연결을 수립하는 데 사용하는 브로커가 오프라인 상태가 되면 장애 조치를 허용합니다. 여러 브로커를 사용하여 연결 문자열을 설정하는 방법에 대한 자세한 내용은 Amazon MSK 클러스터에 대한 부트스트랩 브로커 가져오기를 참조하십시오.
재시도 허용
브로커를 재부팅하면 해당 브로커의 리더 파티션을 사용할 수 없게 됩니다.
결과적으로 Apache Kafka는 다른 브로커의 복제 파티션을 새로운 리더로 승격합니다.
이제 클라이언트는 새 리더 파티션을 찾기 위해 메타데이터 업데이트를 요청합니다.
이 변경 중에 클라이언트에서 일시적인 오류가 발생할 수 있습니다.
기본적으로 클라이언트에는 이러한 유형의 일시적 오류를 처리하기 위한 재시도 기능이 내장되어 있습니다. 재시도를 위해 클라이언트를 구성했는지 확인하십시오. 재시도를 구성하는 방법에 대한 자세한 내용은 Apache Kafka 웹 사이트의 재시도를 참조하십시오.
관련 정보
MSK 프로비저닝 클러스터의 패치 적용