本文へスキップ

Raftコンセンサスとは?

らふとこんせんさす

Raftコンセンサスとは、分散システムで複数のノードがデータの一貫性を保ちながら合意を形成するためのアルゴリズムで、Paxosより理解しやすい設計を目指して開発されました。

Raftコンセンサス(Raft Consensus Algorithm)とは、分散システムにおける複数サーバー(ノード)が、ネットワーク障害やノード障害が発生しても一貫したデータ状態を維持するための合意形成(コンセンサス)アルゴリズムです。スタンフォード大学のDiego OngaroとJohn Ousterhoutによって発表され(2014年)、理解のしやすさを最重要設計目標として掲げた点が大きな特徴です。

Raftは分散ログの複製を通じてコンセンサスを実現します。核となる概念は以下の3点です。

  • リーダー選出:クラスター内のノードはLeader・Follower・Candidateの3状態を持ち、選挙によって一つのLeaderが選ばれる。Leaderはすべての書き込みを受け付ける
  • ログ複製:Leaderはクライアントから受けた操作をログに追記し、過半数(クォーラム)のFollowerに複製してからコミットする
  • 安全性の保証:任期(Term)という概念を用いてネットワーク分断や旧Leaderの残留を検出し、整合性を維持する

従来のPaxosアルゴリズムは強力ですが実装が難解とされてきました。Raftはリーダーシップを明確にし、問題をサブ問題に分割することで実装を容易にし、教育・実用の両面で広く採用されています。

etcd(Kubernetesのデータストア)・CockroachDB・TiKVなど、多くの分散データストアやシステムがRaftを採用しており、クラウドネイティブなインフラの基盤として重要な役割を果たしています。

使い方・例文

KubernetesのクラスターがetcdにRaftを使って設定情報を複数ノードに複製しており、1台のノードが障害でダウンしてもクラスターの状態管理が継続される、という構成で登場します。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語