서버의 물리적인 이동으로 인하여, 3개의 NODE로 이루어진 엘라스틱서치의 데이터를 스냅샷으로 백업해야 하는 상황이 발생했다.
MASTER NODE 1개와 일반 NODE 2개가 있으며, 3개의 NODE는 각각 다른 서버에 설치되어 있다. 각 서버는 UBUNTU 환경으로 구성되었다.
모든 엘라스틱 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/config/elasticsearch.yml
설정파일에 들어가서 마지막줄에 path.repo: ["/mnt/es_backup"]
와 같이 스냅샷이 저장될 특정 경로를 지정해준다.
경로를 설정한 이후에는 반드시 모든 엘라스틱서치를 재시작해주어야 한다.
나는 명령어를 쉽게 전달하기 위해서 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
위 명령을 날리면 현재 진행상황을 볼 수 있다.
완료되면
위와 같이 결과가 나온다.
더욱 상세한 과정은 공식문서인 여기에서 확인할 수 있다.
끝