docker
docker로 한 호스트에서 kafka multi broker 를 띄울 시org.apache.kafka.common.kafkaexception: failed to acquire lock on file .lock in /var/lib/kafka/data. a kafka instance in another process or thread is using this directory.
aeongsseu
2023. 3. 17. 15:31
로컬에서(mac) docker compose를 사용해 zookeeper와 kafka multi broker를 띄우던 중 제목과 같은 에러가 발생했다.
이는 docker yml에서 volumes설정 때문이었는데, 제목에도 나와 있듯 이미 다른 kafka 프로세스가 점유하고 있어서이다.
volumes:
- /Users/humanlearning/Downloads/docker/kafka:/var/lib/kafka/data
필자는 모든 서비스의 volumes 위와 같이 설정했다. 그렇다면 혹자는 당연히 다 같은 폴더로 지정하면 에러가 뜨는거 아니냐 하겠지만,
맞다.
사실 그냥 volumes를 안바꾸고 할 수 있는 방법은 없을까 객기를 부려봤다. 뭐 .lock 파일을 지우면 된다고 하는데 command : rm /var/lib/kafka/data/.lock 도 해보다가 결론적으론 잘 안됐다.
Failed to acquire lock on file .lock in /kafka/kafka-logs-56edfccac428
I received this error when I ran the kafka container on docker. Thereafter, I gave the following commands: docker exec -it /bin/sh #This starts the kafka container in interactive mode cd /opt/kaf...
stackoverflow.com
그래서 해결법은 그냥 voulmes값에서 왼쪽 즉, host machine의 값을 각 서비스마다 다르게 설정해주면 된다.
volumes:
- /Users/humanlearning/Downloads/docker/kafka/1:/var/lib/kafka/data
volumes:
- /Users/humanlearning/Downloads/docker/kafka/2:/var/lib/kafka/data
volumes:
- /Users/humanlearning/Downloads/docker/kafka/3:/var/lib/kafka/data