본문 바로가기

Elasticsearch 8.5.3 → 8.15.3 롤링 업그레이드 체크리스트 및 단계별 절차

Elasticsearch 클러스터를 8.5.3에서 8.15.3으로 업그레이드하는 체크리스트 및 단계별 절차입니다. 업그레이드는 클러스터의 가용성을 유지하며, 서비스 중단 없이 진행할 수 있도록 롤링 업그레이드 방식을 사용합니다. 각 단계는 사전 준비, 업그레이드 작업, 이후 정상 확인으로 구성됩니다.

1. 업그레이드 전 기본 체크

1.1 클러스터 상태 및 사전 체크

  1. 클러스터 상태 확인: green 상태인지 확인합니다. 클러스터 상태가 yellow 또는 red일 경우 업그레이드를 진행하기 전 문제를 해결해야 합니다.
    curl -X GET "localhost:9200/_cluster/health?pretty"
  2. 백업 수행: 예상치 못한 데이터 손실을 방지하기 위해 모든 데이터의 스냅샷을 생성합니다.
    curl -X PUT "localhost:9200/_snapshot/my_backup/snapshot_1?wait_for_completion=true&pretty"
  3. 플러그인 호환성 확인: 사용 중인 플러그인들이 업그레이드하려는 Elasticsearch 버전과 호환되는지 확인합니다. 모든 플러그인은 노드 업그레이드 시 재설치해야 합니다.
  4. 릴리즈 노트 검토: Elasticsearch 8.15.3의 변경 사항 및 호환성 정보를 검토하여 업그레이드에 영향을 줄 수 있는 설정을 확인합니다.

2. 업그레이드 작업

롤링 업그레이드는 데이터 노드를 티어별로 업그레이드하는 방식으로 진행하며, 마스터 엘리저블 노드를 마지막에 업그레이드합니다.

2.1 업그레이드 순서

  1. 데이터 노드 티어별 업그레이드
    • frozencoldwarmhot 순서로 업그레이드합니다.
    • 각 티어의 모든 노드를 업그레이드한 후 다음 티어로 이동합니다.
    • 티어별 노드를 확인하려면 아래와 같이 요청할 수 있습니다.
      curl -X GET "localhost:9200/_nodes/data_frozen:true"
  2. 비마스터 및 비데이터 노드 업그레이드
    • 머신 러닝, 인제스트, 코디네이팅 노드를 순서대로 업그레이드합니다.
  3. 마스터 엘리저블 노드 업그레이드
    • 마지막으로 마스터 엘리저블 노드를 업그레이드합니다.
    • 마스터 노드를 확인하려면 다음 명령어를 사용합니다.
      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

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
  • 플러그인 업그레이드: 모든 플러그인을 재설치합니다.
    sudo bin/elasticsearch-plugin install [플러그인명]

2.2.6 노드 재시작

  • 노드 재시작 명령
    • systemd
      sudo systemctl start elasticsearch.service
    • SysV init
      sudo -i service elasticsearch start

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

댓글