반응형

안녕하세요 가야태자 @talkit 입니다.

이 글은 2025년에 Kafka 3.5.1·Java 8·ZooKeeper 조합을 작은 개발 서버에서 시험한 실패 기록입니다. 현재 Kafka 설치 안내가 아니며, 새 환경에서는 최신 Kafka의 Java 요구사항과 KRaft 구성을 공식 문서에서 확인해야 합니다. 아래 명령은 실험을 재현하거나 레거시 환경을 이해할 때만 참고하십시오.

이 실험은 localhost에서만 접속하는 개발용 단일 노드입니다. Kafka의 9092 포트와 ZooKeeper의 2181 포트를 공인 인터넷에 공개하지 마십시오. 인증·암호화 없이 외부 접근을 허용하면 메시지와 운영 정보가 노출될 수 있습니다.

@talkit.bank 서비스와 talkitsteem 프로젝트를 진행하고 있는데 이 프로그램들의 제어를 위해서 메시지 기반 처리 서비스를 생각하고 있습니다.

일단, Apache Kafka가 Java 기반 이라서 우선 Java를 설치 해 주어야 합니다.

Java가 여러 버전이 있지만, Java 8을 제가 UI 프로젝트에서 사용할꺼기 때문에 하나의 JDK를 사용한다는 측면에서 Java 8을 설치 하겠습니다.

Java 설치

JAVA 8 설치

sudo apt update 
sudo apt install openjdk-8-jdk

우분투하고 친해지고 있어서 ^^

위와 같이 설치 합니다.

Java 설치 확인

ubuntu@<개발서버>:~$ java -version
openjdk version "1.8.0_442"
OpenJDK Runtime Environment (build 1.8.0_442-8u442-b06~us1-0ubuntu1~24.04-b06)
OpenJDK 64-Bit Server VM (build 25.442-b06, mixed mode)
ubuntu@<개발서버>:~$ javac -version
javac 1.8.0_442
ubuntu@<개발서버>:~$

Java 1.8이 잘 설치 되었습니다.

Kafaka 설치

Kafka 설치 폴더 생성 및 이동

mkdir kafka
cd kafka

Kafka 다운로드 및 압축 해제

wget https://archive.apache.org/dist/kafka/3.5.1/kafka_2.13-3.5.1.tgz
tar -xzf kafka_2.13-3.5.1.tgz 
cd kafka_2.13-3.5.1

다운로드 속도가 느리네요 ^^

3.5.1은 최신 다운로드 경로가 아니라 Apache 공식 아카이브에 있는 과거 버전입니다. 오래된 바이너리를 받아야 한다면 같은 아카이브의 체크섬·서명도 함께 확인하고, 출처가 불분명한 미러 파일은 사용하지 마십시오.

ZooKeeper 및 Kafka 실행

Java 8 기반의 Kafka 3.5.1은 ZooKeeper 라는 시스템과 함께 돌아 갑니다.

그리고, 내장 되어 있습니다. 따로 ZooKeeper 까셔도 상관 없습니다.

Zookeeper 실행

nohup bin/zookeeper-server-start.sh config/zookeeper.properties &

Kafka Broker 실행

nohup bin/kafka-server-start.sh config/server.properties &

이제 두 서버를 전부 실행해서 실제로 동작 하는지 확인 해봐야 합니다.

Kafka 테스트

Topic 생성

데이터베이스에 테이블에 해당하는 것이 Topic 입니다. Topic을 생성해 보겠습니다.

bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1

지금 싱글 노드여서 ^^

T.T 일단 토픽 생성이 안됩니다. ^^

앗 이게 되어야하는데 T.T

MySQL IaaS에 있는 내용을 개발서버로 이전하려고 했는데 말이죠 T.T

기본적으로 1GB의 메모리가 필요하다고 하네요.

저걸 좀 줄여서해보려고 해도.

ubuntu@<개발서버>:~/kafka/kafka_2.13-3.5.1$ free -m
               total        used        free      shared  buff/cache   available
Mem:             956         780         139           1         189         176
Swap:              0           0           0\

할당된 메모리가 약 1GB인데 T.T 저기 보시다 싶이 176MB 밖에 없어서

일단 줄여서 실행을 해보겠습니다. 이서버에서는 못돌릴지도 모르겠습니다.

T.T

KAFKA_HEAP_OPTS="-Xmx128M -Xms64M"

Kafka로 진행을 해보려고 했는데 안될 것 같습니다.

아래 수치는 공식 최소 사양이라기보다, 제가 이 실험에서 안정적으로 실행하려면 필요하다고 판단한 개발 환경의 기준입니다.

CPU 2개이상 메모리 2GB 이상 가상메모리 4GB이상 HDD 10GB이상 

시험 서버는 CPU와 메모리가 충분하지 않았고 스왑도 없어 실행을 이어가기 어려웠습니다.

HDD 빼고는 최소 사양을 넘기는게 없네요 T.T

개발이야기 007. talkit.bank 개발 서버 준비를 위한 데이터베이스 이야기 — Steemit

위글에서 말한 실패기 입니다.

오늘은 Kafka를 포기하고 저 위에는 글처럼 만들어 봤습니다.

nohup으로 백그라운드 실행하는 방법은 짧은 실험용입니다. 운영 환경에서는 systemd 또는 컨테이너 등으로 프로세스를 관리하고, 전용 서비스 계정·로그 회전·접근 제어·TLS/SASL 설정을 별도로 준비해야 합니다.

그런 내일 적도록 하겠습니다.

감사합니다.


Tags Kafka, Kafka3, Java8, ZooKeeper, 싱글노드, 설치실패, 레거시환경, 메시지큐, 서버보안, 가야태자, talkit

반응형

+ Recent posts