ブログ@nnaka2992

データベースってなんだよ

YugabyteDBのドキュメントを全部読む Day9

前回からつづいて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のリーダーを障害時に数秒以内で再選出する。