Red Hat Enterprise Linux (RHEL) 9.6 환경에서 인터넷 연결이 없는 상태(오프라인)로 Apache Kafka 3.9(최신 안정 버전 기준)를 설치하는 방법입니다. Kafka는 자바 기반으로 동작하므로 Java(JRE/JDK) 설치가 선행되어야 합니다.
1. 사전 준비 (인터넷 가능 PC)
오프라인 서버로 파일을 옮기기 위해 필요한 파일들을 미리 다운로드합니다.
- JDK 17 또는 21 (RPM): Red Hat Developers 또는 Adoptium에서 다운로드.
- Apache Kafka 3.9 (Binary): Kafka 공식 다운로드 페이지에서 Scala 2.13 또는 2.12용
.tgz파일 다운로드 (예:kafka_2.13-3.9.0.tgz).
2. 파일 전송
다운로드한 파일들을 USB 또는 SCP/SFTP를 이용해 RHEL 9.6 오프라인 서버의
/tmp 디렉토리로 복사합니다.3. RHEL 9.6 오프라인 설치 단계
3.1. Java 설치 (JDK 17/21)
RHEL 9는 기본적으로 Java가 포함되지 않을 수 있습니다. 다운로드한 RPM 파일로 설치합니다.
bash
cd /tmp
# RPM 설치 (예시)
sudo rpm -ivh openjdk-17-jdk-*.rpm
# 설치 확인
java -version
코드를 사용할 때는 주의가 필요합니다.
3.2. Kafka 설치 및 압축 해제
일반적으로 Kafka는
/opt 디렉토리에 설치합니다. [1]bash
# 압축 해제
sudo tar -zxvf kafka_2.13-3.9.0.tgz -C /opt
# 심볼릭 링크 생성 (버전 관리 용이)
sudo ln -s /opt/kafka_2.13-3.9.0 /opt/kafka
코드를 사용할 때는 주의가 필요합니다.
3.3. Kafka 사용자 생성 (권장)
보안을 위해 전용 사용자를 생성합니다.
bash
sudo useradd -r -s /sbin/nologin kafka
sudo chown -R kafka:kafka /opt/kafka_2.13-3.9.0
sudo chown -R kafka:kafka /opt/kafka
코드를 사용할 때는 주의가 필요합니다.
3.4. KRaft 모드 설정 (Zookeeper 없이 실행)
Kafka 3.x 버전부터는 KRaft 모드를 권장합니다.
- 클러스터 ID 생성:
bash
sudo -u kafka /opt/kafka/bin/kafka-storage.sh random-uuid # 출력된 UUID를 복사해둡니다. (예: FvB53V... )코드를 사용할 때는 주의가 필요합니다. - 설정 파일 수정 (
/opt/kafka/config/kraft/server.properties):properties# 노드 ID 설정 (각 노드마다 달라야 함) node.id=1 # 컨트롤러 쿼럼 설정 controller.quorum.voters=1@localhost:9093 # 리스너 설정 listeners=PLAINTEXT://:9092,CONTROLLER://:9093 advertised.listeners=PLAINTEXT://your-server-ip:9092 controller.listener.names=CONTROLLER # 로그 디렉토리 log.dirs=/tmp/kraft-combined-logs코드를 사용할 때는 주의가 필요합니다. - 스토리지 초기화:
bash
sudo -u kafka /opt/kafka/bin/kafka-storage.sh format -t <위에서_복사한_UUID> -c /opt/kafka/config/kraft/server.properties코드를 사용할 때는 주의가 필요합니다.
4. Kafka 실행 및 확인

4.1. 서비스 등록 (systemd)
/etc/systemd/system/kafka.service 파일을 생성합니다.ini
[Unit]
Description=Apache Kafka Server
After=network.target
[Service]
Type=simple
User=kafka
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
코드를 사용할 때는 주의가 필요합니다.
4.2. 시작 및 동작 확인
bash
sudo systemctl daemon-reload
sudo systemctl start kafka
sudo systemctl enable kafka
# 동작 확인
sudo systemctl status kafka
코드를 사용할 때는 주의가 필요합니다.
4.3. 토픽 생성 테스트
bash
/opt/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
코드를 사용할 때는 주의가 필요합니다.
5. 방화벽 설정 (RHEL 9)
9092 포트를 오픈해야 외부에서 접근 가능합니다.
bash
sudo firewall-cmd --permanent --add-port=9092/tcp
sudo firewall-cmd --reload
코드를 사용할 때는 주의가 필요합니다.