웹사이트 검색

Rocky Linux에 Apache Kafka를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 자바 OpenJDK 설치
  3. Apache Kafka 다운로드
  4. 시스템 서비스로 Kafka 실행\n
  5. Kafka Console Producer 및 Consumer를 사용한 기본 작업\n
  6. Kafka Connect 플러그인으로 데이터 스트리밍\n
  7. 결론

Apache Kafka는 스트리밍 데이터를 실시간으로 처리하기 위한 분산 데이터 저장소입니다. Apache Software Foundation에서 개발하고 Java 및 Scala로 작성되었습니다. Apache Kafka는 특히 엔터프라이즈급 애플리케이션 및 미션 크리티컬 애플리케이션을 위해 데이터 스트림에 적응하는 실시간 스트리밍 데이터 파이프라인 및 애플리케이션을 구축하는 데 사용됩니다. 고성능 데이터 파이프라인, 스트리밍 분석 및 데이터 통합을 위해 수천 개의 회사에서 사용하는 가장 인기 있는 데이터 스트림 플랫폼 중 하나입니다.

Apache Kafka는 메시징, 스토리지 및 스트림 처리를 한 곳에서 결합합니다. 사용자가 실시간으로 데이터를 수집, 처리 및 스트리밍하기 위한 고성능의 강력한 데이터 스트림을 설정할 수 있습니다. 수십억 개의 스트리밍 이벤트를 처리할 수 있는 확장 기능을 갖춘 최신 분산 애플리케이션에 사용됩니다.

이 튜토리얼에서는 Rocky Linux 서버에 Apache Kafka를 설치하고 Kafka 플러그인을 통해 스트리밍 데이터를 위한 메시지 브로커로서 Kafka의 기본 사용법을 배웁니다.

전제 조건

이 자습서를 따르려면 다음 요구 사항이 필요합니다.

  • Rocky Linux 서버 - Rocky Linux v8 또는 v9를 사용할 수 있습니다.\n
  • sudo 루트 권한을 가진 루트가 아닌 사용자.\n

자바 OpenJDK 설치

Apache Kafka는 Java 기반 애플리케이션입니다. Kafka를 설치하려면 먼저 시스템에 Java를 설치합니다. 이 글을 쓰는 시점에서 Apache Kafka의 최신 버전에는 Java OpenJDK v11 이상이 필요했습니다.

첫 번째 단계에서는 공식 Rocky Linux 리포지토리에서 Java OpenJDK 11을 설치합니다.

아래 dnf 명령을 실행하여 Rocky Linux 시스템에 Java OpenJDK 11을 설치합니다.

sudo dnf install java-11-openjdk

설치를 확인하라는 메시지가 표시되면 y를 입력하고 ENTER를 눌러 계속 진행합니다.

Java 설치 후 다음 명령을 사용하여 Java 버전을 확인하십시오. Rocky Linux 시스템에 Java OpenJDK 11이 설치되어 있는 것을 볼 수 있습니다.

java version

Java가 설치되었으므로 이제 Apache Kafka 설치를 시작합니다.

아파치 카프카 다운로드

Apache Kafka는 Linux/Unix를 포함한 여러 운영 체제에 대한 여러 바이너리 패키지를 제공합니다. 이 단계에서는 Kafka용 새 전용 시스템 사용자를 만들고 Kafka 바이너리 패키지를 다운로드하고 Apache Kafka 설치를 구성합니다.

다음 명령을 실행하여 kafka라는 새 시스템 사용자를 생성합니다. 이렇게 하면 Kafka 설치 디렉터리로 사용되는 기본 홈 디렉터리 /opt/kafka를 사용하여 Kafka에 대한 새 시스템 사용자가 생성됩니다.

sudo useradd -r -d /opt/kafka -s /usr/sbin/nologin kafka

이제 작업 디렉토리를 /opt로 이동하십시오. 그런 다음 아래 curl 명령을 통해 Apache Kafka 바이너리 패키지를 다운로드합니다. 이제 kafka.tar.gz 파일이 표시됩니다.

cd /opt
sudo curl -fsSLo kafka.tgz https://downloads.apache.org/kafka/3.3.1/kafka_2.12-3.3.1.tgz

tar 명령을 통해 kafka.tar.gz 파일을 추출하고 추출된 디렉토리의 이름을 /opt/kafka로 바꿉니다.

tar -xzf kafka.tgz
sudo mv kafka_2.12-3.3.1 /opt/kafka

다음으로 아래의 chmod 명령을 통해 /opt/kafka 디렉터리의 소유권을 kafka 사용자로 변경합니다.

sudo chown -R kafka:kafka /opt/kafka

그런 다음 Apache Kafka에 대한 새 로그 디렉터리를 만듭니다. 그런 다음 nano 편집기를 통해 기본 구성 server.properties를 편집합니다.

sudo -u kafka mkdir -p /opt/kafka/logs
sudo -u kafka nano /opt/kafka/config/server.properties

Kafka 로그 디렉터리는 Apache Kafka 로그를 저장하는 데 사용되며 Kakfka 구성 sertver.properties에서 로그 디렉터리를 정의해야 합니다.

log.dirs 옵션의 주석을 해제하고 값을 /opt/kafka/logs로 변경합니다.

# logs configuration for Apache Kafka
log.dirs=/opt/kafka/logs

파일을 저장하고 완료되면 편집기를 종료하십시오.

이제 Apache Kafka의 기본 설치 및 구성을 완료했습니다. 다음으로 Apache Kafka를 시스템 서비스로 설정하고 실행합니다.

Kafka를 시스템 서비스로 실행

Apache Kafka 패키지에는 서비스를 중앙 집중화하고 Kafka 컨트롤러 선택, 주제 구성 및 Apache Kafka 클러스터용 ACL(액세스 제어 목록)을 유지 관리하는 데 사용되는 또 다른 애플리케이션 Zookeeper가 포함되어 있습니다.

Apache Kafka를 실행하려면 먼저 시스템에서 Zookeeper를 실행해야 합니다. 그리고 이 단계에서는 Zookeeper와 Apache Kafka 모두에 대한 새로운 systemd 서비스 파일을 생성합니다. 두 서비스 모두 동일한 사용자 kafka로 실행됩니다.

다음 명령을 사용하여 Zookeeper /etc/systemd/system/zookeeper.service에 대한 새 서비스 파일을 만듭니다.

sudo nano /etc/systemd/system/zookeeper.service

파일에 구성을 추가합니다.

[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
User=kafka
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

파일을 저장하고 완료되면 편집기를 종료하십시오.

다음으로 아래 명령을 사용하여 Apache Kafka /etc/systemd/system/kafka.service에 대한 새 서비스 파일을 만듭니다.

sudo nano /etc/systemd/system/kafka.service

파일에 다음 구성을 추가합니다. [Unit] 섹션에서 Kafka 서비스가 zookeeper.service가 먼저 실행되고 항상 zookeeper.service 이후에 실행되어야 한다는 것을 볼 수 있습니다.

[Unit]
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > /opt/kafka/logs/start-kafka.log 2>&1'
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

파일을 저장하고 완료되면 편집기를 종료하십시오.

다음으로 다음 systemctl 명령을 실행하여 systemd 관리자를 다시 로드하고 새 서비스를 적용합니다.

sudo systemctl daemon-reload

이제 다음 명령을 사용하여 사육사 및 kafka 서비스를 시작하십시오.

sudo systemctl start zookeeper
sudo systemctl start kafka

아래의 systemctl 명령을 통해 시스템 부팅 시 kafka 및 zookeeper 서비스가 자동으로 실행되도록 활성화합니다.

sudo systemctl enable zookeeper
sudo systemctl enable kafka

마지막으로 아래 명령을 사용하여 zookeeper와 kafka 서비스를 모두 확인합니다.

sudo systemctl status zookeeper
sudo systemctl status kafka

아래 출력에서 Zookeeper 서비스의 현재 상태가 실행 중이고 활성화되어 있음을 확인할 수 있습니다.

그리고 아래에서 kafka 서비스 상태는 실행 중이고 서비스도 활성화되어 있습니다.

이제 Apache Kafka 설치가 완료되었으며 실행 중입니다. 다음으로 메시지 생성을 위한 메시지 브로커로서 Apache Kafka의 기본 사용법을 배우고 Kafka 플러그인을 사용하여 데이터를 실시간으로 스트리밍하는 방법도 배웁니다.

Kafka 콘솔 생산자 및 소비자를 사용한 기본 작업

시작하기 전에 이 예제에 사용될 모든 명령은 /opt/kafka/bin 디렉터리에서 사용할 수 있는 Kafka 패키지에서 제공됩니다.

이 단계에서는 Kafka 주제를 만들고 나열하는 방법, 생산자를 시작하고 데이터를 삽입하는 방법, 소비자 스크립트를 통해 데이터를 스트리밍하는 방법, 마지막으로 Kafka 주제를 삭제하여 환경을 정리하는 방법을 배웁니다.

다음 명령을 실행하여 새 Kafka 주제를 생성합니다. kafka-topics.sh 스크립트를 사용하여 하나의 복제 및 파티션이 있는 TestTopic이라는 이름의 새 주제를 생성합니다.

sudo -u kafka /opt/kafka/bin/kafka-topics.sh \
--create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic TestTopic

이제 다음 명령을 실행하여 Kafka의 주제 목록을 확인하십시오. Kafka 서버에 TestTopic이 생성된 것을 볼 수 있습니다.

sudo -u kafka /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092

다음으로, 메시지를 생성하기 위해 kafka-console-producser.sh 스크립트를 사용한 다음 처리할 데이터를 삽입할 수 있습니다.

다음 명령을 실행하여 Kafka Console Producer를 시작하고 TestTopic에 주제를 지정하십시오.

sudo -u kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TestTopic

Kafka Console Producer를 받은 후 처리할 메시지를 입력합니다.

그런 다음 새 터미널 세션을 열고 서버에 로그인합니다. 그런 다음 kafka-conosle-consumer.sh 스크립트를 통해 Kafka Console Consumer를 엽니다.

아래 명령을 실행하여 kafka Console Consumer를 시작하고 주제를 TestTopic으로 지정합니다.

sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TestTopic --from-beginning

아래 스크린샷에서 Kafka 콘솔 생산자의 모든 메시지가 소비자 콘솔로 처리되는 것을 볼 수 있습니다. Console Producer에서 다른 메시지를 입력할 수도 있으며 메시지가 자동으로 진행되어 Console Consumer 화면에 표시됩니다.

이제 Ctrl+c를 눌러 Kafka Console Producer와 Kafka Console Consumer를 모두 종료합니다.

Kafka 환경을 정리하려면 다음 명령을 통해 TestTopic을 삭제하고 제거할 수 있습니다.

sudo -u kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic TestTopic

Kafka Connect 플러그인으로 데이터 스트리밍

Apache Kafka는 여러 소스에서 데이터를 스트리밍하는 데 사용할 수 있는 여러 플러그인을 제공합니다. 추가 Kafka 라이브러리 플러그인은 기본적으로 /opt/kafka/libs 디렉토리에서 사용할 수 있습니다. 구성 파일 /opt/kafka/config/connect-standalone.properties<를 통해 kafka 플러그인을 활성화해야 합니다. /엠>. 이 경우 Kafka 독립 실행형 모드의 경우입니다.

다음 명령을 실행하여 Kafka 구성 파일 /opt/kafka/config/connect-standalone.properties를 편집합니다.

sudo -u kafka nano /opt/kafka/config/connect-standalone.properties

plugin.path 줄의 주석을 해제하고 값을 플러그인 라이브러리 디렉토리 /opt/kakfa/libs로 변경합니다.

plugin.path=/opt/kafka/libs

파일을 저장하고 완료되면 편집기를 종료하십시오.

그런 다음 다음 명령을 실행하여 Kafka 스트림의 데이터 원본으로 사용할 새 파일 /opt/kafka/test.txt을 만듭니다.

sudo -u kafka echo -e "Test message from file\nTest using Kafka connect from file" > /opt/kafka/test.txt

이제 다음 명령을 실행하여 connect-file-source.propertiesconnect-file-sink.properties 구성 파일을 사용하여 독립 실행형 모드에서 Kafka 소비자를 시작합니다.

이 명령 및 구성은 방금 생성한 소스 파일 test.txt가 포함된 Kafka 데이터 스트림의 기본 예입니다. 이 예제는 또한 Kafka 콘솔 소비자를 통해 액세스할 수 있는 새로운 주제 connect-test를 자동으로 생성합니다.

cd /opt/kafka
sudo -u kafka /opt/kafka/bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties

이제 다른 터미널 세션을 열고 다음 명령을 실행하여 Kafka 콘솔 소비자를 시작합니다. 또한 connect-test할 주제를 지정합니다. test.txt 파일에서 메시지가 표시됩니다.

sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic connect-test --from-beginning

이제 test.txt 파일을 업데이트할 수 있으며 새 메시지가 Kafka 콘솔 소비자에서 자동으로 처리 및 스트리밍됩니다.

다음 명령을 실행하여 test.txt 파일을 새 메시지로 업데이트합니다.

sudo -u kafka echo "Another test message from file test.txt" >> test.txt

다음 출력에서 test.txt 파일에 변경 사항이 있을 때 Kafka가 새 메시지를 자동으로 처리하는 것을 볼 수 있습니다. 이제 파일을 통해 메시지를 스트리밍하기 위한 Kafka 연결 플러그인의 기본 사용을 완료했습니다.

결론

이 가이드를 통해 Rocky Linux 시스템에 Apache Kafka를 설치하는 방법을 배웠습니다. 또한 메시지 생성 및 처리를 위한 Kafka 생산자 콘솔과 메시지 수신을 위한 Kafka 소비자의 기본 사용법도 배웠습니다. 마지막으로 파일에서 실시간으로 메시지를 스트리밍하기 위해 Kafka 플러그인을 활성화하고 Kafka Connect 플러그인을 사용하는 방법도 배웠습니다.