기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon MSK는 Apache ZooKeeper 또는 KRaft 메타데이터 관리 모드를 지원합니다.
Amazon MSK의 Apache Kafka 버전 3.7.x에서 ZooKeeper 모드 대신 KRaft 모드를 사용하는 클러스터를 생성할 수 있습니다. KRaft 기반 클러스터는 Kafka 내의 컨트롤러를 사용하여 메타데이터를 관리합니다.
ZooKeeper 모드
Apache ZooKeeper
클러스터에서 ZooKeeper 모드를 사용하는 경우 아래 단계를 사용하여 Apache ZooKeeper 연결 문자열을 가져올 수 있습니다. 하지만 Kafka 2.5에서는 --zookeeper
플래그가 더 이상 사용되지 않고 Kafka 3.0에서는 제거되므로 BootstrapServerString
을 사용하여 클러스터에 연결하고 관리자 작업을 수행하는 것이 좋습니다.
를 사용하여 Apache ZooKeeper 연결 문자열 가져오기 AWS Management Console
https://console.aws.amazon.com/msk/
에서 Amazon MSK 콘솔을 엽니다. -
이 표는 이 계정에 속한 현재 리전의 모든 클러스터를 보여줍니다. 설명을 보려면 클러스터의 이름을 선택합니다.
-
클러스터 요약 페이지에서 클라이언트 정보 보기를 선택합니다. 여기에는 부트스트랩 브로커와 Apache ZooKeeper 연결 문자열이 표시됩니다.
AWS CLI를 사용하여 Apache ZooKeeper 연결 문자열 가져오기
클러스터의 Amazon 리소스 이름(ARN)을 모르는 경우, 계정의 모든 클러스터를 나열하여 찾을 수 있습니다. 자세한 내용은 Amazon MSK 클러스터 나열 단원을 참조하십시오.
-
클러스터에 대한 다른 정보와 함께 Apache ZooKeeper 연결 문자열을 가져오려면
ClusterArn
을 클러스터의 ARN으로 바꾸어 다음 명령을 실행합니다.aws kafka describe-cluster --cluster-arn
ClusterArn
이
describe-cluster
명령의 출력은 다음 JSON 예제와 같습니다.{ "ClusterInfo": { "BrokerNodeGroupInfo": { "BrokerAZDistribution": "DEFAULT", "ClientSubnets": [ "subnet-0123456789abcdef0", "subnet-2468013579abcdef1", "subnet-1357902468abcdef2" ], "InstanceType": "kafka.m5.large", "StorageInfo": { "EbsStorageInfo": { "VolumeSize": 1000 } } }, "ClusterArn": "arn:aws:kafka:us-east-1:111122223333:cluster/testcluster/12345678-abcd-4567-2345-abcdef123456-2", "ClusterName": "testcluster", "CreationTime": "2018-12-02T17:38:36.75Z", "CurrentBrokerSoftwareInfo": { "KafkaVersion": "2.2.1" }, "CurrentVersion": "K13V1IB3VIYZZH", "EncryptionInfo": { "EncryptionAtRest": { "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:555555555555:key/12345678-abcd-2345-ef01-abcdef123456" } }, "EnhancedMonitoring": "DEFAULT", "NumberOfBrokerNodes": 3, "State": "ACTIVE", "ZookeeperConnectString": "10.0.1.101:2018,10.0.2.101:2018,10.0.3.101:2018" } }
이전 JSON 예제는
describe-cluster
명령 출력에 있는ZookeeperConnectString
키를 보여줍니다. 이 키에 해당하는 값을 복사하고, 클러스터에서 주제를 생성해야 할 때를 대비해 저장하십시오.중요
Apache ZooKeeper 연결 문자열을 가져오려면 Amazon MSK 클러스터가
ACTIVE
상태여야 합니다. 클러스터가 여전히CREATING
상태에 있으면describe-cluster
명령의 출력에ZookeeperConnectString
이 포함되지 않습니다 이 경우, 몇 분 정도 기다린 다음 클러스터가ACTIVE
상태에 도달한 후describe-cluster
를 다시 실행합니다.
API를 사용하여 Apache ZooKeeper 연결 문자열 가져오기
API를 사용하여 Apache ZooKeeper 연결 문자열을 가져오려면 DescribeCluster를 참조하십시오.
KRaft 모드
Amazon MSK는 Kafka 버전 3.7.x에서 KRaft(Apache Kafka Raft)에 대한 지원을 도입했습니다. Apache Kafka 커뮤니티는 Apache Kafka 클러스터의 메타데이터 관리를 위해 Apache ZooKeeper를 대체하도록 KRaft를 개발했습니다. KRaft 모드에서 클러스터 메타데이터는 ZooKeeper 노드 대신 Kafka 클러스터의 일부인 Kafka 컨트롤러 그룹 내에서 전파됩니다. KRaft 컨트롤러는 추가 비용 없이 포함되어 있으므로 추가 설정이나 관리가 필요하지 않습니다. KRaft에 대한 자세한 내용은 KIP-500
다음은 MSK의 KRaft 모드에 대해 유의해야 할 몇 가지 사항입니다.
-
KRaft 모드는 새로운 클러스터에만 사용할 수 있습니다. 클러스터가 생성된 후에는 메타데이터 모드를 전환할 수 없습니다.
MSK 콘솔에서 Kafka 버전 3.7.x를 선택하고 클러스터 생성 창에서 KRaft 확인란을 선택하여 Kraft 기반 클러스터를 생성할 수 있습니다.
MSK API
CreateCluster
또는CreateClusterV2
작업을 사용하여 KRaft 모드에서 클러스터를 생성하려면3.7.x.kraft
를 버전으로 사용해야 합니다.3.7.x
를 버전으로 사용하여 ZooKeeper 모드에서 클러스터를 생성합니다.브로커당 파티션 수는 KRaft 및 ZooKeeper 기반 클러스터에서 동일합니다. 하지만 KRaft를 사용하면 클러스터에 더 많은 브로커를 프로비저닝하여 클러스터당 더 많은 파티션을 호스팅할 수 있습니다.
Amazon MSK에서 KRaft 모드를 사용하기 위해 API를 변경할 필요는 없습니다. 그러나 클라이언트에서 지금도 여전히
--zookeeper
연결 문자열을 사용하는 경우--bootstrap-server
연결 문자열을 사용하여 클러스터에 연결하도록 클라이언트를 업데이트해야 합니다.--zookeeper
플래그는 Apache Kafka 버전 2.5에서 더 이상 사용되지 않으며 Kafka 버전 3.0부터 제거된다는 점에 유의하세요. 따라서 클러스터에 대한 모든 연결에는 최신 Apache Kafka 클라이언트 버전과--bootstrap-server
연결 문자열을 사용하는 것이 좋습니다.ZooKeeper 모드는 Apache Kafka에서 ZooKeeper도 지원하는 모든 릴리스 버전에서 계속 사용할 수 있습니다. Apache Kafka 버전 및 향후 업데이트에 대한 지원 종료에 대한 자세한 내용은 지원되는 Apache Kafka 버전 단원을 참조하세요.
사용하는 모든 도구에서 ZooKeeper 연결 없이 Kafka Admin API를 사용할 수 있는지 확인해야 합니다. 클러스터를 Cruise Control에 연결하는 업데이트된 단계는 Amazon MSK에서 Apache Kafka용 LinkedIn의 Cruise Control 사용 단원을 참조하세요. Cruise Control에는 ZooKeeper 없이 Cruise Control을 실행
하는 방법도 있습니다. -
관리 작업을 위해 클러스터의 KRaft 컨트롤러에 직접 액세스할 필요는 없습니다. 그러나 오픈 모니터링을 사용하여 지표를 수집하는 경우 클러스터에 대한 일부 비컨트롤러 관련 지표를 수집하려면 컨트롤러의 DNS 엔드포인트도 필요합니다. MSK 콘솔에서 또는 ListNodes API 작업을 사용하여 이러한 DNS 엔드포인트를 가져올 수 있습니다. KRaft 기반 클러스터에 대한 오픈 모니터링 설정을 위한 업데이트된 단계는 Prometheus를 사용하여 MSK 프로비저닝된 클러스터 모니터링 단원을 참조하세요.
ZooKeeper 모드 클러스터를 통해 KRaft 모드 클러스터를 모니터링하는 데 필요한 추가 CloudWatch 지표는 없습니다. MSK는 클러스터에 사용되는 KRaft 컨트롤러를 관리합니다.
-
--bootstrap-server
연결 문자열을 사용하여 KRaft 모드 클러스터에서 ACL을 계속 관리할 수 있습니다.--zookeeper
연결 문자열을 사용하여 ACL을 관리해서는 안 됩니다. Apache Kafka ACL을(를) 참조하세요. KRaft 모드에서 클러스터의 메타데이터는 외부 ZooKeeper 노드가 아닌 Kafka 내의 KRaft 컨트롤러에 저장됩니다. 따라서 ZooKeeper 노드와 마찬가지로 컨트롤러 노드에 대한 액세스를 별도로 제어할 필요는 없습니다.