Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ElasticsearchのHA構成について
Search
株式会社Curious Vehicle
December 05, 2025
0
8
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
11
VibeKanbanについて
curicle
0
6
"バーチャル宮本さん"を作ってみた
curicle
0
5
"バーチャル宮本さん” 本番デプロイ編
curicle
0
11
最近課金しているAIサービスについて
curicle
0
12
Pub_Sub
curicle
0
5
音声認識について
curicle
0
9
ファクトリメソッドパターンについて
curicle
0
7
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
73
The World Runs on Bad Software
bkeepers
PRO
72
12k
Building AI with AI
inesmontani
PRO
1
650
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
49
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
310
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Statistics for Hackers
jakevdp
799
230k
Google's AI Overviews - The New Search
badams
0
890
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
85
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
380
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
61
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を意識して設定 するっ必要はほとんどない