Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

Elasticsearch에서 S3를 스냅샷 저장소로 구성하는 방법

원문은 2017년 3월 2일 ObjectRocket.com/blog에 게시되었습니다.

데이터 플랫폼은 끊임없이 확장하고 변화하고 있지만, 한 가지는 늘 변하지 않습니다. 바로 누구나 데이터의 백업 사본을 원한다는 점입니다! 이 가이드에서는 Rackspace ObjectRocket for Elasticsearch® 인스턴스에서 S3 리포지토리 플러그인을 활용하는 방법을 소개합니다.

Elasticsearch에서 S3를 스냅샷 저장소로 구성하는 방법

기술이 아무리 발전해도 백업에 대한 수요는 여전히 존재합니다. 로컬 개발 환경으로 복원하기 위한 백업, 안전 보관이나 규정 준수를 위한 사본 등 다양한 용도로 활용됩니다. 이 글에서는 Rackspace® ObjectRocket® for Elasticsearch 인스턴스와 함께 S3 리포지토리 플러그인을 사용하는 방법을 단계별로 설명합니다.

스냅샷의 구성 요소

Elasticsearch 스냅샷은 세 가지 주요 구성 요소로 이루어집니다. 바로 리포지토리(repository), 스냅샷(snapshot), 그리고 고유한 스냅샷 이름입니다. 리포지토리에는 스냅샷을 어디에 어떻게 저장할지에 대한 세부 정보가 담겨 있습니다. 기본으로 제공되는 ObjectRocket의 야간 백업은 fs 타입이며, S3 백업은 s3 타입입니다. 두 방식은 설정 구조가 약간 다릅니다. 다음은 리포지토리의 예시입니다:

GET /_snapshot?pretty
...
{
  "s3_repository" : {
    "type" : "s3",
    "settings" : {
      "bucket" : "MYBUCKETNAME",
      "server_side_encryption" : "false",
      "region" : "us-east-1",
      "compress" : "false"
    }
  }
}
...

조회되는 각 리포지토리에는 하나 이상의 스냅샷이 배열 형태로 나열됩니다:

GET /_snapshot/s3_repository/_all?pretty
[...
  {
    "snapshot" : "20170208225601",
    "uuid" : "t6R6jxLJTIueQizv9clJYg",
    "version_id" : 5010499,
    "version" : "5.1.1",
    "indices" : [ ".triggered_watches", ".watch_history-2016.10.26", "elastalert_status", "coffee-2016.10.301", ".kibana", "coffee-2016.10.305", "coffee-2016.10.304", "coffee-2016.10.303", "coffee-2016.10.302", ".watches"
    ],
    "state" : "SUCCESS",
    "start_time" : "2017-02-09T06:56:01.191Z",
    "start_time_in_millis" : 1486623361191,
    "end_time" : "2017-02-09T06:56:12.179Z",
    "end_time_in_millis" : 1486623372179,
    "duration_in_millis" : 10988,
    "failures" : [ ],
    "shards" : {
      "total" : 57,
      "failed" : 0,
      "successful" : 57
    }
  }]

모든 _snapshot 작업에서는 올바른 리포지토리, 스냅샷, 그리고 스냅샷 식별자를 참조해야 합니다. 위 예시에서는 snapshot: 20170208225601을 고유 식별자로 사용합니다.

S3로 백업 전송하기

Elasticsearch에 S3 리포지토리를 설정하는 과정은 비교적 간단합니다. 백업을 S3 버킷으로 전송하기 위해 필요한 사전 조건은 다음 세 가지뿐입니다:

  1. repository-s3 플러그인을 설치합니다.
  2. 클러스터가 외부에서 S3에 접근할 수 있는지 확인합니다.
  3. S3에 대한 적절한 자격 증명(버킷, 시크릿 키, 액세스 키)을 준비합니다.

ObjectRocket Elasticsearch 인스턴스를 사용 중이라면 처음 두 단계는 기본적으로 이미 갖춰져 있으며, 세 번째 단계를 위해 S3 자격 증명만 준비하면 됩니다. Elasticsearch 스냅샷 프로세스의 권한을 제한하고 싶다면 AWS® IAM 콘솔에서 Custom Policy(사용자 지정 정책)를 생성하세요. 정책 문서는 다음 예시와 비슷하게 작성하면 됩니다(MYBUCKETNAME을 실제 버킷 이름으로 교체):

{
  "Statement": [
    {
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation",
        "s3:ListBucketMultipartUploads",
        "s3:ListBucketVersions"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::MYBUCKETNAME"
      ]
    },
    {
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:AbortMultipartUpload",
        "s3:ListMultipartUploadParts"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::MYBUCKETNAME/*"
      ]
    }
  ],
  "Version": "2012-10-17"
}

사전 조건이 모두 준비되었다면, 첫 번째 단계는 S3 리포지토리를 생성하는 것입니다:

PUT /_snapshot/s3_repository
{
  "type": "s3",
  "settings": {
    "bucket": "MYBUCKETNAME",
    "region": "us-east-1",
    "access_key": "KEY",
    "secret_key": "SECRET"
  }
}

리포지토리를 생성한 후에는 표준 _snapshot 작업을 모두 수행할 수 있습니다. 새 스냅샷을 생성하려면 다음 엔드포인트에 접속하여 SNAPSHOT_NAME을 지정하세요:

PUT /_snapshot/s3_repository/SNAPSHOT_NAME?wait_for_completion=false

스냅샷은 실행에 시간이 걸리는 경우가 많으므로, 진행 중인(in-flight) 스냅샷의 상태를 확인하고 싶을 때가 있습니다. 다음 엔드포인트를 사용하면 현재 실행 중인 스냅샷 또는 복원 작업에 대한 자세한 정보를 확인할 수 있습니다:

GET /_snapshot/_status

이제 마지막 스냅샷이 완료된 직후 모든 인덱스를 삭제했고, 곧바로 그 결정을 후회하게 되었다고 가정해 봅시다. S3 스냅샷에서 모든 인덱스를 복원하려면 다음 명령을 실행합니다:

POST /_snapshot/s3_repository/SNAPSHOT_NAME/_restore

특정 인덱스만 선택적으로 복원해야 한다면 요청 형식을 약간 수정하면 됩니다. 예를 들면 다음과 같습니다:

POST /_snapshot/s3_repository/SNAPSHOT_NAME/_restore
{
  "indices": "myindex_1,myindex_2",
  "ignore_unavailable": true
}

참고로, 하나의 클러스터에서는 한 번에 하나의 스냅샷 또는 복원 작업만 실행할 수 있습니다. 또한 스냅샷은 클러스터 성능에 약간의 영향을 미칠 수 있으므로, 백업 정책이 너무 공격적이지 않도록 주의하는 것이 좋습니다!

이 단계들을 진행하는 중 문제가 발생하면 언제든지 support@objectrocket.com으로 문의해 주세요.

피드백 탭을 사용하여 의견을 남기거나 질문할 수 있습니다. 또한 Sales Chat을 클릭하여 지금 바로 상담을 시작할 수도 있습니다.