기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon MSK 클러스터로의 마이그레이션
Amazon MSK Replicator는 MSK 클러스터 마이그레이션에 사용할 수 있습니다. Amazon MSK Replicator란 무엇인가요?를 참조하세요. 또는 Apache MirrorMaker 2.0을 사용하여 비 MSK 클러스터에서 Amazon MSK 클러스터로 마이그레이션할 수 있습니다. 이를 수행하는 방법에 대한 예는 를 사용하여 온프레미스 Apache Kafka 클러스터를 Amazon MSK로 마이그레이션하기 항목을 참조하십시오. MirrorMaker 사용 방법에 대한 자세한 내용은 Apache MirrorMaker Kafka 설명서의 클러스터 간 데이터 미러링을
MSK 클러스터로 마이그레이션하는 MirrorMaker 데 사용할 때 따라야 할 단계 개요
대상 MSK 클러스터 생성
대상 MirrorMaker 클러스터와 동일한 Amazon VPC 내에 있는 Amazon EC2 인스턴스에서 시작하십시오.
-
지연을 검사하십시오. MirrorMaker
-
후속 조치를 MirrorMaker 취한 후에는 MSK 클러스터 부트스트랩 브로커를 사용하여 생산자와 소비자를 새 클러스터로 리디렉션하십시오.
-
종료하세요. MirrorMaker
Apache Kafka 클러스터를 Amazon MSK로 마이그레이션
CLUSTER_ONPREM
이라는 Apache Kafka 클러스터가 있다고 가정합시다. 해당 클러스터는 주제와 데이터로 채워집니다. 해당 클러스터를 새로 생성한 Amazon MSK 클러스터(CLUSTER_AWSMSK
)로 마이그레이션하려는 경우 이 절차는 따라야 하는 단계에 대한 개요를 제공합니다.
기존 Apache Kafka 클러스터를 Amazon MSK로 마이그레이션하려면 다음을 수행합니다.
-
CLUSTER_AWSMSK
에서 마이그레이션할 모든 주제를 만듭니다.이 단계에서는 마이그레이션하려는 주제가 적절한 복제 수준으로 자동으로 다시 생성되지 않으므로 이 단계에는 사용할 MirrorMaker 수 없습니다.
CLUSTER_ONPREM
에서와 동일한 복제 인수와 파티션 수를 사용하여 Amazon MSK에서 주제를 생성할 수 있습니다. 서로 다른 복제 인수 및 파티션 수를 사용하여 주제를 생성할 수도 있습니다. -
읽기
CLUSTER_ONPREM
권한과 쓰기 권한이 있는 MirrorMakerCLUSTER_AWSMSK
인스턴스에서 시작하세요. -
다음 명령을 실행하여 모든 주제를 미러링합니다.
<path-to-your-kafka-installation>
/bin/kafka-mirror-maker.sh --consumer.config config/mirrormaker-consumer.properties --producer.config config/mirrormaker-producer.properties --whitelist '.*'이 명령에서
config/mirrormaker-consumer.properties
는CLUSTER_ONPREM
에 있는 부트스트랩 브로커를 가리킵니다(예:bootstrap.servers=localhost:9092
). 그리고 CLUSTER_의 부트스트랩 브로커를config/mirrormaker-producer.properties
가리킵니다 (예:)AWSMSK.bootstrap.servers=10.0.0.237:9092,10.0.2.196:9092,10.0.1.233:9092
-
백그라운드에서 계속 MirrorMaker 실행하고 계속 사용하세요.
CLUSTER_ONPREM
MirrorMaker 모든 새 데이터를 미러링합니다. -
각 항목의 마지막 오프셋과 소비가 발생하고 있는 현재 오프셋 사이의 지연을 검사하여 미러링 진행 상황을 확인합니다. MirrorMaker
MirrorMaker 이는 단순히 소비자와 생산자를 사용하는 것임을 기억하세요. 따라서
kafka-consumer-groups.sh
도구를 사용하여 지연을 확인할 수 있습니다. 소비자 그룹 이름을 찾으려면group.id
의mirrormaker-consumer.properties
파일 내부를 찾아보고 해당 값을 사용합니다. 파일에 해당 키가 없으면 직접 만들 수 있습니다. 예를 들면group.id=mirrormaker-consumer-group
으로 설정합니다. -
모든 주제를 MirrorMaker 반영하는 작업을 마친 후에는 모든 생산자와 소비자를 멈춘 다음 중단하십시오. MirrorMaker 그런 다음 생산자 및 소비자 부트스트랩 브로커 값을 변경하여
CLUSTER_AWSMSK
클러스터로 생산자와 소비자를 리디렉션합니다.CLUSTER_AWSMSK
에서 모든 생산자와 소비자를 다시 시작하십시오.
한 Amazon MSK 클러스터에서 다른 클러스터로 마이그레이션
Apache MirrorMaker 2.0을 사용하여 비 MSK 클러스터에서 MSK 클러스터로 마이그레이션할 수 있습니다. 예를 들어, Apache Kafka 버전을 다른 버전으로 마이그레이션할 수 있습니다. 이를 수행하는 방법에 대한 예는 를 사용하여 온프레미스 Apache Kafka 클러스터를 Amazon MSK로 마이그레이션하기 항목을 참조하십시오. MirrorMaker 또는 Amazon MSK Replicator를 사용하여 MSK 클러스터 마이그레이션을 수행할 수 있습니다. Amazon MSK Replicator에 대한 자세한 내용은 MSK Replicator 섹션을 참조하세요.
MirrorMaker 1.0 모범 사례
이 모범 사례 목록은 MirrorMaker 1.0에 적용됩니다.
대상 MirrorMaker 클러스터에서 실행합니다. 이렇게 하면 네트워크 문제가 발생해도 원본 클러스터에서 메시지를 계속 사용할 수 있습니다. 소스 MirrorMaker 클러스터에서 실행할 때 프로듀서에서 이벤트가 버퍼링되고 네트워크 문제가 발생하는 경우 이벤트가 손실될 수 있습니다.
-
전송 중 암호화가 필요한 경우 원본 클러스터에서 실행합니다.
소비자의 경우 auto.commit.enabled=false로 설정합니다.
생산자의 경우
max.in.flight.requests.per.connection=1
retries=Int.Max_Value
acks=all
max.block.ms = Long.Max_Value로 설정합니다.
생산자 처리량이 큰 경우:
메시지 버퍼링 및 메시지 배치 채우기 - buffer.memory, batch.size, linger.ms 조정
소켓 버퍼 조정 - receive.buffer.bytes, send.buffer.bytes
데이터 손실을 방지하려면 소스에서 자동 커밋을 끄십시오. 그러면 커밋을 제어할 MirrorMaker 수 있습니다. 자동 커밋은 일반적으로 대상 클러스터로부터 ACK를 받은 후에 수행합니다. 생산자의 acks=all이 있고 대상 클러스터의 min.insync.replicas가 1 이상으로 설정된 경우 소비자가 소스에서 오프셋을 커밋하기 전에 메시지가 대상에 있는 둘 이상의 브로커에 유지됩니다. MirrorMaker
-
순서가 중요한 경우 재시도를 0으로 설정할 수 있습니다. 또는 프로덕션 환경에서 배치가 중간에 실패할 경우 발송된 배치가 잘못된 순서로 커밋되지 않도록 최대 이동 중 연결을 1로 설정합니다. 이렇게 하면 다음 배치가 전송될 때까지 전송된 각 배치가 다시 시도됩니다. max.block.ms가 최대 값으로 설정되어 있지 않고, 생산자 버퍼가 가득 차면 데이터가 손실될 수 있습니다(일부 다른 설정에 따라). 그러면 소비자가 차단되고 줄어들 수 있습니다.
-
높은 처리량
-
buffer.memory를 늘립니다.
-
배치 크기를 늘립니다.
-
배치가 채워지도록 linger.ms를 튜닝하십시오. 그러면 압축이 향상되고 네트워크 대역폭 사용량이 줄고 클러스터의 스토리지도 줄어듭니다. 이렇게 하면 보존이 향상됩니다.
-
CPU 및 메모리 사용량을 모니터링합니다.
-
-
높은 소비자 처리량을 위해
-
프로세스당 스레드/소비자 수를 늘리십시오 (예: num.stream). MirrorMaker
-
고가용성을 위해 스레드를 늘리기 전에 먼저 시스템 전체의 MirrorMaker 프로세스 수를 늘리십시오.
-
먼저 동일한 시스템에서 MirrorMaker 프로세스 수를 늘린 다음 다른 컴퓨터 (동일한 그룹 ID 사용) 에서 프로세스 수를 늘리십시오.
-
처리량이 매우 높은 주제를 분리하고 별도의 MirrorMaker 인스턴스를 사용하십시오.
-
관리 및 구성용
-
Chef AWS CloudFormation 및 Ansible과 같은 사용 및 구성 관리 도구를 사용하세요.
-
Amazon EFS 마운트를 사용하여 모든 Amazon EC2 인스턴스에서 모든 구성 파일에 액세스할 수 있도록 하세요.
-
컨테이너를 사용하여 MirrorMaker 인스턴스를 쉽게 확장하고 관리할 수 있습니다.
-
일반적으로 한 명의 생산자를 포화시키려면 한 명 이상의 소비자가 필요합니다. MirrorMaker 따라서 여러 소비자를 설정하십시오. 먼저 높은 가용성을 제공하기 위해 여러 머신에 설정합니다. 그런 다음 각 파티션에 대한 소비자를 수용하도록 개별 머신을 확장하여 소비자를 여러 머신에 균등하게 분배합니다.
-
처리량이 높은 수집과 전달의 경우, 기본값이 너무 낮을 수 있는 수신 및 전송 버퍼를 튜닝합니다. 성능을 극대화하려면 총 스트림 수 (num.stream) 가 대상 클러스터로 복사하려는 모든 주제 파티션과 일치하는지 확인하십시오. MirrorMaker
MirrorMaker 2.*의 장점
Apache Kafka Connect 프레임워크와 에코시스템을 사용합니다.
새로운 주제 및 파티션을 감지합니다.
클러스터 간에 주제 구성을 자동으로 동기화합니다.
"활성/활성" 클러스터 페어와 임의의 수의 활성 클러스터를 지원합니다.
-
여러 데이터 센터 및 클러스터의 end-to-end 복제 지연 시간을 비롯한 새로운 메트릭을 제공합니다.
-
클러스터 간 소비자를 마이그레이션하는 데 필요한 오프셋을 방출하고 오프셋 변환을 위한 도구를 제공합니다.
-
각 1.* 프로세스의 하위 수준 생산자/소비자 속성과 비교하여 한 곳에서 여러 클러스터 및 복제 흐름을 지정하기 위한 상위 수준 구성 파일을 지원합니다. MirrorMaker