
Elasticsearch를 설치하는 방법은 OS마다 방식이 다 다르기 때문에
OS환경과 상관없이 간편하고 일관되게 설치하기 위해 Docker를 활용해 설치한다.
Docker를 활용하기 위해 우선 내 PC에 Docker가 설치가 되어 있어야 한다.
내 PC OS는 Window 이기 때문에 Window에서 설치하는 방법으로 설치를 해보았다.
우선 Docker를 설치전 환경 설정이 필요하다.
Docker를 사용하기 위해서 가상화 기술인 Hyper-V를 활성화 시켜야 한다.
제어판> 프로그램 및 기능 > Windows 기능 켜기 / 끄기 클릭 Hyper-V 체크 > 확인 후 컴퓨터 리부팅


그 다음 Docker 설치파일 다운로드 및 설치.

위 사이트에서 Docker 설치 파일을 다운로드 받는다.


Docker Desktop 실행 시킨다.
Docker 회원가입을 한다.
docker-compose.yml 파일 생성
services:
elastic:
image: docker.elastic.co/elasticsearch/elasticsearch:8.17.4
ports:
- 9200:9200 # 9200번 포트에서 Elasticsearch 실행
environment:
# 아래 설정은 개발/테스트 환경에서 간단하게 테스트하기 위한 옵션 (운영 환경에서는 설정하면 안 됨)
- discovery.type=single-node # 단일 노드
- xpack.security.enabled=false # 보안 설정
- xpack.security.http.ssl.enabled=false # 보안 설정
yml 파일이 있는 directory에서 docker compose up 명령어 실행
In the default daemon configuration on Windows, the docker client must be run with elevated privileges to connect.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.project%3Ddocker-elasticsearch%22%3Atrue%7D%7D&limit=0": open //./pipe/docker_engine: The system cannot find the file specified.
Ports are not available: listen tcp 0.0.0.0:9201: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
netsh interface ipv4 show excludedportrange protocol=tcp
위 명령어로 관리되는 포트를 확인할 수 있다.

chatGPT에 확인 해보니 9000 번대 구간은 일부 보안 솔루션이나 http.sys가 자동으로 예약하거나 차단 시킨다고 함
9200은 포트가 제한되어 있어서 풀어야 함
winnat 중지
net stop winnat
사용하고자 하는 포트에 대한 제한 금지(9200번)
netsh int ipv4 add excludedportrange protocol=tcp startport=9200 numberofports=1
winnat 재시작
net start winnat
[출처]
https://github.com/docker/for-win/issues/3171
다시 docker compose up 실행

정상적으로 실행 되는걸 확인 가능
Postman에서 localhost:9200으로 요청을 보내기

정상 작동 되는걸 알 수 있다.
이상으로 Docker로 Elasticsearch를 설치해 보았다. 중간에 이슈가 있었지만, 구글링과 chatGpt를 통해 이슈를 해결했습니다.
사실 이러한 사항들을 정리하기 위해 작성한 글이지만, 이왕이면 설치 과정을 한 번 더 써보는게 더 좋을 것 같아서 설치 순서부터 겪었던 이슈를 중간에 넣었다.