23章クリティカルな状態の管理:信頼性のための分散合意

執筆:Laura Nolan

編集:Tim Harvey

プロセスは、クラッシュすることもあれば、再起動しなければならないこともあります。ハードドライブには障害が発生します。自然災害によって、ある地域の複数のデータセンターが失われてしまうこともあります。SREはこういった障害を予測し、それでもシステムを動作させ続けるための戦略を開発しなければなりません。通常それらの戦略には、システムを複数地点にまたがって動作させることが含まれます。システムを地理的に分散させること自体は比較的単純明快だとはいえ、システムの状態に対する一貫性のあるビューを管理する必要が生じます。これはとても微妙で難しいことです。

プロセスのグループは、以下のような問いに対して信頼性のある合意をしなければなりません。

  • プロセスのグループのリーダーとなっているのはどのプロセスか?
  • そのグループに含めなければならないプロセスにはどういったプロセスがあるか?
  • あるメッセージの分散キューへのコミットは成功したか?
  • あるプロセスはリースを保持しているかどうか?
  • 指定したキーに対するデータストア内の値は何か?

私たちは、システムの状態に関する一貫性のあるビューを必要とする、信頼性と高可用性を持つシステムを構築する上で、分散合意が効果的であることを知りました。分散合意の問題は、信頼できない通信ネットワークで接続された一連のプロセス間での合意形成を扱います。例えば分散システム内の複数のプロセスが、重要な設定項目、分散ロックの取得、キュー内のメッセージの処理状況といったことに関する一貫したビューを構築できなければならないことがあります。これは分散コンピューティングにおける最も基本的な概念の一つであり、事実上私たちが提供しているサービスはすべてこの概念に依存しています。 ...

Get SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.