Amazon MSK 클러스터로의 마이그레이션 - Amazon Managed Streaming for Apache Kafka

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon MSK 클러스터로의 마이그레이션

Amazon MSK Replicator는 MSK 클러스터 마이그레이션에 사용할 수 있습니다. Amazon MSK Replicator란 무엇인가요?를 참조하세요. 또는 Apache MirrorMaker 2.0을 사용하여 비 MSK 클러스터에서 Amazon MSK 클러스터로 마이그레이션할 수 있습니다. 이를 수행하는 방법에 대한 예는 를 사용하여 온프레미스 Apache Kafka 클러스터를 Amazon MSK로 마이그레이션하기 항목을 참조하십시오. MirrorMaker 사용 방법에 대한 자세한 내용은 Apache MirrorMaker Kafka 설명서의 클러스터 간 데이터 미러링을 참조하십시오. 가용성이 높은 구성으로 설정하는 MirrorMaker 것이 좋습니다.

MSK 클러스터로 마이그레이션하는 MirrorMaker 데 사용할 때 따라야 할 단계 개요
  1. 대상 MSK 클러스터 생성

  2. 대상 MirrorMaker 클러스터와 동일한 Amazon VPC 내에 있는 Amazon EC2 인스턴스에서 시작하십시오.

  3. 지연을 검사하십시오. MirrorMaker

  4. 후속 조치를 MirrorMaker 취한 후에는 MSK 클러스터 부트스트랩 브로커를 사용하여 생산자와 소비자를 새 클러스터로 리디렉션하십시오.

  5. 종료하세요. MirrorMaker

Apache Kafka 클러스터를 Amazon MSK로 마이그레이션

CLUSTER_ONPREM이라는 Apache Kafka 클러스터가 있다고 가정합시다. 해당 클러스터는 주제와 데이터로 채워집니다. 해당 클러스터를 새로 생성한 Amazon MSK 클러스터(CLUSTER_AWSMSK)로 마이그레이션하려는 경우 이 절차는 따라야 하는 단계에 대한 개요를 제공합니다.

기존 Apache Kafka 클러스터를 Amazon MSK로 마이그레이션하려면 다음을 수행합니다.
  1. CLUSTER_AWSMSK에서 마이그레이션할 모든 주제를 만듭니다.

    이 단계에서는 마이그레이션하려는 주제가 적절한 복제 수준으로 자동으로 다시 생성되지 않으므로 이 단계에는 사용할 MirrorMaker 수 없습니다. CLUSTER_ONPREM에서와 동일한 복제 인수와 파티션 수를 사용하여 Amazon MSK에서 주제를 생성할 수 있습니다. 서로 다른 복제 인수 및 파티션 수를 사용하여 주제를 생성할 수도 있습니다.

  2. 읽기 CLUSTER_ONPREM 권한과 쓰기 권한이 있는 MirrorMaker CLUSTER_AWSMSK 인스턴스에서 시작하세요.

  3. 다음 명령을 실행하여 모든 주제를 미러링합니다.

    <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.propertiesCLUSTER_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

  4. 백그라운드에서 계속 MirrorMaker 실행하고 계속 사용하세요. CLUSTER_ONPREM MirrorMaker 모든 새 데이터를 미러링합니다.

  5. 각 항목의 마지막 오프셋과 소비가 발생하고 있는 현재 오프셋 사이의 지연을 검사하여 미러링 진행 상황을 확인합니다. MirrorMaker

    MirrorMaker 이는 단순히 소비자와 생산자를 사용하는 것임을 기억하세요. 따라서 kafka-consumer-groups.sh 도구를 사용하여 지연을 확인할 수 있습니다. 소비자 그룹 이름을 찾으려면 group.idmirrormaker-consumer.properties 파일 내부를 찾아보고 해당 값을 사용합니다. 파일에 해당 키가 없으면 직접 만들 수 있습니다. 예를 들면 group.id=mirrormaker-consumer-group으로 설정합니다.

  6. 모든 주제를 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