[Elasticsearch] 운영 환경에서 노드 디스크 교체 작업 가이드

2019. 8. 30. 17:54Elasticsearch

Elasticsearch 운영 환경에서 다양한 이유로 노드의 디스크를 교체를 해야 할 때가 있음

 

대략적인 순서는 다음과 같음

 

1. 클러스터 내 모든 인덱스 close

curl -XPOST 'IP:PORT/INDEX*/_close'

 

2. 노드 shutdown

kill -SIGTERM [node process ID]

 

3. 시스템 정지

halt -p

※ 시스템 정지 전에, 빠른 재부팅을 위해 /etc/fstab 내 교체할 디스크에 대해 주석처리해두면 좋다(#UUID=...)

 

그렇지 않을 경우 부팅 시 찾을 수 없는 디스크를 찾느라 오래걸릴 수 있다고 함

 

4. 디스크 교체 및 RAID 설정

 

5. 부팅 후 디스크 인식, 포맷, 마운트 작업

(여기서부터는 본인의 작업 환경에 따른 파티션 및 옵션 등을 사용)

2TB 이하 디스크의 경우 fdisk 명령어를 사용할 수 있으나 초과하는 경우 parted 명령어를 사용해야 함

 

파티션 셋팅

parted /dev/sdb
(parted)mklabel gpt
(parted)mkpart primary ext4 0% 100%
(parted)print <- 정상적으로 설정되었는지 확인
(parted)quit

 

파티션 셋팅 확인

fdisk /dev/sdb
Command (m for help):p

 

포맷

mkfs.ext4 /dev/sdb1

 

마운트

mkdir /data <- 마운트할 폴더 생성
mount /dev/sdb1 /data
df -h <- 마운트 상태 확인

 

부팅 마운트 설정 추가

blkid /dev/sdb1 <- UUID 확인 후
vi /etc/fstab
UUID=~~~~ /data ext4 defaults 0 0

 

6. 재부팅

reboot

 

7. elasticsearch 설정 파일 수정

마운트 디스크나 기타 다른 설정에 변경이 있다면 elasticsearch.yml 파일에서 수정

 

8. 노드 start

su - elasticsearch
ES_PATH_CONF=/.../config/A /.../bin/elasticsearch -d -p

 

9. close했던 인덱스 open

curl -X POST "IP:PORT/INDEX/_open?pretty"

명령어가 있지만 ..

데이터가 많은 경우 하나씩 open하면 계속 기다리면서 해야 하고,

한꺼번에 다 open하면 과도한 I/O 및 인덱싱 부하가 발생하므로 그렇게 하지 말라고 공식 문서에서는 가이드함

적당한 스크립트를 작성해 하나씩 open하는 것이 좋겠다 ..