前回からつづいてYugabyteDBのドキュメントを読んでいきます。
前回はArchitecture > Core functions > Read I/O pathを読みました。 今回はArchitecture > Core functions > High Availabilityを読みます。
ドキュメントのバージョンは最新のv2.19 previewです。 また画像は同ドキュメントより引用しています。
High availability
YugabyteDBは一貫性と分断耐性を兼ね備えたデータベースであると同時にリーダーの障害時に新しいリーダーとして フェイルオーバー出来るアクティブレプリカを持つことで高可用性(HA)を達成している。
もしノードに障害が発生した場合、そのノード上で動作するYB-TServerとYB-Masterの停止を引き起こす。
YB-TServer failure
YB-TServerはYSQLレイヤとアクティブなIOを提供するピアーリーダータブレットを含むタブレットをホストする。
YSQレイヤとタブレットピアーフォロワーとタブレットピアーリーダーで発生した障害はそれぞれ特別な方法で あつかわれる。
YQL failure
アプリケーションの視点からみればYQLはステートレスである。そのためクライアントが発行したリクエストは単純に他ノードのYQLに リクエストが送信される。スマートクライアントを利用している場合、スマートクライアントは理想的なYB-TServerの場所 をタブレットが所有するキーから検索し、リクエストを直接そのノードに転送する。
Tablet peer follower failure
タブレットピアーフォロワーはクリティカルパスではない。この障害はユーザーリクエストへの可用性に影響しない。
Tablet peer leader failure
タブレットピアーリーダーの障害は数秒以内にRaftレベルのリーダー選出を自動的にトリガーし、他のYB-TServerに配置されている タブレットピアーが新しいリーダーとして選出される。 タブレットピアリーダーに障害が発生した場合、可用性が損なわている時間は約3秒(ハードビートの感覚がデフォルトの500msの場合)である。
YB-Master failure
YB-Masterは通常のIOオペレーションではクリティカルパスでは無いため、ユニバースを動作させるのに影響は無い。 しかしYB-Masterは異るノードで動作するピアーのRaftグループの一部であるため。 このピアーのうちの一つがアクティブなマスターで残りがアクティブスタンバイである。 YB-Masterのリーダーであるアクティブマスターに障害が発生した場合、ピアーはリーダーの障害を検知し、新なアクティブ マスターであるYB-Masterのリーダーを障害時に数秒以内で再選出する。