강제로 카프카(kafka) 및 주키퍼(Zookeeper) 서버 닫기
메세지를 주고받기 위해 사용되는 미들웨어중에 대표적으로 카프카를 많이 사용합니다.
카프카를 사용하기 위해서는 흔히 아래와 같이 CMD나 POWERSHELL 창으로 Zookeeper와 Kafka를 실행해두어야 합니다.
Kafka통신을 계속 수행하기 위해서는 위와 같은 창을 계속 실행해두어야 합니다.
그런데 위와 같은 창을 강제로 종료시켰을 경우 Kafka서버가 닫히지 않고 해당창이 사라지게 됩니다.
정상적으로 kafka서버를 닫기 위해서는 해당 창에서 Ctrl + c를 눌러서 종료시켜주어야 합니다.
위와 같은 절차를 거치지 않고 강제로 cmd 창을 종료하였을 경우 kafka서버가 닫히지 않아 메세지가 계속 주고 받아지는 현상이 발생합니다. 그리고 다시 Kafka 서버를 실행하였을 경우 이미 또 다른 쓰레드나 프로세스에서 kafka를 실행중이라는 오류 문구가 뜨면서 서버가 열리지 않습니다.(A Kafka instance in another process or thread is using this directory).
저는 Kafka를 사용하지 않을려고 cmd창을 닫았는데 알고보니 서버가 열려있는거라면 원치않게 컨슈머와 프로듀서간에 메세지를 주고 받게 되겠죠??
그렇다면 위와 같은 현상이 발생하면서 카프카 서버를 통해 메세지가 계속 주고받아진다면 어떻게 해야할까?
Kafka 서버의 포트를 찾아서 해당 프로세스를 강제로 닫아주어야 합니다.
방법은 아래와 같습니다.
1. NETSTAT 명령어를 사용해서 PORT번호와 PID번호 찾기
cmd창을 켜서 아래와 같은 명령어를 입력해서 현재 컴퓨터에서 사용중인 모든 PORT 번호와 그에따른 PID번호를 확인해 줍니다.
NETSTAT -O -A
처음에 Zookeeper와 Kafka를 설치하고 실행할때 Port번호를 변경하지 않았다면 기본적으로 주키퍼는 2181, 카프카는 9092로 설정됩니다.
그리고 해당 프로세스를 닫기 위해서는 가장 우측에 나오는 PID 번호가 필요하니 PID번호를 기억해 둡시다.
위에서 뜬 화면으로 Kafka(PORT : 9092)의 PID번호는 39336 인것을 확인했으니 다음 스텝으로 넘어갑니다!👌
2. TASKKILL 명령어를 사용해서 특정 PID(PORT) 닫기
위의 과정을 거쳐서 Kafka의 PID 번호를 확인했으니 해당 PID 번호를 사용해서 포트를 닫도록 하겠습니다.
TASKKILL -F -PID [PID번호]
정상적으로 해당 프로세스가 종료되었다는 문구가 뜨면 해당 포트로 열려있던 Kafka 서버가 닫혔다는것을 의미합니다.
다시 한번 netstat 명령어를 통해 열려있는 포트를 확인해도 Kafka 포트에 해당하는(저의 경우 9092) 번호가 리스트에 없는것을 알 수 있습니다.
Kafka를 사용하지 않을 때는 CMD 창에서 Ctrl + C 를 눌러 정상적으로 서버를 닫도록 하자!
'인생은 실전 > Kafka' 카테고리의 다른 글
[Kafka] 리눅스에서 카프카 통신 연습하기 - ② : Windows Server 2019에서 WSL을 사용하여 리눅스에 카프카 설치하기 (1) | 2024.03.12 |
---|---|
[Kafka] 리눅스에서 카프카 통신 연습하기 - ① : Hyper-v에서 Linux 설치 하기 (1) | 2023.12.20 |
댓글