Blog

[Spring][258] AWS EC2 Elasticsearch 외부 접속 환경 설정

Category
Author
Tags
PinOnMain
1 more property
AWS EC2의 Ubuntu환경에서 Elasticsearch를 설치를 완료한 상태에서는 EC2입장에서의 localhost:9200으로만 Elasticsearch에 접근 할 수 있습니다. 본래 EC2 자체를 생성하고 Elastic stack을 설치한 이유는 해당 인스턴스 자체를 Elasticsearch 전용 서버로 사용하기 위함이기 때문에 스프링부트 프로젝트가 실행되는 EC2와 RDS로 구축된 MySQL에서 해당 서버에 외부접속을 통해서 접근 할 수 있어야 합니다.
Elasticsearch 서비스 시작 및 포트확인
우선 Elasticsearch는 기본적으로 9200포트를 사용하며, 기본 설정에서 현재 로컬 서버(EC2)에서만 통신이 가능하도록 지정되어 있습니다.
netstat -an | grep 9200
Shell
복사
elasticsearch의 대부분의 설정은 elasticsearch.yml라는 파일에서 관리하고 있습니다. 해당 파일을 열어 일부분 수정하여 외부 주소로 접근 할 수 있도록 하고자 합니다.
sudo vi /etc/elasticsearch/elasticsearch.yml
Shell
복사
해당 파일을 열어보면 path를 제외한 모든 부분이 주석처리된 상태가 기본입니다.
기존 network.host 부분은 다음과 같이 # network.host: 192.168.0.1 주석처리되어있을 것이며, 이곳에 network.host: 0.0.0.0 을 작성합니다.
cluster.initial_master_nodes 부분도 주석처리 되어있을 것이며, 이곳에 주석을 해제하여 활성화 시켜줍니다.
vi 에디터를 :wq로 저장하고 나와서 Elasticsearch 서비스를 재시작해줍니다
sudo service elasticsearch restart
Shell
복사
재시작 후 netstat로 확인해 보도록 하겠습니다.
netstat -an | grep 9200
Shell
복사
외부 접속 설정 완료 후 AWS EC2에서의 보안 그룹 설정
EC2 인스턴스에서 보안규칙→인바운드 규칙 편집을 통해서 9200 포트의 접근이 가능하도록 합니다. 인바운드 설정을 통해서 해당 포트에 클라이언트가 서버 데이터에 들어올 수 있는 규칙을 지정 할 수 있습니다.
설정 적용 이후 브라우저 등을 통해 즉시 EC2의 외부IP(실제IP):9200 으로 Elasticsearch 서버에 접근 할 수 있습니다.