OpenSearch 수집 파이프라인 사용: Amazon Managed Streaming for Apache Kafka - 아마존 OpenSearch 서비스

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

OpenSearch 수집 파이프라인 사용: Amazon Managed Streaming for Apache Kafka

Kafka 플러그인을 사용하여 Apache MSK Kafka용 아마존 매니지드 스트리밍 (Amazon) 의 데이터를 수집 파이프라인으로 수집할 수 있습니다. OpenSearch MSKAmazon에서는 Apache Kafka를 사용하여 스트리밍 데이터를 처리하는 애플리케이션을 구축하고 실행할 수 있습니다. OpenSearch 인제스트는 AWS PrivateLink Amazon에 연결하는 데 사용됩니다. MSK Amazon MSK 및 Amazon MSK 서버리스 클러스터 모두에서 데이터를 수집할 수 있습니다. 두 프로세스 간의 유일한 차이점은 파이프라인을 설정하기 전에 거쳐야 하는 사전 단계 뿐입니다.

아마존 MSK 사전 요구 사항

OpenSearch 수집 파이프라인을 생성하기 전에 다음 단계를 수행하십시오.

  1. Apache Kafka용 Amazon 관리형 스트리밍 개발자 안내서의 클러스터 생성에 나와 있는 단계에 따라 Amazon MSK 프로비저닝 클러스터를 생성하십시오. 브로커 유형의 경우 Ingestion에서 지원하지 않으므로 t3 유형을 제외한 모든 옵션을 선택하십시오. OpenSearch

  2. 클러스터가 활성 상태가 되면 다중 VPC 연결 켜기의 단계를 따르십시오.

  3. 클러스터와 파이프라인이 동일한지 여부에 따라 MSK 클러스터에 클러스터 정책 연결의 단계에 따라 다음 정책 중 하나를 연결합니다 AWS 계정. 이 정책은 OpenSearch Ingestion이 Amazon MSK 클러스터에 대한 AWS PrivateLink 연결을 생성하고 Kafka 주제에서 데이터를 읽을 수 있도록 허용합니다. 직접 업데이트해야 합니다. resource ARN

    클러스터와 파이프라인이 동일한 AWS 계정에 있는 경우 다음 정책이 적용됩니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "Service": "osis-pipelines.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:GetBootstrapBrokers", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" } ] }

    Amazon MSK 클러스터가 파이프라인과 다른 AWS 계정 곳에 있는 경우 다음 정책을 대신 연결하십시오. 단, 계정 간 액세스는 프로비저닝된 Amazon 클러스터에서만 가능하며 MSK Amazon 서버리스 클러스터에서는 MSK 불가능합니다. ARN양식은 파이프라인 구성에 제공하는 것과 동일한 파이프라인 역할에 ARN 대한 AWS principal 것이어야 합니다. YAML

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{msk-account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "Service": "osis-pipelines.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:GetBootstrapBrokers", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{msk-account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{pipeline-account-id}:role/pipeline-role" }, "Action": [ "kafka-cluster:*", "kafka:*" ], "Resource": [ "arn:aws:kafka:us-east-1:{msk-account-id}:cluster/cluster-name/cluster-id", "arn:aws:kafka:us-east-1:{msk-account-id}:topic/cluster-name/cluster-id/*", "arn:aws:kafka:us-east-1:{msk-account-id}:group/cluster-name/*" ] } ] }
  4. 주제 생성의 단계에 따라 Kafka 주제를 생성하세요. 프라이빗 엔드포인트 (단일VPC) 부트스트랩 중 BootstrapServerString 하나인지 확인하세요. URLs 의 값은 Amazon MSK 클러스터의 영역 수를 기준으로 2 하거나 --replication-factor 3 값이어야 합니다. --partitions의 값은 최소 10 이상이어야 합니다.

  5. 데이터 생산 및 소비의 단계에 따라 데이터를 생산하고 소비하세요. 다시 말하지만, BootstrapServerString 이것이 프라이빗 엔드포인트 (단일VPC) 부트스트랩 URLs 중 하나인지 확인하십시오.

Amazon MSK 서버리스 사전 요구 사항

OpenSearch 수집 파이프라인을 생성하기 전에 다음 단계를 수행하십시오.

  1. Apache MSK Kafka용 Amazon 관리형 스트리밍 개발자 안내서의 MSK서버리스 클러스터 생성에 나와 있는 단계에 따라 Amazon 서버리스 클러스터를 생성하십시오.

  2. 클러스터가 활성 상태가 되면 클러스터에 클러스터 정책 연결의 단계에 따라 다음 정책을 연결하십시오. MSK 직접 업데이트해야 ARN 합니다. resource

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" }, { "Effect": "Allow", "Principal": { "Service": "osis-pipelines.amazonaws.com" }, "Action": [ "kafka:CreateVpcConnection", "kafka:GetBootstrapBrokers", "kafka:DescribeClusterV2" ], "Resource": "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" } ] }

    이 정책을 통해 OpenSearch Ingestion은 Amazon MSK 서버리스 클러스터에 대한 AWS PrivateLink 연결을 생성하고 Kafka 주제에서 데이터를 읽을 수 있습니다. 이 정책은 클러스터와 파이프라인이 동일한 위치에 있을 때 적용되며 AWS 계정, Amazon MSK Serverless는 계정 간 액세스를 지원하지 않으므로 반드시 준수해야 합니다.

  3. 주제 생성의 단계에 따라 Kafka 주제를 생성하세요. BootstrapServerString이것이 단순 인증 및 보안 계층 (SASL) IAM 부트스트랩 중 하나인지 확인하십시오. URLs 의 값은 Amazon MSK 서버리스 클러스터의 영역 수를 기준으로 2 하거나 --replication-factor 3 값이어야 합니다. --partitions의 값은 최소 10 이상이어야 합니다.

  4. 데이터 생산 및 소비의 단계에 따라 데이터를 생산하고 소비하세요. 다시 한 번 말씀드리지만, BootstrapServerString 이것이 단순 인증 및 보안 계층 (SASL) IAM 부트스트랩 URLs 중 하나인지 확인하십시오.

1단계: 파이프라인 역할 구성

Amazon MSK 프로비저닝 또는 서버리스 클러스터를 설정한 후, 파이프라인 구성에서 사용하려는 파이프라인 역할에 다음 Kafka 권한을 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kafka-cluster:Connect", "kafka-cluster:AlterCluster", "kafka-cluster:DescribeCluster", "kafka:DescribeClusterV2", "kafka:GetBootstrapBrokers" ], "Resource": [ "arn:aws:kafka:us-east-1:{account-id}:cluster/cluster-name/cluster-id" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:*Topic*", "kafka-cluster:ReadData" ], "Resource": [ "arn:aws:kafka:us-east-1:{account-id}:topic/cluster-name/cluster-id/topic-name" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:AlterGroup", "kafka-cluster:DescribeGroup" ], "Resource": [ "arn:aws:kafka:us-east-1:{account-id}:group/cluster-name/*" ] } ] }

2단계: 파이프라인 생성

그런 다음 다음과 같이 Kafka를 OpenSearch 소스로 지정하는 통합 파이프라인을 구성할 수 있습니다.

version: "2" log-pipeline: source: kafka: acknowledgements: true topics: - name: "topic-name" group_id: "group-id" aws: msk: arn: "arn:aws:kafka:{region}:{account-id}:cluster/cluster-name/cluster-id" region: "us-west-2" sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" processor: - grok: match: message: - "%{COMMONAPACHELOG}" - date: destination: "@timestamp" from_time_received: true sink: - opensearch: hosts: ["https://search-domain-endpoint.us-east-1.es.amazonaws.com"] index: "index_name" aws_sts_role_arn: "arn:aws:iam::{account-id}:role/pipeline-role" aws_region: "us-east-1" aws_sigv4: true

사전 구성된 Amazon MSK 블루프린트를 사용하여 이 파이프라인을 생성할 수 있습니다. 자세한 내용은 청사진을 사용하여 파이프라인 생성 단원을 참조하십시오.

3단계: (선택 사항) 스키마 레지스트리 사용 AWS Glue

OpenSearch Ingestion with MSK Amazon을 사용하는 경우 스키마 레지스트리에 호스팅된 스키마의 AVRO 데이터 형식을 사용할 수 있습니다. AWS Glue AWS Glue 스키마 레지스트리를 사용하면 데이터 스트림 스키마를 중앙에서 검색, 제어 및 발전시킬 수 있습니다.

이 옵션을 사용하려면 파이프라인 구성에서 스키마 type를 활성화하세요.

schema: type: "aws_glue"

또한 파이프라인 역할에 읽기 액세스 권한을 제공해야 AWS Glue 합니다. 라는 AWS 관리형 정책을 사용할 수 AWSGlueSchemaRegistryReadonlyAccess있습니다. 또한 레지스트리는 통합 AWS 계정 파이프라인과 동일한 지역 및 지역에 있어야 OpenSearch 합니다.

4단계: (선택 사항) Amazon MSK 파이프라인의 권장 컴퓨팅 유닛 구성 (OCUs)

각 컴퓨팅 유닛에는 주제당 한 명의 소비자가 있습니다. 브로커는 특정 주제에 대해 이러한 소비자 간의 파티션을 조정합니다. 그러나 파티션 수가 소비자 수보다 많을 경우 Amazon은 모든 소비자에게 여러 파티션을 MSK 호스팅합니다. OpenSearch Ingestion에는 CPU 사용량 또는 파이프라인에서 보류 중인 레코드 수에 따라 규모를 늘리거나 줄일 수 있는 Auto Scaling이 내장되어 있습니다.

성능을 최적화하려면 여러 컴퓨팅 유닛에 파티션을 분산하여 병렬 처리하세요. 주제에 많은 수의 파티션이 있는 경우 (예: OCUs 파이프라인당 최대값인 96개 초과) 파이프라인을 1~96개로 구성하는 것이 좋습니다. OCUs 필요에 따라 자동으로 크기가 조정되기 때문입니다. 주제의 파티션 수가 적은 경우(예: 96개 미만), 최대 컴퓨팅 유닛을 파티션 수와 동일하게 유지하세요.

파이프라인에 주제가 한 개 이상 있는 경우 파티션 수가 가장 많은 주제를 참조로 선택하여 최대 컴퓨팅 유닛을 구성하세요. 동일한 주제 및 소비자 그룹에 새 세트를 포함하는 다른 파이프라인을 추가하면 처리량을 거의 선형적으로 확장할 수 있습니다. OCUs