DBAtlas · 데이터베이스 운영 아틀라스

Elasticsearch 클러스터 설치 (3+ 노드, TLS, Kibana)

Elasticsearch난이도: 중급소요 시간: 60–90분

3개 이상의 노드로 구성된 Elasticsearch 8.x / 9.x 클러스터를 처음부터 구축합니다: Elastic 저장소, RAM에 맞춘 heap, memory lock, vm.max_map_count, 첫 번째 노드의 자동 보안 구성(TLS + elastic 비밀번호), enrollment token을 이용한 나머지 노드의 합류, 공용 또는 분리된 master/data 역할, Kibana 설치 및 enrollment, 공유 snapshot 저장소와 야간 SLM 정책. 결과적으로 TLS와 비밀번호로 보호되고, green 상태이며, Kibana가 연결되어 있고 매일 밤 snapshot을 생성하는 클러스터를 얻습니다. 설치된 클러스터의 일상 운영(shard, 디스크, 노드 추가/제거), 보안 강화, snapshot/restore 및 버전 업그레이드는 별도의 Elasticsearch 가이드에서 다룹니다.

구성: 3+ Elasticsearch 노드 (+ 선택 사항: Kibana 서버)

시작하기 전에

  • 모든 서버가 지원되는 동일한 운영 체제 릴리스이며 최신 상태입니다. 시간은 동기화되어 있습니다(chrony). 시간 차이가 있으면 TLS 인증서와 token이 유효하지 않은 것으로 처리될 수 있습니다.
  • 각 노드의 RAM은 … GB(heap은 … MB가 됨)이고 CPU는 최소 2개입니다. Elasticsearch는 자체 JDK를 포함하므로 Java를 별도로 설치하지 않습니다.
  • …에 충분한 여유 공간이 있습니다(디스크가 85% 차면 data 노드에 새 shard가 할당되지 않고, 90%에서는 shard가 다른 노드로 이동하기 시작합니다). SSD를 권장합니다.
  • Hostname과 IP는 고정입니다: ……=……, ………, …=……. 노드 간 9300(transport), 클라이언트에서 노드로 9200(HTTPS)…, 사용자에서 Kibana로 5601…이 열려 있습니다.
  • 서버가 artifacts.elastic.co에 HTTPS로 접근할 수 있습니다(또는 사내 mirror가 설정되어 있음). 설치 가능한 버전은 저장소를 추가한 뒤 아래 명령으로 확인합니다.
  • 서버에 이전 Elasticsearch 설치나 데이터 디렉터리가 없습니다(이전 클러스터의 데이터가 남아 있으면 노드가 새 클러스터에 합류하지 못합니다).
  • …가 모든 master 및 data 노드에서 같은 NFS 공유로 마운트되어 있습니다(fstab에 영구 등록). elasticsearch 사용자가 공유에 쓰기 권한을 가져야 합니다. 사용자 UID가 모든 노드에서 같지 않으면 NFS 쪽에서 all_squash,anonuid=…를 사용하거나 UID를 맞춥니다.
  • Root/sudo 권한, 유지보수 시간, 서버 snapshot이 준비되어 있습니다. enrollment token은 30분간 유효하므로 다른 노드를 합류시키는 단계는 중단 없이 진행합니다.

가이드 단계

  • 운영 체제 준비 — Hostname 설정 · Hostname 설정 (Kibana) · 이름 해석 설정 (/etc/hosts) · 기본 도구 설치 및 시간 동기화 · 커널 설정 작성 (vm.max_map_count) · sysctl 설정 적용 …
  • Elastic 저장소 및 소프트웨어 설치 — Elastic GPG 키 가져오기 · Elastic 저장소 정의 · Elastic 저장소 정의 · 설치 가능한 버전 조회 · Elasticsearch 설치 · 버전 고정
  • Heap, 메모리 잠금 및 디렉터리 — Heap 크기 설정 · 파일 소유권 설정 (heap.options) · systemd에서 메모리 잠금 허용 · systemd 다시 로드 · 데이터 디렉터리 준비 · Snapshot 디렉터리 권한 설정
  • 첫 번째 노드: 클러스터 시작 — elasticsearch.yml 작성 (1번 노드) · 파일 소유권 설정 (elasticsearch.yml) · 서비스 시작 (1번 노드) · elastic 사용자 비밀번호 설정 · API 접근용 임시 자격 증명 파일 생성 · 클러스터 상태 확인 (단일 노드) …
  • 클러스터 구성 완료 — 모든 노드의 합류 확인 · cluster.initial_master_nodes 줄 제거 · 1번 노드를 전용 master로 전환: shard 비우기 · 1번 노드의 역할을 master로 바꾸고 데이터 디렉터리 정리 · 임시 allocation 규칙 제거
  • 검증 — 클러스터 상태 확인 · 메모리 잠금 및 heap 확인 · Master 선출 및 투표 구성 확인 · 테스트 index로 shard 분산 확인 · 로그 파일 확인
  • Kibana 설치 및 enrollment — Kibana 설치 · 수신 주소 설정 · Kibana enrollment token 생성 · Kibana를 클러스터에 연결 (kibana-setup) · Kibana를 여러 노드에 연결 · 암호화 키 생성 …
  • Snapshot 저장소 — 저장소 등록 및 검증 · 야간 snapshot 정책 정의 (SLM)
  • 설치 후 작업 — 애플리케이션 사용자 및 역할 생성 · 클라이언트용 CA 인증서 준비 · 모니터링 및 백업 체크리스트 적용 · 임시 자격 증명 파일 삭제
내 환경에 맞춘 단계별 계획 열기 →