구축/ELK

[Apache KAFKA] zookeeper, kafka 구축

KidAnt 2024. 4. 1. 14:33

카푸카(KAFKA)란?

  • Apache Kafka(Kafka)는 실시간 이벤트 기반 애플리케이션 개발을 지원하는 것을 비롯하여 많은 이점을 가진 오픈 소스 분산형 스트리밍 플랫폼이다 (출처)
  • Pub-Sub 모델의 메세지 큐 형태로 동작하며 각 아키텍처간의 중간 파이프라인을 맡아 동작하며 분산환경에 특화되어 있다.
  • 설치 환경(OS): Ubuntu 22.04

 

JDK 유무 확인

  • KAFKA는 java로 작성되었으므로 JDK가 필요하다 그러므로 JDK의 존재 유무를 확인하여 없을시 설치해야한다
root@ubuntu:/home/ubuntu# apt list default-jdk
Listing... Done
default-jdk/jammy,now 2:1.11-72build2 amd64 [installed]
#jdk가 설치되어 있으므로 설치는 생략
  • 필자는 설치되어 있음을 확인하여 과정을 생략하였으나 설치되지 않았다면 아래의 명령어를 쳐 설치하길 바린다.
apt install default-jdk

설치(zookeeper, kafka)

  • 본격적인 설치를 하기위해서 아파치 카푸카 설치 사이트에 접속하여 최신버전의 tgz파일 링크를 미리 복사해둔다.
  • 필자가 설치할 당시엔 3.6.1이 안정화된 최신버전이였다.(현재는 3.7.0)
root@ubuntu:/home/ubuntu# wget https://downloads.apache.org/kafka/3.6.1/kafka_2.12-3.6.1.tgz
#카푸카 설치 파일(tgz)을 받아온다

--2024-02-13 15:37:59--  https://downloads.apache.org/kafka/3.6.1/kafka_2.12-3.6.1.tgz
Resolving downloads.apache.org (downloads.apache.org)... 135.181.214.104, 88.99.95.219, 2a01:4f8:10a:201a::2, ...
Connecting to downloads.apache.org (downloads.apache.org)|135.181.214.104|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 113609072 (108M) [application/x-gzip]
Saving to: ‘kafka_2.12-3.6.1.tgz’

kafka_2.12-3.6.1.tgz                     100%[=================================================================================>] 108.35M  6.97MB/s    in 18s

2024-02-13 15:38:18 (6.17 MB/s) - ‘kafka_2.12-3.6.1.tgz’ saved [113609072/113609072]
#kafka tgz 파일 설치

root@ubuntu:/home/ubuntu# mkdir /usr/local/kafka
#카푸카 저장 폴더 생성

root@ubuntu:/home/ubuntu# tar xzf kafka_2.12-3.6.1.tgz
#압출 풀기

root@ubuntu:/home/ubuntu# ll
total 163740
drwxr-x--- 5 ubuntu ubuntu      4096 Feb 13 15:53 ./
drwxr-xr-x 3 root   root        4096 Nov 23 13:14 ../
-rw------- 1 ubuntu ubuntu      1096 Feb  8 10:04 .bash_history
-rw-r--r-- 1 ubuntu ubuntu       220 Jan  7  2022 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu      3771 Jan  7  2022 .bashrc
drwx------ 2 ubuntu ubuntu      4096 Nov 23 13:43 .cache/
-rw-r--r-- 1 ubuntu ubuntu       807 Jan  7  2022 .profile
drwx------ 2 ubuntu ubuntu      4096 Nov 23 13:14 .ssh/
-rw-r--r-- 1 ubuntu ubuntu         0 Nov 23 13:43 .sudo_as_admin_successful
-rw------- 1 ubuntu ubuntu      1067 Feb  7 10:20 .viminfo
drwxr-xr-x 7 root   root        4096 Nov 24 18:43 kafka_2.12-3.6.1/
-rw-r--r-- 1 root   root   113609072 Dec  6 01:53 kafka_2.12-3.6.1.tgz

root@ubuntu:/home/ubuntu# mv kafka_2.12-3.6.1/* /usr/local/kafka/
#내부파일을 서비스 위치로 다 이동

서비스 등록및 자동 실행 설정하기

  • 이제 설치를 마쳤으니 편의적인 이유로 서비스 파일을 시스템에 등록하고 로드하여야 한다.
  • 각 서비스 파일은 위 로그를 기준으로 하였으므로 편한대로 수정해서 사용하길 권장한다.
vi /etc/systemd/system/zookeeper.service
#Zookeeper 서비스 파일 생성

[Unit]
Description=Apache Zookeeper server
Documentation=http://zookeeper.apache.org
Requires=network.target remote-fs.target
After=network.target remote-fs.target
 
[Service]
Type=simple
ExecStart=/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties
ExecStop=/usr/local/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
 
[Install]
WantedBy=multi-user.target

wq
#저장

vi /etc/systemd/system/kafka.service
#kafka 서비스 파일 생성

[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service
 
[Service]
Type=simple
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
 
[Install]
WantedBy=multi-user.target

wq
#저장

root@ubuntu:/usr/local/kafka# systemctl daemon-reload
#데몬 리로드

root@ubuntu:/usr/local/kafka# systemctl start zookeeper.service
root@ubuntu:/usr/local/kafka# systemctl start kafka.service
#zookeeper, kafka 실행

root@ubuntu:/usr/local/kafka# systemctl status zookeeper.service
● zookeeper.service - Apache Zookeeper server
     Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled)
     Active: active (running) since Tue 2024-02-13 16:06:23 KST; 29s ago
       Docs: http://zookeeper.apache.org
   Main PID: 63992 (java)
      Tasks: 38 (limit: 19140)
     Memory: 107.2M
        CPU: 2.612s
     CGroup: /system.slice/zookeeper.service
             └─63992 java -Xmx512M -Xms512M -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -X>

Feb 13 16:06:24 ubuntu zookeeper-server-start.sh[63992]: [2024-02-13 16:06:24,965] INFO zookeeper.snapshot.compression.method = CHECKED (org.apache.zookeeper.serv>
Feb 13 16:06:24 ubuntu zookeeper-server-start.sh[63992]: [2024-02-13 16:06:24,965] INFO Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapshot.0 (org.apache.zooke>
Feb 13 16:06:24 ubuntu zookeeper-server-start.sh[63992]: [2024-02-13 16:06:24,969] INFO Snapshot loaded in 10 ms, highest zxid is 0x0, digest is 1371985504 (org.a>
Feb 13 16:06:24 ubuntu zookeeper-server-start.sh[63992]: [2024-02-13 16:06:24,970] INFO Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapshot.0 (org.apache.zooke>
Feb 13 16:06:24 ubuntu zookeeper-server-start.sh[63992]: [2024-02-13 16:06:24,971] INFO Snapshot taken in 0 ms (org.apache.zookeeper.server.ZooKeeperServer)
Feb 13 16:06:24 ubuntu zookeeper-server-start.sh[63992]: [2024-02-13 16:06:24,983] INFO zookeeper.request_throttler.shutdownTimeout = 10000 ms (org.apache.zookeep>
Feb 13 16:06:24 ubuntu zookeeper-server-start.sh[63992]: [2024-02-13 16:06:24,984] INFO PrepRequestProcessor (sid:0) started, reconfigEnabled=false (org.apache.zo>
Feb 13 16:06:25 ubuntu zookeeper-server-start.sh[63992]: [2024-02-13 16:06:25,001] INFO Using checkIntervalMs=60000 maxPerMinute=10000 maxNeverUsedIntervalMs=0 (o>
Feb 13 16:06:25 ubuntu zookeeper-server-start.sh[63992]: [2024-02-13 16:06:25,002] INFO ZooKeeper audit is disabled. (org.apache.zookeeper.audit.ZKAuditProvider)
Feb 13 16:06:31 ubuntu zookeeper-server-start.sh[63992]: [2024-02-13 16:06:31,603] INFO Creating new log file: log.1 (org.apache.zookeeper.server.persistence.File>
lines 1-21/21 (END)

root@ubuntu:/usr/local/kafka# systemctl status kafka.service
● kafka.service - Apache Kafka Server
     Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset: enabled)
     Active: active (running) since Tue 2024-02-13 16:06:29 KST; 32s ago
       Docs: http://kafka.apache.org/documentation.html
   Main PID: 64446 (java)
      Tasks: 74 (limit: 19140)
     Memory: 350.4M
        CPU: 7.300s
     CGroup: /system.slice/kafka.service
             └─64446 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 >

Feb 13 16:06:33 ubuntu kafka-server-start.sh[64446]: [2024-02-13 16:06:33,410] INFO [Controller id=0, targetBrokerId=0] Client requested connection close from nod>
Feb 13 16:06:33 ubuntu kafka-server-start.sh[64446]: [2024-02-13 16:06:33,427] INFO [/config/changes-event-process-thread]: Starting (kafka.common.ZkNodeChangeNot>
Feb 13 16:06:33 ubuntu kafka-server-start.sh[64446]: [2024-02-13 16:06:33,440] INFO [SocketServer listenerType=ZK_BROKER, nodeId=0] Enabling request processing. (>
Feb 13 16:06:33 ubuntu kafka-server-start.sh[64446]: [2024-02-13 16:06:33,452] INFO Awaiting socket connections on 0.0.0.0:9092. (kafka.network.DataPlaneAcceptor)
Feb 13 16:06:33 ubuntu kafka-server-start.sh[64446]: [2024-02-13 16:06:33,496] INFO Kafka version: 3.6.1 (org.apache.kafka.common.utils.AppInfoParser)
Feb 13 16:06:33 ubuntu kafka-server-start.sh[64446]: [2024-02-13 16:06:33,497] INFO Kafka commitId: 5e3c2b738d253ff5 (org.apache.kafka.common.utils.AppInfoParser)
Feb 13 16:06:33 ubuntu kafka-server-start.sh[64446]: [2024-02-13 16:06:33,497] INFO Kafka startTimeMs: 1707807993482 (org.apache.kafka.common.utils.AppInfoParser)
Feb 13 16:06:33 ubuntu kafka-server-start.sh[64446]: [2024-02-13 16:06:33,498] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)
Feb 13 16:06:33 ubuntu kafka-server-start.sh[64446]: [2024-02-13 16:06:33,655] INFO [zk-broker-0-to-controller-alter-partition-channel-manager]: Recorded new cont>
Feb 13 16:06:33 ubuntu kafka-server-start.sh[64446]: [2024-02-13 16:06:33,656] INFO [zk-broker-0-to-controller-forwarding-channel-manager]: Recorded new controlle>
#정상작동 확인

root@ubuntu:/usr/local/kafka# systemctl enable zookeeper.service
Created symlink /etc/systemd/system/multi-user.target.wants/zookeeper.service → /etc/systemd/system/zookeeper.service.
root@ubuntu:/usr/local/kafka# systemctl enable kafka.service
Created symlink /etc/systemd/system/multi-user.target.wants/kafka.service → /etc/systemd/system/kafka.service.
#자동 실행 등록

테스트

  • 제일 중요한 테스트 부분이다. 간단한 테스트용 토픽을 만들어서 제대로 작동하는지 메세지를 보내고 컨택해볼 것이다.
root@ubuntu:/usr/local/kafka# cd /usr/local/kafka/
root@ubuntu:/usr/local/kafka# bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
Created topic test.
root@ubuntu:/usr/local/kafka# bin/kafka-topics.sh --list --bootstrap-server localhost:9092
test
#작동 확인

'구축 > ELK' 카테고리의 다른 글

[ELK] Metricbeat  (0) 2024.03.12
[ELK] Filebeat 설치  (0) 2024.03.04
[ELK] Logstash 설치  (0) 2024.02.15
[ELK] Kibana 설치  (0) 2024.02.13
[ELK] Elasticsearch 설치  (1) 2024.02.07