【ラフトアルゴリズム】

Raftアルゴリズム とは?

💡 分散サーバーが「多数決」で正しい答えを決める仕組み
📌 このページのポイント
Raftアルゴリズム:リーダー選出とログ複製 リーダー Node 1 ★ 書き込み受付 フォロワー Node 2 フォロワー Node 3 ログ複製 ログ複製 ACK(過半数で確定) 定期的にハートビートを送信 (フォロワーはこれが途絶えると選挙を開始) クライアント 書き込み 過半数(2/3)が承認 → コミット確定。1台障害でもクラスターは稼働継続
リーダーがログを複製し、過半数の承認でコミットが確定する
ひよこ ひよこ

Raftアルゴリズムって何のためにあるの?

ペンギン先生 ペンギン先生

複数のサーバー(ノード)が協調して動く分散システムで「全員が同じデータを持ち続ける」ことを保証するためのアルゴリズムだよ。1台が壊れても残りで正しい状態を維持できるようにするんだ。

ひよこ ひよこ

どうやって「みんな同じ」を保つの?

ペンギン先生 ペンギン先生

Raftではクラスター内の1台をリーダーに選び、データの書き込みはすべてリーダー経由で行うよ。リーダーは変更内容をログに記録して他のノード(フォロワー)に送り、過半数が「受け取った」と返答したら正式にコミットする仕組みだね。

ひよこ ひよこ

リーダーが壊れたらどうなるの?

ペンギン先生 ペンギン先生

フォロワーはリーダーからの定期的なハートビートを監視していて、一定時間音沙汰がなくなると選挙を開始するよ。「私をリーダーにして!」と投票を呼びかけて、過半数の票を集めたノードが新リーダーになるんだ。これがリーダー選出(Leader Election)だね。

ひよこ ひよこ

Paxosっていうのもあるって聞いたけど、何が違うの?

ペンギン先生 ペンギン先生

どちらも同じ目的のアルゴリズムだよ。Paxosは1990年代に生まれた先駆けだけど、理解・実装が難しいという評判があったんだ。RaftはPaxosをシンプルに再設計したもので「正しく理解できること(Understandability)」を最大の設計目標にしているよ。etcdConsulなど多くのミドルウェアがRaftを採用しているのもその理由だね。

ひよこ ひよこ

etcdって何に使われているの?

ペンギン先生 ペンギン先生

etcdKubernetesのクラスター設定情報を保存するキーバリューストアだよ。Kubernetesが「どのPodをどのノードで動かすか」などの状態をetcdに保存していて、Raftのおかげで複数のetcdノードが常に同じ設定情報を持ち続けられるんだ。つまりRaftはKubernetes信頼性を支える土台の一つになっているね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Raftアルゴリズム」って出てきたら「分散システムで複数サーバーが同じ状態を保つための合意アルゴリズム」と思えればだいたいOK!
📖 おまけ:英語の意味
「Raft Consensus Algorithm」 = Raftコンセンサスアルゴリズム
💬 「Paxosより理解しやすいもの(Understandable Paxos)」が設計目標で、「いかだ(raft)」のように複数のノードがまとまって動くイメージから名付けられたとも言われるよ
← 用語集にもどる