엔지니어링

자체 관리형 Elasticsearch에서 AWS의 Elastic Cloud로 마이그레이션하는 방법

점점 더 많은 온프레미스 워크로드가 클라우드로 이동되고 있습니다. Elasticsearch는 오랫동안 사용되어 왔으며, 일반적으로 사용자와 고객은 온프레미스에서 이를 직접 관리하고 있습니다. Elastic Cloud의 Elasticsearch Service - 수많은 다양한 지역에 걸쳐 Amazon Web Services(AWS), Google Cloud 및 Microsoft Azure에서 실행되는 관리형 Elasticsearch Service는 Elastic Stack과 엔터프라이즈 검색, Observability 및 보안 솔루션을 사용하는 가장 좋은 방법입니다.

자체 관리형 Elasticsearch에서 이동하려는 경우 Elasticsearch Service에서 다음 작업을 처리합니다.

  • 기본 인프라 프로비저닝 및 관리
  • Elasticsearch 클러스터 생성 및 관리
  • 클러스터 확장 및 축소
  • 업그레이드, 패치 및 스냅샷 생성

이를 통해 여러분은 시간적 여유가 더 많아지고 다른 과제를 해결하는 데 시간과 노력을 집중할 수 있게 됩니다.

이 블로그에서는 Elasticsearch 클러스터의 스냅샷을 만든 다음 Elasticsearch Service에서 이를 복원하여 Elasticsearch Service로 마이그레이션하는 방법을 살펴봅니다.

클러스터의 스냅샷 생성

자체 관리형 Elasticsearch에서 Elasticsearch Service로 전환할 때 가장 먼저 고려해야 할 사항은 사용할 클라우드 서비스 제공자 및 지역입니다. 이는 일반적으로 배포된 기존 워크로드, 클라우드 전략 및 기타 다양한 요소에 따라 달라집니다.

여기에서는 AWS의 Elasticsearch Service에 대한 프로세스를 살펴보겠습니다. Google Cloud와 Azure에 대해 동일한 작업을 수행하는 방법도 곧 알려드리겠습니다.

Elasticsearch 클러스터 데이터를 다른 클러스터로 이동하는 가장 쉬운 방법은 클러스터의 스냅샷을 생성한 다음 해당 스냅샷을 사용하여 새 Elasticsearch Service 클러스터에서 복원하는 것입니다.

클러스터 스냅샷을 수행하는 방법은 여러 가지가 있습니다. 가장 쉬운 방법은 일회성 스냅샷 작업을 수행하는 것입니다.

Elasticsearch가 지속적으로 데이터를 수집한다고 가정할 때 일회성 스냅샷 작업의 단점은 스냅샷이 생성된 시간과 새 클러스터에서 스냅샷이 복원되는 시간 사이에 시간 지연과 데이터 손실이 발생한다는 것입니다. 이러한 지연을 최소화하려면 스냅샷 수명 주기 정책을 생성하는 것이 좋습니다. Elasticsearch 클러스터가 검색 사용 사례에 대해서와 같이 지속적으로 데이터를 수집하지 않는 경우에는 일회성 스냅샷이 좋습니다.

로컬 클러스터 스냅샷을 생성하기 전에 로컬 클러스터 스냅샷이 저장될 AWS S3 버킷을 구성해야 합니다. AWS에서 실행되는 새 Elasticsearch Service 클러스터는 이 위치로부터 클러스터 상태를 복원하게 됩니다.

이를 위해 필요한 주요 단계는 다음과 같습니다.

  • 클라우드 스토리지 구성(이 경우 AWS S3 버킷)
  • 로컬 스냅샷 리포지토리 구성
  • 스냅샷 정책 설정
  • Elasticsearch Service에서 새 클러스터 프로비저닝
  • Elasticsearch Service 클러스터 사용자 정의 스냅샷 리포지토리 구성
  • 로컬 스냅샷으로부터 Elasticsearch Service 클러스터 복원

클라우드 스토리지 구성

  1. S3 버킷을 생성합니다. S3 버킷은 Elasticsearch Service 클러스터에 대해 선택된 동일한 영역에 있어야 합니다.
  2. JSON 탭을 통해 S3 버킷 정책을 생성하고 S3 버킷 정책 JSON(버킷 이름 사용)을 추가합니다.
  3. 정책 검토를 클릭하고 정책 이름을 지정합니다.
  4. IAM 사용자를 생성하고 위에서 만든 S3 버킷 정책을 할당합니다.
  5. 다음: 사용 권한을 클릭하고, 기존 정책 직접 연결을 선택하여 이전 단계에서 만든 정책을 검색합니다.
  6. 이 정책이 선택되어 있는지 확인한 후 다음:태그를 클릭합니다. 태그 추가를 건너뛰고 사용자 만들기를 클릭할 수 있습니다.
  7. 사용자 보안 자격 증명을 다운로드합니다.

로컬 스냅샷 리포지토리 구성

1. S3 플러그인 설치

Elasticsearch 홈 디렉터리의 각 로컬 Elasticsearch 노드에 대해 다음 명령을 실행하여 온프레미스 배포 환경에 Elasticsearch S3 플러그인을 설치합니다.

sudo bin/elasticsearch-plugin install repository-s3

이 명령을 실행한 후 노드를 다시 시작해야 합니다.

2. S3 클라이언트 사용 권한 구성

다음 명령을 실행하여 온프레미스 클러스터 S3 클라이언트 사용 권한을 구성합니다.

bin/elasticsearch-keystore add s3.client.default.access_key
bin/elasticsearch-keystore add s3.client.default.secret_key

로컬 클러스터가 스냅샷을 S3에 작성하는 데 필요한 자격 증명을 가지려면 이 사용 권한이 필요합니다. Access_key 및 secret_key는 이전 단계에서 생성된 IAM 사용자로부터 사용할 수 있습니다.

스냅샷 정책 설정

1. 스냅샷 리포지토리 구성

Kibana 개발자 도구에서 다음을 실행하여 로컬 클러스터에서 S3 스냅샷 리포지토리를 구성합니다. 여기서는 스냅샷을 작성할 S3 버킷을 로컬 클러스터에 알려줍니다. 방금 생성한 IAM 사용자에게 이 S3 버킷에 쓰고 읽을 수 있는 권한이 있어야 합니다.

PUT _snapshot/
{
  "type": "s3",
  "settings": {
    "bucket": ""
  }
}

2. 스냅샷 정책 생성

그런 다음, 새로 생성된 S3 버킷에 스냅샷을 저장할 스냅샷 정책을 로컬 클러스터에 생성합니다.

Kibana 개발자 도구에서 일회성 스냅샷을 생성할 수도 있습니다.

PUT /_snapshot//?wait_for_completion=true
{
  "indices": "*",
  "ignore_unavailable": true,
  "include_global_state": false
}

개발자 도구에서 다음 명령을 실행하여 스냅샷이 작동하는지 확인합니다.

GET _snapshot//_all

Elasticsearch Service에서 새 클러스터 프로비저닝

S3에서 작동하는 스냅샷이 있으면 Elasticsearch Service(cloud.elastic.co)에서 이제 새 클러스터를 프로비저닝해야 합니다. 여기서 기존 워크로드, AWS 리전 및 Elasticsearch 버전을 가장 잘 반영하는 사용 사례를 선택할 수 있습니다. 

Elasticsearch Service 콘솔에서 클러스터 키 저장소 설정을 구성하세요.

구성해야 하는 두 가지 설정은 다음과 같습니다.

s3.client.default.access_key
s3.client.default.secret_key

Elasticsearch Service 클러스터가 S3 버킷에서 스냅샷을 읽을 수 있는 권한을 가지려면 이 설정이 필요합니다. IAM 사용자 보안 자격 증명과 동일합니다.

Elasticsearch Service 클러스터 사용자 지정 스냅샷 리포지토리 구성

이제 Elasticsearch Service 클러스터에 새 스냅샷 리포지토리를 생성해야 합니다. 그러면 복원할 스냅샷이 S3의 어디에 있는지 Elasticsearch Service에게 알려줍니다. 이렇게 하려면 Kibana에 로그인하고 스택 관리 를 선택한 다음 스냅샷 및 복원 설정으로 이동합니다. 리포지토리 등록을 선택합니다.

스냅샷이 있는 버킷 이름을 추가합니다.

그런 다음 리포지토리가 올바르게 구성되었는지 확인합니다.

마지막으로 Elasticsearch Service 클러스터에서 복원할 스냅샷을 볼 수 있는지 확인합니다.

스냅샷에서 Elasticsearch Service 클러스터 복원

스냅샷을 복원하려면 Elasticsearch Service 콘솔의 Elasticsearch Service 클러스터 API 콘솔로 이동하여 다음 세 가지 명령을 실행합니다. 세 가지 명령 모두 API 콘솔에서 POST로 실행됩니다.

모든 인덱스 닫기

*/_close?expand_wildcards=all

이는 복원 단계에서 충돌이 없도록 먼저 모든 인덱스를 닫기 위한 것입니다.

스냅샷 복원

/_snapshot///_restore

이 명령은 스냅샷을 복원합니다.

모든 인덱스 열기

*/_open?expand_wildcards=all

이 명령은 모든 인덱스를 엽니다.

blog-on-prem-to-ec-aws-14.png

스냅샷 복원 확인

모든 인덱스와 함께 스냅샷을 복원했는지 확인합니다. Kibana로 이동하여 개발자 도구에서 다음 명령을 실행합니다.

GET _cat/indices

이때 스냅샷을 생성한 자체 관리형 클러스터의 데이터와 동일한 데이터를 사용하여 Elasticsearch Service에서 새 클러스터를 실행해야 합니다. 이제 Beats 또는 Logstash와 같은 수집 소스를 Elastic Cloud 콘솔에서 찾을 수 있는 새로운 Elasticsearch Service 엔드포인트로 다시 지정할 수 있습니다.

바로 지금 Elastic Cloud로 마이그레이션하세요

스냅샷을 통해 자체 관리형 Elasticsearch 클러스터를 Elastic Cloud의 Elasticsearch Service로 이동하는 것은 쉬운 프로세스입니다. 자체 관리형 Elasticsearch는 매우 재미있을 수 있지만 Elasticsearch Service는 Elasticsearch 클러스터를 관리하는 모든 힘든 작업을 대신 처리해 주기 때문에 여러분은 좀더 많은 시간을 더 중요한 작업에 할애할 수 있습니다. Elastic Cloud로의 마이그레이션의 이점에 대해 자세히 알아보거나 지금 14일 무료 체험판에 등록하세요.