3.4. KRaft 모드에서 Kafka 클러스터 실행


KRaft 모드에서 Kafka를 구성하고 실행합니다. Kafka를 단일 노드 또는 다중 노드 Kafka 클러스터로 실행할 수 있습니다. 안정성과 가용성을 위해 브로커 간 복제를 사용하여 최소 3개의 브로커와 3개의 컨트롤러 노드를 실행합니다.

Kafka 노드는 브로커, 컨트롤러 또는 둘 다의 역할을 수행합니다.

브로커 역할
노드 또는 서버라고도 하는 브로커는 스토리지 및 메시지 전달을 오케스트레이션합니다.
컨트롤러 역할
컨트롤러는 클러스터를 조정하고 브로커 및 파티션의 상태를 추적하는 데 사용되는 메타데이터를 관리합니다.
참고

클러스터 메타데이터는 내부 __cluster_metadata 항목에 저장됩니다.

이러한 기능을 분리하려는 경우 결합된 브로커 및 컨트롤러 노드를 사용할 수 있습니다. 결합된 역할을 수행하는 브로커는 간단한 배포에서 보다 편리합니다.

클러스터를 식별하려면 ID를 생성합니다. ID는 클러스터에 추가하는 노드의 로그를 생성할 때 사용됩니다.

각 노드의 구성에 다음을 지정합니다.

  • 노드 ID
  • 브로커 역할
  • 컨트롤러 역할을 하는 노드 목록(또는 실패자)

각 컨트롤러의 노드 ID 및 연결 세부 정보(호스트 및 포트)를 사용하여 노드 ID로 구성된 컨트롤러 목록을 지정합니다.

구성 속성 파일을 사용하여 역할 설정을 포함하여 브로커 구성을 적용합니다. 브로커 구성은 역할에 따라 다릅니다. Kraft는 세 가지 브로커 구성 속성 파일을 제공합니다.

  • /opt/kafka/config/kraft/broker.properties 에는 브로커 역할에 대한 예제 구성이 있습니다.
  • /opt/kafka/config/kraft/controller.properties 에는 컨트롤러 역할에 대한 예제 구성이 있습니다.
  • /opt/kafka/config/kraft/server.properties 에는 결합된 역할에 대한 예제 구성이 있습니다.

브로커 구성을 이러한 예제 속성 파일을 기반으로 할 수 있습니다. 이 절차에서 예제 server.properties 구성이 사용됩니다.

사전 요구 사항

프로세스

  1. Kafka 클러스터의 고유 ID를 생성합니다.

    kafka-storage 툴을 사용하여 이 작업을 수행할 수 있습니다.

    /opt/kafka/bin/kafka-storage.sh random-uuid

    명령에서 ID를 반환합니다. KRaft 모드에서는 클러스터 ID가 필요합니다.

  2. 클러스터의 각 노드에 대한 구성 속성 파일을 생성합니다.

    Kafka와 함께 제공된 예제의 파일을 기반으로 할 수 있습니다.

    1. 브로커, 컨트롤러 또는 브로커,컨트롤러로 역할을 지정

      예를 들어 결합된 역할에 대해 process.roles=broker 를 지정합니다.

    2. 0 부터 시작하여 클러스터의 각 노드에 대해 고유한 node.id 를 지정합니다.

      예: node.id=1.

    3. < node_id>@<hostname:port> 형식으로 controller.quorum.voECDSA 목록을 지정합니다.

      예를 들어 controller.quorum.vohaproxy=1@localhost:9093.

    4. 리스너를 지정합니다.

      • 각 리스너의 이름, 호스트 이름 및 포트를 구성합니다.

        예를 들어 listeners=PLAINTEXT:localhost:9092,CONTROLLER:localhost:9093.

      • broker 간 통신에 사용되는 리스너 이름을 구성합니다.

        예를 들어 inter.broker.listener.name=PLAINTEXT 입니다.

      • 컨트롤러 쿼럼에서 사용하는 리스너 이름을 구성합니다.

        예: controller.listener.names=CONTROLLER.

      • Kafka에 연결하기 위해 클라이언트에 알리는 각 리스너의 이름, 호스트 이름 및 포트를 구성합니다.

        예를 들어 advertise .listeners=PLAINTEXT:localhost:9092.

  3. Kafka 클러스터의 각 노드에 대한 로그 디렉터리를 설정합니다.

    /opt/kafka/bin/kafka-storage.sh format -t <uuid> -c /opt/kafka/config/kraft/server.properties

    반환:

    Formatting /tmp/kraft-combined-logs

    <uuid>를 생성한 클러스터 ID로 바꿉니다. 클러스터의 각 노드에 동일한 ID를 사용합니다.

    브로커용으로 생성한 속성 파일을 사용하여 브로커 구성을 적용합니다.

    기본적으로 server.properties 구성 파일에 지정된 로그 디렉터리(log.dirs)는 /tmp/kraft-combined-logs 로 설정됩니다. 일반적으로 /tmp 디렉터리는 시스템 재부팅마다 지워지므로 개발 환경에만 적합합니다.

    쉼표로 구분된 목록을 추가하여 여러 로그 디렉터리를 설정할 수 있습니다.

  4. 각 Kafka 노드를 시작합니다.

    /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
  5. Kafka가 실행 중인지 확인합니다.

    jcmd | grep kafka

    반환:

    process ID kafka.Kafka /opt/kafka/config/kraft/server.properties

    각 노드의 로그를 확인하여 KRaft 클러스터에 성공적으로 참여했는지 확인합니다.

    tail -f /opt/kafka/logs/server.log

이제 주제를 생성하고 브로커로부터 메시지를 보내고 받을 수 있습니다.

메시지를 전달하는 브로커의 경우 데이터 지속성을 위해 클러스터의 브로커 간에 주제 복제를 사용할 수 있습니다. 복제 요인이 3개 이상이고 최소 개수의 in-sync 복제본이 복제 요소보다 1로 설정되도록 주제를 구성합니다. 자세한 내용은 7.7절. “주제 생성”의 내용을 참조하십시오.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동