본문 바로가기
ElasticStack

Snapshot을 이용한 마이그레이션 진행하기

by Pacloud 2023. 4. 12.
반응형

개인 사이드 프로젝트와 회사 내의 동아리 프로젝트, 현재 진행하고 있는 대학교 멘토로써 활동 하며 여러 데이터를 크롤링하고 모으게됐는데, 어떻게 보관하고 관리할지 항상 고민했다. 그래서 AWS S3에 게시판 형태처럼 리스트로 데이터를 관리하여 자체적인 Data Lake를 만들어 보는게 어떨까 하는 생각에 블로깅을 또 하게 되었다.

 

elasticsearch 에서는 스냅샷을 찍어 인덱스를 저장하는 기능을 제공하고 이 스냅샷을 다른 클러스터에 복원시켜 데이터를 옮길 수도 있다.

아래 도큐먼트에 snapshot-restore 도큐먼트를 첨부한다.

(https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshot-restore.html )

따라서 스냅샷을 활용하여 elastic cloud에 있는 데이터를 AWS s3로 마이그레이션 하는 방법에 대해 알아보도록 하자.

 

💡 <진행 순서>
  1. aws 에 접속하여 IAM 사용자 추가
  2. deployement s3.client 설정
  3. aws s3에 버킷 생성
  4. cloud에 repository 생성
  5. 스냅샷 찍기
  6. s3에서 스냅샷 생성 확인

AWS S3를 스냅샷 레포지토리로 사용하기 위해서는 elasticsearch-keystore에 등록 해야한다.

하지만 엘라스틱서치 클라우드상에서는 직접 elasticsearch-key store 에는 접근이 불가하다. (온프레미스 환경에서만 접근 가능)

따라서 아마존에 Credential을 새로 만들어야하는데 우선 aws에 접속하여 IAM 사용자를 만들어보도록 하자.

 

1. aws 에 접속하여 IAM 사용자를 추가한다.

 

Amazon S3를 스냅샷 repository로 사용하기 위해서는 aws IAM 에서 s3 fullaccess 권한을 가진 사용자의 access key 와 secret key 가 필요하다. 따라서 s3fullaccess IAM 사용자를 만들어 보도록 하자.

우선, aws 콘솔에 IAM 을 검색하여 사용자를 추가하자.

 

권한 옵션에서 직접 정책 연결 > AmazonS3FullAccess 를 추가하자.

이 권한을 추가해주어야 s3에 접근이 가능하다.

 

만들어진 해당 사용자의 액세스 키를 만들기 위해서는 사용자 > 보안 자격 증명> 액세스 키 만들기 를 선택한다.

액세스 키를 만들고 csv 파일을 다운로드 받는다.(다운로드 꼭 받아놓기 .ᐟ.ᐟ)

2. deployement s3.client 설정하기

 

이제 클라우드상에서 elasticsearch-keystore를 어떻게 등록하는지 알아보도록 하자.

엘라스틱 클라우드에 접속하여 Manage this deployment를 클릭한다.

 

 

 

setting name 을 s3.client.default.access_key 로 설정 후 csv 파일로 다운받은 access_key를 secret에 작성하고 등록해준다.

 

setting name을 s3.client.default.secret_key로 설정 후 csv로 다운받은 secret_key를 작성하여 등록하여 준다.

 

아래 사진과 같이 등록된 것을 확인할 수 있다.

 

이제 스냅샷을 저장해놓을 버킷을 생성해보자.

 

3. aws s3에 버킷을 생성하자

 

AWS에 접속하여 콘솔에 s3를 검색한다. 버킷 생성을 클릭하여 새롭게 버킷을 생성한다.

 

4. 클라우드에 repository 만들기

 

엘라스틱 클라우드에도 repository를 만들어 주자.

stack management> snapshot and restore 에 들어가 repository를 생성한다.

dev tools에서도 repository의 설정을 만들 수 있다.

bucket은 s3에서 만든 버킷명을 작성한다.

client 명은 default로 앞 전에 만들었던 s3.client.default.access_key 에서 default 가 client

명이 된다.

또한 path를 만들어 폴더 별로 스냅샷을 저장해 놓을 예정이기 때문에 base_path를 설정했다.

 

PUT _snapshot/생성한 repository 명 

 

레포지토리 생성 후 verify repository를 눌러 오류가 생기지 않아야 해당 repository 가 사용가능하다.

 

5. 스냅샷 찍기

 

모든 인덱스를 스냅샷 찍기보단 원하는 index를 indices에 적어 원하는 index만 스냅샷을 찍을 수 있다.

 

 

6. s3에서 스냅샷 생성 확인하기

 

aws S3에 해당 스냅샷이 생성되었는지 확인하자

스냅샷이 S3에 잘 저장된것을 확인할 수 있다.

 

이로써 스냅샷을 찍어 s3에 인덱스를 저장하는 기능에 대해 알아보았다.

앞으로 해당 기능을 이용하여 앞으로 있을 elasticsearch& aws 프로젝트와 관련한 데이터를 s3에 스냅샷을 이용하여 저장할 예정이다. 다음에는 복원 관련한 블로깅을 진행해봐야겠다.

 

참고: https://www.youtube.com/watch?v=mgJ2kEFMfEY&t=1749s