$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ElasticsearchのHA構成について
Search
株式会社Curious Vehicle
December 05, 2025
0
2
ElasticsearchのHA構成について
株式会社Curious Vehicle
December 05, 2025
Tweet
Share
More Decks by 株式会社Curious Vehicle
See All by 株式会社Curious Vehicle
機械学習で絶対音感になりたかった
curicle
0
5
BQにおけるSQLアンチパターンとslot消費削減策
curicle
0
10
VibeKanbanについて
curicle
0
5
"バーチャル宮本さん"を作ってみた
curicle
0
5
"バーチャル宮本さん” 本番デプロイ編
curicle
0
7
最近課金しているAIサービスについて
curicle
0
11
Pub_Sub
curicle
0
4
音声認識について
curicle
0
7
ファクトリメソッドパターンについて
curicle
0
5
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
380
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
How to train your dragon (web standard)
notwaldorf
97
6.4k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
[SF Ruby Conf 2025] Rails X
palkan
0
480
Transcript
ElasticsearchのHA構成につい て 2025年12月 濱田
はじめに • 内容 ◦ Elasticsearchがどのようにして冗長構成をとるか • きっかけ ◦ 業務でElasticsearchを触る機会があってクラスター 構成や仕組みについて調べたら面白かったため
Elasticsearchとは 高速でスケーラブルな分散型検索・分析エンジン JSONドキュメントを保存・検索・分析 ほぼリアルタイムで動作
クラスター構成
クラスター構成 Master Node Data Node shard-1 shard-4 Data Node shard-2
shard-5 Data Node shard-3 shard-6 Master Node • クラスタ設定の管理 • シャード配置の決定 • ノードの監視 • インデックス等のメタデータ 操作 Data Node • データの書き込み • 検索処理
クラスター構成 Master Node Data Node shard-1 shard-4 Data Node shard-2
shard-5 Data Node shard-3 shard-6 Master Node • クラスタ設定の管理 • シャード配置の決定 • ノードの監視 • インデックス等のメタデータ 操作 Data Node • データの書き込み • 検索処理 マスターノードが落ちると クラスターが停止するため冗長化必須
冗長化の仕組み (~6系)
冗長化の仕組み (~6系) Master Node Master Node マスター Master Node マスター候補
マスター候補 ルール① マスターノードは奇数にする ルール② minimum_master_nodes (最小マスターノード数) を正しい値に設定す る elasticsearch.yml discovery.zen.minimum_master _node: (マスターノード数 / 2) +1 ※3台の場合「2」
マスターが落ちたらどうなるか
冗長化の仕組み (~6系) Master Node Master Node Master Node マスター候補 マスター候補
elasticsearch.yml discovery.zen.minimum_master _node: (マスターノード数 / 2) +1 マスター ping ping ※3台の場合「2」 ①マスター停止を検知
冗長化の仕組み (~6系) Master Node Master Node Master Node マスター候補 マスター候補
elasticsearch.yml discovery.zen.minimum_master _node: (マスターノード数 / 2) +1 マスター ※3台の場合「2」 ②最小ノード数を満たしているとき 次のマスターを選定
冗長化の仕組み (~6系) Master Node Master Node Master Node マスター候補 elasticsearch.yml
discovery.zen.minimum_master _node: (マスターノード数 / 2) +1 マスター候補 ※3台の場合「2」 ③ノードIDが小さい方が マスターに昇格 マスター
冗長化の仕組み (~6系) Master Node Master Node Master Node マスター候補 elasticsearch.yml
discovery.zen.minimum_master _node: (マスターノード数 / 2) +1 マスター候補 ※3台の場合「2」 ④復旧後はマスター候補にな る マスター
冗長化の仕組み (~6系) Master Node Master Node Master Node マスター候補 マスター候補
elasticsearch.yml discovery.zen.minimum_master _node: (マスターノード数 / 2) +1 マスター ※3台の場合「2」 最小ノード数を満たさないので クラスターは停止する 2つノードが落ちた場合
ルール① マスターノードは奇数にする ルール② minimum_master_nodes を正しい値に設定する このルールはなぜ存在するか?
冗長化の仕組み (~6系) elasticsearch.yml discovery.zen.minimum_master _node: (マスターノード数 / 2) +1 ※4台の場合「3」
ルール① マスターノードは奇数にする Master Node Master Node Master Node Master Node
冗長化の仕組み (~6系) Master Node elasticsearch.yml discovery.zen.minimum_master _node: (マスターノード数 / 2)
+1 ※4台の場合「3」 ルール① マスターノードは奇数にする Master Node Master Node Master Node 2:2に分断する可能性
冗長化の仕組み (~6系) Master Node elasticsearch.yml discovery.zen.minimum_master _node: (マスターノード数 / 2)
+1 ※4台の場合「3」 ルール① マスターノードは奇数にする Master Node Master Node Master Node 最小ノード数を満たさないので クラスターは停止する
冗長化の仕組み (~6系) Master Node Master Node マスター候補 elasticsearch.yml discovery.zen.minimum_master _node:
(マスターノード数 / 2) +1 マスター ※デフォルト「1」 ルール① マスターノードは奇数にする
冗長化の仕組み (~6系) Master Node elasticsearch.yml discovery.zen.minimum_master _node: (マスターノード数 / 2)
+1 ※デフォルト「1」 ルール① マスターノードは奇数にする ping Master Node マスター 何らかでpingが失敗 マスター候補 Master Node ping
Master Node マスター 冗長化の仕組み (~6系) Master Node elasticsearch.yml discovery.zen.minimum_master _node:
(マスターノード数 / 2) +1 ※デフォルト「1」 ルール① マスターノードは奇数にする ping マスター マスター昇格 -> スプリットブレイン -> データの不整合・破損するリスク
冗長化の仕組み (~6系) elasticsearch.yml discovery.zen.minimum_master _node: (マスターノード数 / 2) +1 ルール②
minimum_master_nodes を正しい値に設定する ※デフォルト「1」 Master Node Master Node マスター Master Node マスター候補 マスター候補
冗長化の仕組み (~6系) ルール② minimum_master_nodes を正しい値に設定する Master Node Master Node マスター
Master Node マスター候補 マスター候補 elasticsearch.yml discovery.zen.minimum_master _node: (マスターノード数 / 2) +1 ※デフォルト「1」
冗長化の仕組み (~6系) ルール② minimum_master_nodes を正しい値に設定する Master Node Master Node Master
Node マスター候補 マスター elasticsearch.yml discovery.zen.minimum_master _node: (マスターノード数 / 2) +1 ※デフォルト「1」 スプリットブレイン -> データの不整合・破損するリスク マスター
Elasticsearch v7 release Voting Configurations 導入
とにかく自動化された
冗長化の仕組み (7系~) Master Node Master Node Master Node Master Node
• マスター選挙が行われる • 投票権が自動的に与えられる(奇数) • 選挙で過半数を獲得するとマスターになれる マスター
冗長化の仕組み (7系~) Master Node Master Node Master Node Master Node
マスター 過半数が見えない -> マスター辞退 マスターが見えない -> マスター選挙立候補
冗長化の仕組み (7系~) Master Node Master Node Master Node Master Node
過半数が見えない -> マスター辞退 マスターが見えない -> マスター選挙立候補 スプリットブレインが起きない マスター
冗長化の仕組み (7系~) Master Node マスター Voting-only Node Master Node 2ノードの場合は
過半数=2 が必要なため投票だけ行うノードを用意する
7系では過半数投票でマスターを自動選出する ため、6系のようにsplit-brainを意識して設定 するっ必要はほとんどない