강의를 보다가 Mac OS 기준으로만 설명된 영상이 있어, Kafka를 Windows 환경에서 설치하고 간단한 테스트를 통해 실행이 잘 되는지 확인해보려 한다.
Kafka는 Java 기반으로 동작하기 때문에, Java가 설치되어 있어야 하며 JAVA_HOME
환경 변수도 설정되어야 합니다.
CMD 또는 Powershell에 아래 명령어를 입력해 설치 여부를 확인합니다:
java -version
정상적으로 설치되어 있다면 Java 버전이 출력됩니다.
만약 'java'는 내부 또는 외부 명령어로 인식되지 않습니다.
와 같은 메시지가 나온다면 Java가 설치되지 않은 것입니다.
👉 🏻설치가 필요한 경우:
JDK는 17이상을 추천합니다.
Kafka 실행 시 JAVA_HOME 변수를 참조하므로, 해당 환경 변수를 반드시 설정해야 합니다.
설정 방법 (Windows 기준)
1. 내 PC > 속성 > 고급 시스템 설정 > 환경 변수 로 이동
2. 시스템 변수(S)에서 새로 만들기
JAVA_HOME
C:\Program Files\Java\jdk-17
)Path
변수 편집 → %JAVA_HOME%\bin
추가
새 CMD 창을 열고 확인:
echo %JAVA_HOME%
Java 경로가 출력되면 설정이 완료된 것입니다.
kafka를 다운받기 위해 홈페이지로 이동합니다.
우측 상단 위에 DOWNLOAD KAFKA를 클릭해 다운로드 페이지로 이동합니다.
2.x 버전대는 Zookeeper가 반드시 필요하고 3.x 버전부터는 Zookeeper를 사용할 수도 있고 사용하지 않고 KRaft를 통해 가능하다. Zookeeper와 KRaft를 모두 테스트해보고 싶어 3.6.2 버전을 다운로드했습니다.
tgz 파일을 C 드라이브에 압축 해제 합니다.
(바탕화면에 풀면 CMD 창에서 명령어를 입력할 시 the input line too long 에러를 만날 수 있으니 경로를 짧게 하기 위함입니다.)
필자는 C 드라이브에서 압축해제 후 kafka라고 이름을 변경해 주었다.
Kafka 압축 파일엔 MacOS와 Windows용 실행 파일이 모두 포함되어 있습니다.
MacOS는 bin 폴더 안에 .sh
파일들로 구성되어 있고
Windows는 bin 폴더 안에 windows 폴더 안에 .bat
파일들로 구성되어 있습니다.
이글은 Windows 용이기 때문에 .bat 파일들을 사용합니다.
반드시 Kafka 실행 전 Zookeeper를 먼저 실행해야 합니다.
Zookeeper는 Kafka를 관리하는 코디네이터로 Zookeeper가 먼저 실행되어야 Kafka를 실행시킬 수 있습니다.
Topic은 Producer와 Consumer의 매개체입니다.
Producer가 Topic에 메시지를 보내면 해당 Topic은 구독한 Consumer에게 메시지가 전달됩니다.
이 때, Topic에는 메시지가 저장되어 Consumer가 처음부터 메시지를 받을 수도 있습니다.
Producer를 실행시켜 Topic에 메시지를 보냅니다.
Consumer를 실행시켜 Topic에 있는 메시지를 받습니다.
이제 명령어들을 실행시켜 확인해보겠습니다.
테스트를 위해선 총 4개의 Windows Powershell CMD 창이 필요합니다.
Zookeeper, Kafka, Producer, Consumer 이렇게 4개가 필요합니다.
저는 하나의 CMD를 분할하여 테스트를 진행했습니다.
CMD 창 분할 단축키
창 가로 분할 : Alt + Shift + '+'
창 세로 분할 : Alt + Shift + '-'
패널 포커스 옮기기 : Alt + 방향키
패널, 탭, 창닫기 : Ctrl + Shift + W
다른 단축키를 알고 싶으면 CMD 창 상단 바의 + 옆에 v 를 눌러 설정 -> 작업에서 볼 수 있다.
CMD 창은 모두 C:\kafka
에서 시작합니다.
경로는 본인이 다운받은 Kafka 폴더에서 시작하면 됩니다.
Zookeeper의 기본 포트 번호는 2181 입니다.
bin\windows\zookeeper-server-start.bat config\zookeeper.properties
bin\windows\zookeeper-server-start.bat : Zookeeper를 실행하는 실행 파일입니다.
config\zookeeper.properties : 이 설정 정보를 사용한다는 뜻 입니다.
Zookeeper 실행 확인
netstat -na | findstr "2181"
이렇게 4개의 결과가 나오면 정상 실행된 것입니다.
Kafka의 기본 포트 번호는 9092입니다.
bin\windows\kafka-server-start.bat config\server.properties
Kafka 실행 확인
netstat -na | findstr "9092"
# topic 생성하기
# bin\windows\kafka-topics.bat --create --bootstrap-server 카프카 접속 주소:카프카 포트 --topic 토픽이름
# 예시
bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --topic test
# topic 생성 확인
# bin\windows\kafka-topics.bat --list --bootstrap-server 카프카 접속주소:카프카 포트
# 예시
bin\windows\kafka-topics.bat --list --bootstrap-server localhost:9092
Kafka Topic이 생성되면 C:\tmp\kafka-logs
위치에도 Topic의 폴더가 생성됩니다.
server.properties에 기본으로 제공하는 위치입니다.
# Producer 생성
# bin\windows\kafka-console-producer.bat --broker-list 카프카 접속주소:카프카 포트 --topic 카프카 토픽이름
# 예시
bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test
Producer가 정상 실행되면 >
프롬프트가 나타납니다. 메시지를 입력하면 토픽으로 전송됩니다.
# Consumer 생성
# bin\windows\kafka-console-consumer.bat --bootstrap-server 카프카 접속주소:카프카 포트 --topic 카프카 토픽이름
# 예시
bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test
# --from beginning 옵션을 추가하면 기존의 발행된 메시지도 모두 가져옵니다.
bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
이 상태에서 Producer에 메시지를 입력하면 Consumer가 메시지를 받아오는 것을 확인할 수 있습니다.