Elasticsearch 클러스터를 8.5.3에서 8.15.3으로 업그레이드하는 체크리스트 및 단계별 절차입니다. 업그레이드는 클러스터의 가용성을 유지하며, 서비스 중단 없이 진행할 수 있도록 롤링 업그레이드 방식을 사용합니다. 각 단계는 사전 준비, 업그레이드 작업, 이후 정상 확인으로 구성됩니다.
1. 업그레이드 전 기본 체크
1.1 클러스터 상태 및 사전 체크
- 클러스터 상태 확인:
green
상태인지 확인합니다. 클러스터 상태가yellow
또는red
일 경우 업그레이드를 진행하기 전 문제를 해결해야 합니다.curl -X GET "localhost:9200/_cluster/health?pretty"
- 백업 수행: 예상치 못한 데이터 손실을 방지하기 위해 모든 데이터의 스냅샷을 생성합니다.
curl -X PUT "localhost:9200/_snapshot/my_backup/snapshot_1?wait_for_completion=true&pretty"
- 플러그인 호환성 확인: 사용 중인 플러그인들이 업그레이드하려는 Elasticsearch 버전과 호환되는지 확인합니다. 모든 플러그인은 노드 업그레이드 시 재설치해야 합니다.
- 릴리즈 노트 검토: Elasticsearch 8.15.3의 변경 사항 및 호환성 정보를 검토하여 업그레이드에 영향을 줄 수 있는 설정을 확인합니다.
2. 업그레이드 작업
롤링 업그레이드는 데이터 노드를 티어별로 업그레이드하는 방식으로 진행하며, 마스터 엘리저블 노드를 마지막에 업그레이드합니다.
2.1 업그레이드 순서
- 데이터 노드 티어별 업그레이드
frozen
→cold
→warm
→hot
순서로 업그레이드합니다.- 각 티어의 모든 노드를 업그레이드한 후 다음 티어로 이동합니다.
- 티어별 노드를 확인하려면 아래와 같이 요청할 수 있습니다.
curl -X GET "localhost:9200/_nodes/data_frozen:true"
- 비마스터 및 비데이터 노드 업그레이드
- 머신 러닝, 인제스트, 코디네이팅 노드를 순서대로 업그레이드합니다.
- 마스터 엘리저블 노드 업그레이드
- 마지막으로 마스터 엘리저블 노드를 업그레이드합니다.
- 마스터 노드를 확인하려면 다음 명령어를 사용합니다.
curl -X GET "localhost:9200/_nodes/master:true"
2.2 노드별 업그레이드 단계
각 노드에 대해 아래의 순서대로 업그레이드를 진행합니다.
2.2.1 샤드 할당 비활성화
- 노드를 종료하기 전, 샤드 할당을 일시적으로 비활성화하여 불필요한 샤드 복제를 방지합니다.
curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d' { "persistent": { "cluster.routing.allocation.enable": "primaries" } } '
2.2.2 인덱싱 중지 및 플러시 수행
- 인덱싱 중지: 업그레이드 과정에서 샤드 복구 속도를 높이기 위해 비필수 인덱싱 작업을 중지하는 것이 좋습니다.
- 플러시 수행
curl -X POST "localhost:9200/_flush"
2.2.3 머신 러닝 작업 일시 중지
- 머신 러닝 작업을 일시 중지하여 클러스터 부하를 줄입니다.
curl -X POST "localhost:9200/_ml/set_upgrade_mode?enabled=true"
2.2.4 노드 종료
- 노드를 종료하기 위해 사용 중인 서비스 매니저에 맞는 명령어를 사용합니다.
- systemd를 사용하는 경우
sudo systemctl stop elasticsearch.service
- SysV init을 사용하는 경우
sudo -i service elasticsearch stop
- systemd를 사용하는 경우
2.2.5 Elasticsearch 업그레이드
- 패키지 매니저를 통해 Elasticsearch를 설치하거나 업데이트합니다.
- Debian/Ubuntu
sudo apt update sudo apt install elasticsearch=8.15.3
- RHEL/CentOS
sudo yum update elasticsearch-8.15.3
- Debian/Ubuntu
- 플러그인 업그레이드: 모든 플러그인을 재설치합니다.
sudo bin/elasticsearch-plugin install [플러그인명]
2.2.6 노드 재시작
- 노드 재시작 명령
- systemd
sudo systemctl start elasticsearch.service
- SysV init
sudo -i service elasticsearch start
- systemd
2.2.7 샤드 할당 재활성화
- 노드가 클러스터에 다시 조인하면 샤드 할당을 재활성화합니다.
curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d' { "persistent": { "cluster.routing.allocation.enable": null } } '
2.2.8 노드 복구 확인
- 클러스터 상태를
green
으로 유지하며 복구 상태를 확인합니다.curl -X GET "localhost:9200/_cat/health?v=true"
2.3 반복 수행
- 2.2 단계를 각 노드에 대해 반복하여 전체 클러스터를 업그레이드합니다.
3. 업그레이드 이후 정상 확인
3.1 머신 러닝 작업 재개
- 업그레이드 모드를 비활성화하고 머신 러닝 작업을 재개합니다.
curl -X POST "localhost:9200/_ml/set_upgrade_mode?enabled=false"
3.2 클러스터 상태 및 기능 확인
- 클러스터 상태 확인: 업그레이드 후 클러스터 상태가
green
인지 확인합니다.curl -X GET "localhost:9200/_cluster/health?pretty"
- 노드 버전 확인: 모든 노드가 8.15.3 버전으로 업그레이드되었는지 확인합니다.
curl -X GET "localhost:9200/_cat/nodes?h=ip,name,version&v=true"
3.3 성능 및 로그 모니터링
- 업그레이드 후 Elasticsearch 로그에서 오류나 경고 메시지가 발생하지 않았는지 확인합니다.
- 성능 지표를 모니터링하여 업그레이드가 안정적으로 완료되었는지 평가합니다.
3.4 새로운 기능 및 설정 확인
- 모든 노드가 최신 버전으로 동작하는 상태에서 새로운 기능이나 설정이 정상적으로 활성화되었는지 확인합니다.
- 업그레이드 중 추가된 설정이나 최적화된 옵션이 있는지 확인하여 필요에 따라 적용합니다.
이 체크리스트에 따라 Elasticsearch 클러스터를 안전하고 효율적으로 업그레이드할 수 있습니다. 업그레이드 후에는 각종 기능이 안정적으로 작동하는지 주기적으로 모니터링하여 시스템 성능을 최적화하는 것이 좋습니다.
728x90
댓글