-
AWS Elasticsearch개발 2020. 3. 20. 01:38
목차
1. AWS Elasticsearch 설치
2. cognito 인증 설정
3. EC2 nginx reverse proxy 인스턴스 셋팅1. AWS Elasticsearch 설치
먼저 AWS Elasticsearch 란 무엇일까? AWS 공식사이트에서는 아래와 같이 설명하고 있다.
"Amazon Elasticsearch Service(Amazon ES)는 AWS 클라우드에서 Elasticsearch 클러스터를 쉽게 배포, 운영 및 조정할 수 있는 관리형 서비스입니다"
간단하게 Elasticsearch를 AWS에서 사용하기 쉽게 제공해준다는거 같은데.. 설치를 진행하고 관련된 설정들을 하며 기능을 파악해보자
AWS Elasticsearch Service 대시보드를 시작으로 Elasticsearch Service를 시작할 수 있다.
새 도메인 만들기 버튼을 선택 시 아래와 같이 세 종류의 배포 유형이 나오는데 현재는 개발기 설정이므로 "개발 및 테스트"로 진행 하겠다.
이후 상용에도 사용하게 된다면 추가로 지식을 쌓은 후 내용은 보충하도록 하겠다.
버전은 특별히 구버전을 설치 할 필요는 없으므로 현재 AWS 에서 지원되는 최신 버전을 설치하도록 한다.
이 글을 적는 시점 최신 버전은 7.4 이다.
다음 화면으로 이동 시 도메인 이름, 인스턴스 유형 등을 입력하게 된다.
개발 테스트이므로 데이터 노드 수는 1개만 설정하였다.
(* 인스턴스 유형은 추후 내용 추가 예정)
그 후 전용 마스터 노드 설정을 할 수 있는데, 마스터 노드는 사용을 하지 않았다. 역시나 개발 테스트이기 때문이고 상용에서도 싱글 노드(마스터와 데이터 노드 기능을 하나의 노드에 모두 설정)로 사용 할 경우
인덱싱 관련 작업 및 클러스터 노드 체크와 데이터 CRUD를 한 노드에서 하게 되므로 부하가 몰리게 되므로 분리하는게 좋다한다.
다음 페이지 이동 시 네트워크 구성을 선택하는 화면이 보인다. 보통 보안을 위해 VPC 액세서로 사용한다.
먼저 VPC 액세스로 했을 경우 설정이다.
사용하고자 하는 환경 예로 접속하는 EC2와 같은 VPC로 설정해야 접속이 가능하다. 현재는 디폴트 VPC로 설정하였다.
서브넷은 VPC를 내부에서 논리적으로 나누는 영역이라고 생각하면 되는데, 추후 VPC의 서브넷을 용도에 맞게 분리하였을 경우에는
아키텍쳐에 맞게 배치하여야 하지만 지금은 디폴트 VPC 아래 서브넷은 모두 같은 설정으로 동작하므로 어느 서브넷을 사용하든 문제는 없다.
보안그룹은 기본으로 생성되어있는걸 사용하였는데, 추후 변경 할 수 있다.
마지막으로 세분화된 액세스 제어는 잘 모르니 활성화를 풀고 진행한다.
(* 이 부분에 대해서는 학습이 필요)
다음으로 퍼블릭 액세스로 했을 경우 설정이다.
VPC에서와 동일하게 세분화된 액세스 정책이 있고 퍼블릭 액세스로 진행했을 경우에는 액세스 정책이란게 추가로 나타난다.
여기서 세분화된 액세스 제어를 "활성화" 하던가 액세스 정책에서 "도메인에 대한 개방 액세스 허용" 이 아닌 다른 설정을 해야만 한다.
세분화된 액세스 제어는 역시나 잘 모르니, 활성화를 풀고 액세스 정책을 선택하였다.
아마 보안적으로 문제가 될 부분을 설정을 통해 사전에 막는 것으로 보인다.
액세스 정책은 "사용자 지정", "JSON 정의" 두가지로 할 수 있는데, AWS Elasticsearch 생성하고 추후 수정하려하면 결국엔 JSON 정의로 밖에 수정이 되지 않는다.
어쨌든 사용자 지정으로 설정 했을 경우 "IPv4", "ARN" 두가지로 추가 할 수 있는데 역시나 세분화된 액세스 제어 때와 마찬가지로 ARN 으로 했을 경우 어떻게 접근해야 하는지 잘 모르니
IPv4로 진행하였다.
입력 방식은 "아이피, cidr" 로 입력 가능한데, 현재 사내에서 접속하기 위해서 어떤식으로 지정해야 할지 몰라서 현재는 아이피로 입력하였고 개인 퍼블릭 IP를 확인하기 위해서는 아래 URL을 통해 확인 가능하다.
아이피를 입력하고 저장하자.
아래부터는 다시 공통된 부분이다, Cognito 설정은 추후 내용을 다룰 것이므로 일단은 풀고 진행한다.
여기까지 하고 다음으로 진행하면 최종 지금까지 선택한 설정들에 대한 요약 정보가 나오고 Elasticsearch 서비스가 잠깐의 대기 시간을 거친 후 생성된다.
완료 후 대시보드 화면을 보면 VPC로 진행했을 때(위 이미지)와 퍼블릭으로 진행했을 때(아래 이미지)가 정보가 다르다.
퍼블릭으로 진행 했을 경우는 3번 Nginx를 굳이 진행 할 필요는 없다.
여기까지 했으면 Elasticsearch 서비스 생성은 끝이다.
추가로 헤맸던 부분으로 퍼블릭으로 생성했을 때 액세스 정책을 수정하는 부분이 어디있는지 찾지 못했었는데, 아래 이미지와 같이 위치해 있다.
2. Cognito 인증 설정
TBD
3. Nginx 설치
먼저 EC2 인스턴스를 생성하자. Elasticsearch 에 접근하기 위해서 동일한 VPC 에서 동작하도록 해야한다. 아래와 같이 말이다.
각 정보의 VPC ID는 일치한다. 그래야만 Nginx를 설치 할 EC2에서 Elasticsearch 로의 접속이 가능하다.
* VPC에 대한 학습이 필요
Link: 01. VPC란? (작성 예정)
- 생성한 EC2 인스턴스 정보
- 생성한 Elasticsearch 정보
또한 Nginx 설정 전 Elasticsearch 의 보안 그룹 설정을 추가해야 정상적으로 Nginx의 EC2에서 접근이 가능하다.
리소스 그룹 화면으로 접근 시 왼편에 매뉴바가 보이는데 해당 매뉴 중 보안 그룹으로 이동한다.
매뉴로 진입하면 현재 보안그룹 리스트가 보이는데, Elasticsearch를 설치 했을 때 입력한 보안 그룹을 선택하여 설정을 변경한다.
현재 Elasticsearch 의 보안 그룹은 "sg-01f2ce2d28ee637a2" 이다.
우리가 수정해야 할 부분은 Inbound rules 이고 기본적으로 한개가 설정되어 있을 것이다.
이중 새로 추가한건 제일 첫번째 라인이다. 현재 개발기 셋팅 중이므로 위와 같이 설정하였지만, 상용일 경우에는 Source 설정에 주의를 기울여야 한다.
여기까지 설정했으면 기본적으로 Nginx를 설치하기 위한 서버 셋팅은 마무리되었다.
다음으로는 Nginx를 설치해야 하는데, 해당 EC2 인스턴스에는 Nginx를 설치하기 위한 Repository 가 없기 때문에 먼저 Repository 부터 설치해야한다.
원래는 아래 명령어로 항상 설치 하였는데, 현재 인스턴스에서는 실행되지 않아 찾아보니 아래 명령어로 Repository를 설치하고 있다.
#yum install epel-release
sudo yum update sudo amazon-linux-extras install epel
다음으로는 Nginx를 설치한다.
sudo yum install nginx
Nginx를 설치 했으면 reverse proxy를 적용하여 보자.
먼저 설치된 위치를 찾기 위해 find 명령어를 사용하였다.
위 이미지 상에 검색된 파일이 Nginx 설정 파일임으로 vi 로 열어 아래 내용을 추가하자. (기존 locaion / 는 주석처리 하도록 하자)
location / { proxy_pass https://vpc-iot-platform-es-k7lup4lulrmbijbpsrebk5edc4.ap-northeast-2.es.amazonaws.com; } location ^~ /_plugin/kibana { proxy_pass https://vpc-iot-platform-es-k7lup4lulrmbijbpsrebk5edc4.ap-northeast-2.es.amazonaws.com/_plugin/kibana; }
수정 후 저장을 완료 했다면 아래 명령어로 Nginx 를 재기동 하자
sudo service nginx restart
위와 같이 적용했다면 각각 아래 URL을 통해 ES, Kibana에 접속 할 수 있다.
1) Elasticsearch
→ http://{IP_ADDRESS}
ES의 경우에는 plugin 중 head라는걸 이용해 ES index 를 볼 수 있었는데, 버전이 올라가면서 현재는 chrome 확장 프로그램을 통해서만 접근할 수 있게 되었다.
설치 방법은 chrome 브라저에서 아래 URL에 접속하여 설치 할 수 있다.
https://chrome.google.com/webstore/detail/elasticsearch-head/ffmkiejjmecolpfloofpjologoblkegm
설치가 완료되면 아래와 같이 확장 프로그램에서 접속 정보를 입력하고 접근 할 수 있다.
2) Kibana
→ http://{IP_ADDRESS}/_plugin/kibana
'개발' 카테고리의 다른 글
Java Garbage Collection (GC) (0) 2020.03.21 AWS IOT Rule Engine 을 통한 Elasticsearch 연동 (0) 2020.03.20 SSL이란? (0) 2020.03.17 AWS IOT Solution (0) 2020.03.17 AWS CodeDeploy를 활용한 배포 (0) 2020.03.17