엘라스틱서치 스냅샷을 이용하여 백업하기

Jake Seo·2020년 9월 25일
1

Elasticsearch

목록 보기
4/4

환경 설명

서버의 물리적인 이동으로 인하여, 3개의 NODE로 이루어진 엘라스틱서치의 데이터를 스냅샷으로 백업해야 하는 상황이 발생했다.

MASTER NODE 1개와 일반 NODE 2개가 있으며, 3개의 NODE는 각각 다른 서버에 설치되어 있다. 각 서버는 UBUNTU 환경으로 구성되었다.

스냅샷을 이용한 백업 과정

UBUNTU NFS를 이용하여 백업된 데이터가 저장될 공간 만들기

모든 엘라스틱 NODE가 접근할 수 있는 어떤 공간이 필요하다. 이 부분은 꼭 NFS일 필요는 없지만 나는 여기서 NFS를 이용했다.

NFS란 Network File System으로 다른 컴퓨터에 있는 저장공간을 마운트하여 마치 내 컴퓨터의 저장공간처럼 이용하는 것이다.

NFS를 이용하기 위해서는 먼저 NFS에 필요한 패키지들을 설치해주어야 한다.

apt-get update
apt-get install nfs-common nfs-kernel-server portmap

위의 명령어를 통하여 NFS를 설치할 수 있다.

NFS를 설치한 뒤에는 NFS에 관련된 설정을 해주어야 하는데, 설정파일은 우분투 기준 /etc/exports에 있다.

거기에 아래의 내용을 추가해주면 된다.

/elastic_snapshot       아이피1(rw,sync,no_root_squash,subtree_check) 아이피2(rw,sync,no_root_squash,subtree_check) 아이피3(rw,sync,no_root_squash,subtree_check)

위 내용은 해당 디렉토리(/elastic_snapshot)에 아이피1, 아이피2, 아이피3이 NFS 클라이언트를 통한 해당 디렉토리 마운팅을 가능하게 해준다.

rw는 대략 읽고 쓰기를 허용하겠다는 것이고, sync는 동기 형식이란 뜻이다. 이후에 아래의 명령을 쳐준다.

mount -t nfs 아이피:/elastic_snapshot /mnt

위 명령을 수행하게 되면, NFS를 이용한 마운팅이 완료된다. 마운팅이 완료된 후에는 /mnt 경로에서 원격의 /elastic_snapshot 경로를 마치 내 컴퓨터에 있는 것처럼 이용이 가능하다.

/mnt 디렉토리에 들어가서 touch test.txt같은 파일을 생성해보며 파일 쓰기 권한이 적절하게 부여됐는지 잘 확인해본다.

Elasticsearch 스냅샷을 위한 path 설정하기

.../elasticsearch/config/elasticsearch.yml 설정파일에 들어가서 마지막줄에 path.repo: ["/mnt/es_backup"] 와 같이 스냅샷이 저장될 특정 경로를 지정해준다.

경로를 설정한 이후에는 반드시 모든 엘라스틱서치를 재시작해주어야 한다.

Elasticsearch 에 명령어 날리기

나는 명령어를 쉽게 전달하기 위해서 Kibana를 활용했다.

PUT _snapshot/data_backup
{
  "type": "fs",
  "settings": {
    "location": "/mnt/es_backup"
  }
}

키바나에 위와 같이 명령을 날리면, 스냅샷 백업을 위한 저장소를 인식한다.

PUT _snapshot/data_backup/snapshot_1?wait_for_completion=true

위와 같이 명령을 날리면 백업을 시작하고, wait_for_complete 옵션은 완료될 때까지 기다리겠냐는 옵션이다.

GET _snapshot/data_backup/_all?pretty

위 명령을 날리면 현재 진행상황을 볼 수 있다.

완료되면

위와 같이 결과가 나온다.

더욱 상세한 과정은 공식문서인 여기에서 확인할 수 있다.

profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글