본 포스팅은 2022년 01월 01일을 기준으로 작성되었습니다.
마이그레이션 작업은 기존 환경에서 새로운 환경으로 클러스터를 이동할 때 필요한 작업입니다. 예를 들면, On-prem에서 Elastics Cloud로 환경을 변경하거나, 또는 Elasticsearch 옛날 버전(OSS)에서 Elasticsearch 현재 버전으로 업그레이드 시 필요한 작업입니다
다양한 마이그레이션 방법이 있습니다.
데이터 소스를 새로운 클러스터에 인덱싱
(On-prem -> On-prem일 경우) data 디렉토리 전체 복사
Logstash 혹은 Reindex API로 새로운 클러스터에 인덱싱
CCS를 이용하여 여러 클러스터를 동시에 운용
Snapshot & Restore로 데이터 이동
이번 포스팅에서는 Logstash 혹은 Reindex API로 새로운 클러스터에 인덱싱 방법을 소개합니다.
새로운 클러스터 준비
수집 프로세스(logstash 등)의 output을 신규 클러스터로 변경
기존 클러스터에 남아 있는 데이터를 신규 클러스터로 이관
cloud.elastic.co에서 elasticsearch 클러스터를 생성할 수 있습니다. 원하는 사양을 선택한 후 새로운 클러스터 하나를 생성합니다.
위의 그림은 기존 클러스터에 데이터를 입력하는 Logstash 파이프라인입니다. (데이터 스트림을 구현하기 위해 java generator input plugin을 사용했고 5초에 한번씩 데이터가 입력됩니다.)
데이터 스트림을 구현하기 위해 java generator input plugin을 사용했고 5초에 한번씩 데이터가 입력된다.
새로운 클러스터로 데이터를 입력하기 위해 수집기 프로세스에서 ouput을 하나 더 추가해주고 데이터가 입력되는 인덱스의 이름도 변경해줍니다. 예제에서는 hosts를 사용해 새로운 클러스터에 연결했지만 cloud_id를 사용해도 무방합니다.
그리고 기존 인덱스(test)와 새로운 인덱스(test_new)를 전부 검색 할 수 있게 API도 수정합니다.
GET test/_search → GET test*/_search
기존 클러스터 내 test 인덱스의 데이터를 새로운 클러스터로 이관하기 위해 logstash pipeline을 새로 생성합니다. 새로운 클러스터에서는 test_old라는 인덱스로 데이터를 입력합니다.
Pipeline작업이 완료되면 아래와 같이 데이터 이관이 완료됨을 확인할 수 있습니다.
데이터 이관이 완료되면 기존 클러스터에 연동되어 있던 API의 엔드포인트를 새로운 클러스터로 지정해주면 됩니다.