작업자 - Amazon Managed Streaming for Apache Kafka

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

작업자

작업자는 커넥터 로직을 실행하는 Java 가상 머신(JVM) 프로세스입니다. 각 작업자는 병렬 스레드에서 실행되는 일련의 작업을 생성하고 데이터 복사 작업을 수행합니다. 작업은 상태를 저장하지 않으므로 탄력적이고 규모 조정 가능한 데이터 파이프라인을 제공하기 위해 언제든지 시작, 중지 또는 다시 시작할 수 있습니다. 확장 이벤트 또는 예기치 못한 장애로 인한 작업자 수 변경은 남은 작업자가 자동으로 감지합니다. 이들은 남은 작업자 세트에서 작업의 균형을 재조정하기 위해 조정합니다. Connect 작업자는 Apache Kafka의 소비자 그룹을 사용하여 조정하고 재조정합니다.

커넥터의 용량 요구 사항이 가변적이거나 예측하기 어려운 경우 MSK Connect에서 필요에 따라 지정한 하한과 상한 사이에서 작업자 수 규모를 조정할 수 있습니다. 또는 커넥터 로직을 실행할 정확한 작업자 수를 지정할 수 있습니다. 자세한 설명은 커넥터 용량 섹션을 참조하세요.

MSK Connect 작업자는 IP 주소를 사용합니다.

MSK Connect 작업자는 고객이 제공한 서브넷의 IP 주소를 사용합니다. 각 작업자는 고객이 제공한 서브넷 중 하나의 IP 주소를 사용합니다. CreateConnector 요청에 제공된 서브넷에 지정된 용량을 고려하도록 서브넷에 사용 가능한 IP 주소가 충분한지 확인해야 합니다. 특히 작업자 수가 변동될 수 있는 커넥터를 자동 확장하는 경우에는 더욱 그렇습니다.

기본 작업자 구성

MSK Connect는 다음과 같은 기본 작업자 구성을 제공합니다.

key.converter=org.apache.kafka.connect.storage.StringConverter value.converter=org.apache.kafka.connect.storage.StringConverter

지원되는 작업자 구성 속성

MSK Connect는 기본 작업자 구성을 제공합니다. 커넥터와 함께 사용할 사용자 지정 작업자 구성을 생성하는 옵션도 있습니다. 다음 목록에는 Amazon MSK Connect에서 지원하거나 지원하지 않는 작업자 구성 속성에 대한 정보가 포함되어 있습니다.

  • key.convertervalue.converter 속성은 필수입니다.

  • MSK Connect에서는 다음과 같은 producer. 구성 속성을 지원합니다.

    producer.acks producer.batch.size producer.buffer.memory producer.compression.type producer.enable.idempotence producer.key.serializer producer.max.request.size producer.metadata.max.age.ms producer.metadata.max.idle.ms producer.partitioner.class producer.reconnect.backoff.max.ms producer.reconnect.backoff.ms producer.request.timeout.ms producer.retry.backoff.ms producer.value.serializer
  • MSK Connect에서는 다음과 같은 consumer. 구성 속성을 지원합니다.

    consumer.allow.auto.create.topics consumer.auto.offset.reset consumer.check.crcs consumer.fetch.max.bytes consumer.fetch.max.wait.ms consumer.fetch.min.bytes consumer.heartbeat.interval.ms consumer.key.deserializer consumer.max.partition.fetch.bytes consumer.max.poll.records consumer.metadata.max.age.ms consumer.partition.assignment.strategy consumer.reconnect.backoff.max.ms consumer.reconnect.backoff.ms consumer.request.timeout.ms consumer.retry.backoff.ms consumer.session.timeout.ms consumer.value.deserializer
  • 다음 속성을 제외하고 producer. 또는 consumer. 접두사로 시작하지 않는 다른 모든 구성 속성이 지원됩니다.

    access.control. admin. admin.listeners.https. client. connect. inter.worker. internal. listeners.https. metrics. metrics.context. rest. sasl. security. socket. ssl. topic.tracking. worker. bootstrap.servers config.storage.topic connections.max.idle.ms connector.client.config.override.policy group.id listeners metric.reporters plugin.path receive.buffer.bytes response.http.headers.config scheduled.rebalance.max.delay.ms send.buffer.bytes status.storage.topic

작업자 구성 속성 및 해당 속성이 나타내는 내용에 대한 자세한 내용은 Apache Kafka 설명서의 Kafka Connect Configs를 참조하세요.

사용자 지정 작업자 구성 생성

를 사용하여 사용자 지정 작업자 구성 만들기 AWS Management Console
  1. https://console.aws.amazon.com/msk/에서 Amazon MSK 콘솔을 엽니다.

  2. 왼쪽 창의 MSK Connect에서 작업자 구성을 선택합니다.

  3. 작업자 구성 생성을 선택합니다.

  4. 이름과 설명(선택 사항)을 입력한 다음 설정할 속성 및 값을 추가합니다.

  5. 작업자 구성 생성을 선택합니다.

MSK Connect API를 사용하여 작업자 구성을 생성하려면 을 참조하십시오 CreateWorkerConfiguration.

offset.storage.topic을 사용하여 소스 커넥터 오프셋 관리

이 섹션에서는 오프셋 스토리지 주제를 사용하여 소스 커넥터 오프셋을 관리하는 데 도움이 되는 정보를 제공합니다. 오프셋 스토리지 주제는 Kafka Connect에서 커넥터 및 작업 구성 오프셋을 저장하는 데 사용하는 내부 주제입니다.

기본 오프셋 스토리지 주제 사용

기본적으로 Amazon MSK Connect는 사용자가 생성하는 각 커넥터에 대해 Kafka 클러스터에 새 오프셋 스토리지 주제를 생성합니다. MSK는 커넥터 ARN의 일부를 사용하여 기본 주제 이름을 구성합니다. 예를 들어 __amazon_msk_connect_offsets_my-mskc-connector_12345678-09e7-4abc-8be8-c657f7e4ff32-2입니다.

자체 오프셋 스토리지 주제 지정

소스 커넥터 간에 오프셋 연속성을 제공하려면 기본 주제 대신 원하는 오프셋 스토리지 주제를 사용할 수 있습니다. 오프셋 스토리지 주제를 지정하면 이전 커넥터의 마지막 오프셋에서 읽기를 다시 시작하는 소스 커넥터를 생성하는 것과 같은 작업을 수행하는 데 도움이 됩니다.

오프셋 스토리지 주제를 지정하면 커넥터를 생성하기 전에 작업자 구성에서 offset.storage.topic 속성 값을 제공해야 합니다. 오프셋 스토리지 주제를 다시 사용하여 이전에 만든 커넥터의 오프셋을 사용하려면 새 커넥터에 이전 커넥터와 동일한 이름을 지정해야 합니다. 사용자 지정 오프셋 스토리지 주제를 만드는 경우 주제 구성에서 cleanup.policycompact로 설정해야 합니다.

참고

싱크 커넥터를 생성할 때 오프셋 스토리지 주제를 지정하는 경우 해당 주제가 아직 존재하지 않으면 MSK Connect에서 해당 주제를 생성합니다. 그러나 이 주제는 커넥터 오프셋을 저장하는 데 사용되지 않습니다.

싱크 커넥터 오프셋은 대신 Kafka 소비자 그룹 프로토콜을 사용하여 관리됩니다. 각 싱크 커넥터는 connect-{CONNECTOR_NAME}이라는 그룹을 생성합니다. 소비자 그룹이 존재하는 한 동일한 CONNECTOR_NAME 값으로 생성되는 모든 후속 싱크 커넥터는 마지막으로 커밋된 오프셋부터 계속됩니다.

예 : 업데이트된 구성으로 소스 커넥터를 다시 생성하기 위한 오프셋 스토리지 주제 지정

변경 데이터 캡처(CDC) 커넥터가 있고 CDC 스트림에서 위치를 잃지 않고 커넥터 구성을 수정하고 싶다고 가정해 보겠습니다. 기존 커넥터 구성을 업데이트할 수는 없지만 커넥터를 삭제하고 동일한 이름의 새 커넥터를 생성할 수는 있습니다. 새 커넥터가 CDC 스트림에서 읽기를 시작할 위치를 알려주려면 작업자 구성에서 이전 커넥터의 오프셋 스토리지 주제를 지정하면 됩니다. 다음 단계에서는 이 작업을 수행하는 방법을 설명합니다.

  1. 클라이언트 머신에서 다음 명령을 실행하여 커넥터의 오프셋 스토리지 주제 이름을 찾습니다. <bootstrapBrokerString>을 클러스터의 부트스트랩 브로커 문자열로 변경합니다. 부트스트랩 브로커 문자열을 가져오는 방법에 대한 지침은 Amazon MSK 클러스터를 위한 부트스트랩 브로커 가져오기 섹션을 참조하세요.

    <path-to-your-kafka-installation>/bin/kafka-topics.sh --list --bootstrap-server <bootstrapBrokerString>

    다음 출력에는 기본 내부 커넥터 주제를 포함한 모든 클러스터 주제 목록이 나와 있습니다. 이 예제에서는 기존 CDC 커넥터가 MSK Connect에서 생성한 기본 오프셋 스토리지 주제를 사용합니다. 이것이 오프셋 저장소 주제를 __amazon_msk_connect_offsets_my-mskc-connector_12345678-09e7-4abc-8be8-c657f7e4ff32-2라고 부르는 이유입니다.

    __consumer_offsets __amazon_msk_canary __amazon_msk_connect_configs_my-mskc-connector_12345678-09e7-4abc-8be8-c657f7e4ff32-2 __amazon_msk_connect_offsets_my-mskc-connector_12345678-09e7-4abc-8be8-c657f7e4ff32-2 __amazon_msk_connect_status_my-mskc-connector_12345678-09e7-4abc-8be8-c657f7e4ff32-2 my-msk-topic-1 my-msk-topic-2
  2. https://console.aws.amazon.com/msk/에서 Amazon MSK 콘솔을 엽니다.

  3. 커넥터 목록에서 커넥터를 선택합니다. 커넥터 구성 필드의 내용을 복사하여 저장하면 이를 수정하고 새 커넥터를 생성하는 데 사용할 수 있습니다.

  4. 커넥터를 삭제하려면 삭제를 선택합니다. 그런 다음 텍스트 입력 필드에 커넥터 이름을 입력하여 삭제를 확인합니다.

  5. 시나리오에 적합한 값으로 사용자 지정 작업자 구성을 생성합니다. 지침은 사용자 지정 작업자 구성 생성 섹션을 참조하십시오.

    작업자 구성에서 다음 구성과 같이 이전에 검색한 오프셋 스토리지 주제의 이름을 offset.storage.topic의 값으로 지정해야 합니다.

    config.providers.secretManager.param.aws.region=us-east-1 key.converter=<org.apache.kafka.connect.storage.StringConverter> value.converter=<org.apache.kafka.connect.storage.StringConverter> config.providers.secretManager.class=com.github.jcustenborder.kafka.config.aws.SecretsManagerConfigProvider config.providers=secretManager offset.storage.topic=__amazon_msk_connect_offsets_my-mskc-connector_12345678-09e7-4abc-8be8-c657f7e4ff32-2
  6. 중요

    새 커넥터에 이전 커넥터와 동일한 이름을 지정해야 합니다.

    이전 단계에서 설정한 작업자 구성을 사용하여 새 커넥터를 생성합니다. 지침은 커넥터 생성 섹션을 참조하십시오.

고려 사항

소스 커넥터 오프셋을 관리할 때는 다음을 고려하세요.

  • 오프셋 스토리지 주제를 지정하려면 커넥터 오프셋이 저장되는 Kafka 주제의 이름을 작업자 구성에서 offset.storage.topic의 값으로 제공합니다.

  • 커넥터 구성을 변경할 때는 주의하세요. 구성 값을 변경하면 소스 커넥터가 구성 값을 키 오프셋 레코드에 사용하는 경우 의도하지 않은 커넥터 동작이 발생할 수 있습니다. 플러그인 설명서를 참조하여 지침을 확인하는 것을 권장합니다.

  • 기본 파티션 수 사용자 지정 - offset.storage.topic을 추가하여 작업자 구성을 사용자 지정하는 것 외에도 오프셋 및 상태 스토리지 주제에 대한 파티션 수를 사용자 지정할 수 있습니다. 내부 주제의 기본 파티션은 다음과 같습니다.

    • config.storage.topic: 1, 구성 불가능, 단일 파티션 주제여야 함

    • offset.storage.topic: 25, offset.storage.partitions를 제공하여 구성 가능

    • status.storage.topic: 5, status.storage.partitions를 제공하여 구성 가능

  • 주제 수동 삭제 – Amazon MSK Connect는 커넥터를 배포할 때마다 새로운 Kafka Connect 내부 주제(주제 이름은 __amazon_msk_connect로 시작)를 생성합니다. 삭제된 커넥터에 연결된 이전 주제는 자동으로 제거되지 않는데 내부 주제(예: offset.storage.topic)와 같은 주제는 커넥터 간에 다시 사용될 수 있기 때문입니다. 그러나 MSK Connect에서 생성한 사용하지 않는 내부 주제는 수동으로 삭제할 수 있습니다. 내부 주제의 이름은 __amazon_msk_connect_<offsets|status|configs>_connector_name_connector_id 형식에 따라 지정됩니다.

    __amazon_msk_connect_<offsets|status|configs>_connector_name_connector_id 정규 표현식을 사용하여 내부 주제를 삭제할 수 있습니다. 실행 중인 커넥터에서 현재 사용 중인 내부 주제를 삭제해서는 안 됩니다.

  • MSK Connect에서 생성한 내부 주제에 동일한 이름 사용 - 이전에 만든 커넥터에서 오프셋을 사용하기 위해 오프셋 스토리지 주제를 다시 사용하려면 새 커넥터에 이전 커넥터와 동일한 이름을 지정해야 합니다. 작업자 구성을 사용하여 offset.storage.topic 속성을 설정하고 offset.storage.topic에 동일한 이름을 할당하여 다른 커넥터 간에 다시 사용할 수 있습니다. 이 구성은 커넥터 오프셋 관리에 설명되어 있습니다. MSK Connect는 서로 다른 커넥터가 config.storage.topicstatus.storage.topic을 공유하는 것을 허용하지 않습니다. 이러한 주제는 MSKC에서 새 커넥터를 생성할 때마다 생성됩니다. 이러한 커넥터는 __amazon_msk_connect_<status|configs>_connector_name_connector_id 형식을 따라 자동으로 이름이 지정되므로 생성하는 커넥터마다 다릅니다.