관리 메뉴

가끔 보자, 하늘.

Ubuntu 에 Elasticsearch 롤링 업데이트 본문

개발 이야기/인프라 구축 및 운영

Ubuntu 에 Elasticsearch 롤링 업데이트

가온아 2023. 10. 23. 15:08

1. 재설치

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'
sudo apt update && sudo apt -y upgrade
sudo apt install apt-transport-https ca-certificates wget
sudo apt install elasticsearch

 

2. 설정 (7.x에 대한 상세한 설정 참고 링크)

> sudo vi /etc/elasticsearch/elasticsearch.yaml
# node 관련 설정 진행
.
.

> sudo vi /etc/security/limits.d/elasticsearch.conf # debian 계열. 
> sudo vi /etc/security/limits.conf # redhat 계열

# 파일/메모리 제한 해제 설정 추가 >> 시스템 재시작 필요
elasticsearch hard memlock unlimited
elasticsearch soft memlock unlimited
elasticsearch hard nofile 65536
elasticsearch soft nofile 65536
elasticsearch hard nproc 65536
elasticsearch soft nproc 65536

# vm.max_map_count 상향
> sudo vi /etc/sysctl.conf
vm.max_map_count = 262144

# 위 설정 후 reboot 후에 아래와 같이 체크
> ulimit -l
# unlimited 라고 출력되면 설정 완료


# 만약 인증서가 있다면 권한 변경
> sudo chown elasticsearch:elasticsearch /etc/elasticsearch/elastic-cert.p12
> sudo chmod 644 /etc/elasticsearch/elastic-cert.p12

# 사용자를 elasticsearch 그룹에 추가. package로 설치한 경우만..
> sudo usermod -aG elasticsearch <사용자명>

지속적인 운영을 위해 현재 elected master만 남기고 우선 업데이트를 진행하세요. kibana, logstash는 다른 노드들을 업데이트 하는동안 elected master 에 연결되어 서비스를 지속할 수 있습니다. 

이후 마지막에 기존 elected master를 재설치 전에 kibana와 logstash를 잠시 중단해 둡니다. 이후 재설치가 완료되면 kibana를 업그레이드 후 우선 시작하여 이상여부를 확인, 그리고 logstash를 업그레이드 후 재시작합니다.

3. 모니터링을 위한 MetricBeat 설정

# 모니터링을 위한 metricbeat 설치
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.17.14-amd64.deb
sudo dpkg -i metricbeat-7.17.14-amd64.deb

> sudo vi /etc/metricbeat/metricbeat.yml


# metricbeat 와 kibana 버전은 일치해야 함.
# kibana에서 mb_user 계정 등록 및 권한 부여. 
setup.kibana:
  host: "172.31.6.33:5601"
  username: "mb_user"
  password: "mb_user_passwd"

output.elasticsearch:
  hosts: ["172.31.6.11:9200", "172.31.6.12:9200","172.31.6.13:9200"] # master node들만 입력하세요.
  username: "mb_user" # kibana에서 계정을 생성하고 권한을 부여해야 합니다. 적절한 이름으로 수정하여 사용하세요.
  password: "mb_user_passwd"
  
# 설정. kibana의 버전이 metricbeat와 동일해야 한다.
> sudo metricbeat modules enable elasticsearch-xpack #elasticsearch 모니터링 모듈을 활성화 합니다.
> sudo metricbeat modules disable system  # 개별 시스템 모니터링 모듈은 비활성화 합니다.
> sudo metricbeat setup -e # 

# 실행
> sudo service metricbeat start

서로 다른 버전이 혼재된 경우 elected master의 버전을 기준으로 처리됩니다.

롤링 업데이트는 일반적으로 많은 시간이 소요됩니다. 업데이트가 아닐 때도 시스템을 교체할 경우에는 인덱스 재할당이 진행되므로 더 많은 시간이 소요됩니다. 워낙 많은 파일로 데이터들이 분할되어 있어 백업해서 복구하는 것도 쉽지 않습니다. 이럴 경우 cluster안에서는 서로 다른 버전의 node 들이 혼재되어 있어 kibana에서 node를 쉽게 볼 수 없습니다.

이런 경우 kibana의 devtool 등에서 GET _cat/nodes?v로 현재 node들의 상태를 확인할 수 있습니다.

# 출력된 결과 예시
172.31.1.1 45 98 7 1.80 2.01 1.83 cdhilrstw   - node-1
172.31.1.2 46 99 2 0.28 0.20 0.23 cdhilmrstw  * node-2
172.31.1.3  5 99 0 0.17 0.09 0.08 cdfhilmrstw - node-3

 

반응형