5.4. Kafka 구성


Kafka는 속성 파일을 사용하여 정적 구성을 저장합니다. 구성 파일에 권장되는 위치는 /opt/kafka/config/server.properties 입니다. kafka 사용자가 구성 파일을 읽을 수 있어야 합니다.

Apache Kafka의 스트림은 제품의 다양한 기본 및 고급 기능을 강조하는 구성 파일을 제공합니다. 이는 Apache Kafka 설치 디렉터리의 Streams의 config/server.properties 에서 확인할 수 있습니다.

이 장에서는 가장 중요한 구성 옵션에 대해 설명합니다.

5.4.1. ZooKeeper

Kafka 브로커는 구성의 일부를 저장하고 클러스터를 조정하고 (예: 어떤 노드가 어떤 파티션의 리더인지 결정하는 데) Zoo Cryostat가 필요합니다. Zoo Cryostat 클러스터의 연결 세부 정보는 구성 파일에 저장됩니다. zookeeper.connect 필드에는 콤마로 구분된 호스트 이름 목록과 zookeeper 클러스터 멤버의 포트가 포함되어 있습니다.

예를 들면 다음과 같습니다.

zookeeper.connect=zoo1.my-domain.com:2181,zoo2.my-domain.com:2181,zoo3.my-domain.com:2181

Kafka는 이러한 주소를 사용하여 Zoo Cryostat 클러스터에 연결합니다. 이 구성을 사용하면 모든 Kafka znodes 가 Zoo Cryostat 데이터베이스의 루트에서 직접 생성됩니다. 따라서 이러한 Zoo Cryostat 클러스터는 단일 Kafka 클러스터에만 사용할 수 있습니다. 단일 Zoo Cryostat 클러스터를 사용하도록 여러 Kafka 클러스터를 구성하려면 Kafka 구성 파일의 Zoo Cryostat 연결 문자열 끝에 기본(접두사) 경로를 지정합니다.

zookeeper.connect=zoo1.my-domain.com:2181,zoo2.my-domain.com:2181,zoo3.my-domain.com:2181/my-cluster-1

5.4.2. 리스너

리스너는 Kafka 브로커에 연결하는 데 사용됩니다. 각 Kafka 브로커는 여러 리스너를 사용하도록 구성할 수 있습니다. 각 리스너에는 다른 포트 또는 네트워크 인터페이스에서 수신 대기할 수 있도록 다른 구성이 필요합니다.

리스너를 구성하려면 Kafka 구성 속성 파일에서 listeners 속성을 편집합니다. listeners 속성에 쉼표로 구분된 목록으로 리스너를 추가합니다. 다음과 같이 각 속성을 구성합니다.

<listener_name>://<hostname>:<port>

< hostname >이 비어 있으면 Kafka에서 java.net.InetAddress.getCanonicalHostName() 클래스를 호스트 이름으로 사용합니다.

여러 리스너 구성 예

listeners=internal-1://:9092,internal-2://:9093,replication://:9094

Kafka 클라이언트가 Kafka 클러스터에 연결하려고 하면 먼저 클러스터 노드 중 하나인 부트스트랩 서버에 연결합니다. 부트스트랩 서버는 클러스터에 있는 모든 브로커 목록을 클라이언트에 제공하고 클라이언트는 각각 개별적으로 연결합니다. 브로커 목록은 구성된 리스너 를 기반으로 합니다.

공개된 리스너

선택적으로 advertise .listeners 속성을 사용하여 클라이언트에 listeners 속성에 지정된 것과 다른 리스너 주소 집합을 제공할 수 있습니다. 프록시와 같은 추가 네트워크 인프라가 클라이언트와 브로커 간이거나 IP 주소 대신 외부 DNS 이름을 사용하는 경우 유용합니다.

advertise .listeners 속성은 listeners 속성과 동일한 방식으로 포맷됩니다.

광고된 리스너에 대한 구성 예

listeners=internal-1://:9092,internal-2://:9093
advertised.listeners=internal-1://my-broker-1.my-domain.com:1234,internal-2://my-broker-1.my-domain.com:1235

참고

공개된 리스너의 이름은 listeners 속성에 나열된 리스너와 일치해야 합니다.

broker 리스너

broker 리스너 는 Kafka 브로커 간 통신에 사용됩니다. 다음의 경우broker 간 통신이 필요합니다.

  • 서로 다른 브로커 간 워크로드 조정
  • 다른 브로커에 저장된 파티션 간 메시지 복제

broker 리스너는 선택한 포트에 할당할 수 있습니다. 여러 리스너가 구성된 경우 브로커 구성의 inter.broker.listener .name 속성에broker 리스너의 이름을 정의할 수 있습니다.

여기에서는broker 리스너의 이름이 REPLICATION 으로 지정됩니다.

listeners=REPLICATION://0.0.0.0:9091
inter.broker.listener.name=REPLICATION

컨트롤러 리스너

컨트롤러 구성은 클러스터를 조정하고 브로커 및 파티션의 상태를 추적하는 데 사용되는 메타데이터를 관리하는 컨트롤러와 연결하는 데 사용됩니다.

기본적으로 컨트롤러와 브로커 간의 통신은 전용 컨트롤러 리스너를 사용합니다. 컨트롤러는 파티션 리더십 변경과 같은 관리 작업을 조정해야 하므로 이러한 리스너 중 하나 이상이 필요합니다.

controller.listener.names 속성을 사용하여 컨트롤러에 사용할 리스너를 지정합니다. controller .quorum.voECDSA 속성을 사용하여 컨트롤러 구성원 의 쿼럼을 지정할 수 있습니다. 쿼럼은 관리 작업에 리더로 구조를 사용할 수 있으며, 리더는 핫 대기로 운영 및 팔로워를 적극적으로 관리하고 메모리의 메타데이터 일관성을 보장하고 장애 조치를 지원합니다.

listeners=CONTROLLER://0.0.0.0:9090
controller.listener.names=CONTROLLER
controller.quorum.voters=1@localhost:9090

컨트롤러 구성원의 형식은 < cluster_id>@<hostname>:<port>입니다.

5.4.3. 커밋 로그

Apache Kafka는 커밋 로그에서 생산자에서 수신하는 모든 레코드를 저장합니다. 커밋 로그에는 Kafka가 제공해야 하는 레코드 형식의 실제 데이터가 포함됩니다. 이러한 레코드는 브로커의 활동을 자세히 설명하는 애플리케이션 로그 파일과 다릅니다.

로그 디렉터리

log.dirs 속성 파일을 사용하여 로그 디렉터리를 구성하여 하나 이상의 로그 디렉터리에 커밋 로그를 저장할 수 있습니다. 설치 중에 생성된 /var/lib/kafka 디렉터리로 설정해야 합니다.

log.dirs=/var/lib/kafka

성능상의 이유로 log.dirs를 여러 디렉터리로 구성하고 각각 물리적 장치를 다른 물리적 장치에 배치하여 디스크 I/O 성능을 향상시킬 수 있습니다. 예를 들면 다음과 같습니다.

log.dirs=/var/lib/kafka1,/var/lib/kafka2,/var/lib/kafka3

5.4.4. 브로커 ID

broker ID는 클러스터의 각 브로커의 고유 식별자입니다. 브로커 ID로 0보다 크거나 같은 정수를 할당할 수 있습니다. 브로커 ID는 재시작 또는 충돌 후 브로커를 식별하는 데 사용되며, 따라서 ID가 안정적이며 시간이 지남에 따라 변경되지 않는 것이 중요합니다. 브로커 ID는 브로커 속성 파일에 구성되어 있습니다.

broker.id=1
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.