본문 바로가기
개발일기/project

[Troubleshooting] #1 Docker로 Elasticsearch node 2개 띄우기

by 햄리뮤 2025. 1. 13.
반응형

docker로 elk를 2개 띄우려다보니 삽질을 너ㅓㅓㅓㅓㅓㅓㅓㅓㅓㅓㅓㅓ무 많이 했다 하참나 몇시간을 보낸거야

https://www.jordan.network.global/en/troubleshooting.jsp

문제 #1:

포트 충돌로 인하여 아래 에러가 나오면서 elasticsearch가 실행되지 않음.

Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:9200 -> 0.0.0.0:0: listen tcp 0.0.0.0:9200: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

 

윈도우에서 elasticsearch 포트인 9200으로 서비스가 떠있는게 있는지 확인하였지만 아무것도 뜨지 않았음...

netstat -ano | findstr :9200

에러 원인:

Docker에서 9200 포트로 elastic search를 실행했는데 포트 충돌 에러가 나오면서 Docker에 뜨지 않았다. 하지만 9200 번을 사용하고있는 서비스는 아무것도 없었다... 
stackoverflow에서 확인한 원인... 

WinNAT (Windows Network Address Translation) is a windows operating system service. It helps in translating private network addresses into a public address. So, such conflicts in ports for docker can be solved by restarting that service.

해결:

계속 삽질하다가 stackoverflow 에서 겨우 찾았다.... 

참고: https://stackoverflow.com/questions/65272764/ports-are-not-available-listen-tcp-0-0-0-0-50070-bind-an-attempt-was-made-to

net stop winnat
docker start container_name
net start winnat

winnat을 껏다가 재시작하니 정상적으로 뜨는 것을 확인


문제 #2:

http://localhost:9200/ 접속시

정상적으로 elasticsearch1 이 떠있는 것을 볼 수 있다. log에도 문제가 없었다.

http://localhost:5601/ 접속시

Kibana server is not ready yet. 

kibana log

[2025-01-13T11:47:10.749+00:00][INFO ][plugins.assetManager] Server is NOT enabled 2025-01-13T11:47:10.914379363Z 
[2025-01-13T11:47:10.914+00:00][ERROR][elasticsearch-service] Unable to retrieve version information from Elasticsearch nodes. connect ECONNREFUSED 172.28.0.6:9200

에러 원인:

kibana가 elasticsearch 서버에 접근하지 못하는 것 처럼 보였다

해결:

위 에러때문에 많은 시간을 보냈는데 - discovery.type=single-node 를 추가하니 키바나가 떳다..
나는 클러스터 환경으로 하려고 했기 때문에 - discovery.type=single-node 을 쓰지 않았었다.

하지만 이것은 해결 방법이 아니였다 나는 2개의 elasticsearch 를 띄워서 클러스터 환경을 써야하기 때문이다
ELASTICSEARCH_HOSTS=["http://elasticsearch1:9200","http://elasticsearch2:9201"] 로 환경변수 수정.

 

docker container 접속 후 정상적으로 2개의 elasticsearch가 뜨는 것을 확인

/usr/share/elasticsearch# curl -X GET "localhost:9200/_cat/nodes?v"

키바나 접속 성공...!


하... 진짜 오래 걸렸다 설정하는게 왜이리 힘든지... 제일 큰 벽이 남아있지만 일단 개발을 시작하기로 했다

분산서버 설정 어케하냐....

 

** 그냥 하루하루 개인 공부한 것을 끄적 거리는 공간입니다.

이곳 저곳에서 구글링한 것과 강의 들은 내용이 정리가 되었습니다.

그림들은 그림밑에 출처표시를 해놓았습니다.

문제가 될시 말씀해주시면 해당 부분은 삭제 하도록하겠습니다. **

반응형

댓글