보안 패치로 인해 클라이언트 I/O가 중단되지 않도록 하려면 어떻게 해야 하나요?

3분 분량
0

보안 패치를 적용할 때 MSK 클러스터에서 고가용성을 유지하기 위한 몇 가지 모범 사례를 알고 싶습니다.

간략한 설명

Amazon Managed Streaming for Apache Kafka(Amazon MSK)는 롤링 업데이트를 사용하여 고가용성을 유지하고 패치하는 동안 클러스터 I/O를 지원합니다. 이 과정에서 브로커는 하나씩 재부팅되며, 현재 재부팅된 브로커의 파티션이 완전히 따라잡을 때까지(동기화) 다음 브로커가 재부팅되지 않습니다. 이 업데이트 과정에서 클라이언트에서 일시적인 연결 끊김 오류가 발생하는 것은 정상입니다.

보안 패치를 적용하는 동안 클라이언트가 다운타임을 겪지 않도록 하려면 다음 모범 사례를 사용하여 클러스터를 고가용성으로 만드세요.

해결 방법

AZ가 3개 있는 클러스터 설정

가용성 영역에 장애가 발생하면 3-AZ 클러스터가 다운타임을 방지합니다.

Amazon MSK는 가용성 영역 수준에서 내결함성을 위한 랙 인식 복제 할당을 달성하기 위해 broker.rack 브로커 속성을 설정합니다. 즉, 복제 계수(RF)가 3인 3-AZ 클러스터를 사용하는 경우 3개의 파티션 복제본 각각이 별도의 가용 영역에 있습니다.

참고: RF가 3인 2-AZ 클러스터를 사용하는 경우 3개의 파티션 복제본 각각이 별도의 가용 영역에 있을 수 없습니다. Amazon MSK에서는 단일 가용 영역에 클러스터를 만들 수 없습니다.

복제 계수가 가용 영역 수인지 확인하세요.

보안 패치를 적용하는 동안 브로커를 다시 시작하면 리더를 사용할 수 없게 됩니다. 그 결과 팔로워 복제본 중 하나가 새 리더로 선출되어 클러스터가 클라이언트에 계속 서비스를 제공할 수 있습니다.

클러스터에 새 리더로 승격할 복제본이 없기 때문에 RF-1에서 롤링 업데이트 중에 파티션을 사용할 수 없게 될 수 있습니다. 최소 동기화 복제본(minISR)이 1개인 RF-2의 경우, 생산자 승인(acks)이 “모두”로 설정된 경우에도 데이터 손실이 발생할 수 있습니다. 쓰기가 성공하려면 minISR이 1이어야 하며, 리더만 쓰기를 승인할 수 있습니다. 승인 직후 팔로워 복제본이 따라잡기 전에 리더 복제본의 브로커가 다운되면 데이터 손실이 발생합니다. min.insync.replicas에 대한 자세한 내용은 Apache Kafka 문서를 참조하세요.

최소 minISR을 최대 RF-1로 설정하기

minISR을 RF 값으로 설정하면 롤링 업데이트로 인해 하나의 브로커가 서비스를 중단할 때 프로듀서 장애가 발생할 수 있습니다. 복제본이 생산자가 쓸 수 있도록 확인을 보내지 않으면 생산자는 예외를 발생시킵니다. 예를 들어 AZ가 3개이고 RF가 3개인 경우, 프로듀서는 리더를 포함한 3개의 파티션 복제본이 모두 메시지를 승인할 때까지 기다립니다. 브로커 중 하나가 서비스를 중단하면 3개의 파티션 중 2개만 승인을 반환하므로 프로듀서 예외가 발생합니다.

이 시나리오에서는 프로듀서 확인이 “모두”로 설정되어 있다고 가정합니다. 프로듀서 확인을 “모두”로 설정하면 동기화된 복제본이 하나 이상 남아 있는 한 레코드가 손실되지 않습니다. 생산자 확인에 대한 자세한 내용은 Apache Kafka 문서를 참조하세요.

클라이언트 연결 문자열에 각 AZ의 브로커를 하나 이상 포함하세요.

클라이언트는 단일 브로커의 엔드포인트를 사용하여 클러스터에 대한 연결을 부트스트랩합니다. 초기 클라이언트 연결 중에 브로커는 클라이언트가 액세스해야 하는 브로커에 대한 정보가 포함된 메타데이터를 보냅니다.

브로커를 사용할 수 없게 되면 연결이 실패합니다. 예를 들어 클라이언트의 연결 문자열에 브로커가 하나만 있는 경우입니다. 패치하는 동안 브로커를 다시 시작할 때 클라이언트가 클러스터와의 초기 연결에 실패합니다.

또는 클라이언트 연결 문자열에 브로커가 여러 개 있습니다. 이 경우 클라이언트의 연결 문자열은 연결 설정에 사용된 브로커가 오프라인 상태가 될 때 장애 조치를 허용합니다. 여러 브로커를 사용하여 연결 문자열을 설정하는 방법에 대한 자세한 내용은 Amazon MSK 클러스터에 대한 부트스트랩 브로커 가져오기를 참조하세요.

재시도 허용

브로커를 재부팅하면 해당 브로커의 리더 파티션을 사용할 수 없게 됩니다. 이에 따라 Apache Kafka에서는 다른 브로커의 복제 파티션을 새로운 리더로 승격합니다. 그러면 클라이언트가 새 리더 파티션을 찾기 위해 메타데이터 업데이트를 요청합니다. 이 변경 중에 클라이언트에 일시적인 오류가 발생하는 것은 정상입니다.

기본적으로 클라이언트에는 이러한 유형의 일시적 오류를 처리하기 위한 재시도 기능이 내장되어 있습니다. 클라이언트가 재시도를 사용하도록 구성되어 있는지 확인하세요. 재시도 구성에 대한 자세한 내용은 Apache Kafka 문서를 참조하세요.

AWS 공식
AWS 공식업데이트됨 일 년 전