Kubernetes PodのRTTを用いたリーダー候補の順位付けによる再選出時間の短縮

Kubernetes のステートフルなPod は運用する際に永続的なストレージを必要としているため, 独立したデータストアを持っている. また高いスケーラビリティを得るためにPod を複製できるが, ステートフルなPod の場合アプリケーションPod が使用するデータの整合性の維持が必要となる. 整合性の維持としてリーダー選出アルゴリズムによって選出されたリーダーPod が書き込み処理を行う手法がある. リーダーPod は, 複数のPod の中から選出されたPod である. すべてのPod はユーザーからの読み込みリクエストは受け取るが, 書き込みリクエストはリーダーPod が受け取る. しかし, 多くの書き込みリクエストが受け取った場合リーダーPod にアクセスが集中し, リーダーPod があるノードのCPU 使用率が上がる.その場合リーダーPod の処理が追いつかなくなり, フォロワーであるPod との整合性の維持が間に合わなくなる. またリーダーの維持方法であるリーダーレコード更新も間に合わずリーダー再選出が起きる. その間書き込みを行えるリーダーPod がいないためサービスが停止する. 本稿では事前に順位付けをすることでリーダーPod の再選出時間を短縮するアルゴリズムを提案する. 評価として提案の手法とデフォルトのリーダー選出アルゴリズムとの再選出時間の比較を行う. 実験した結果, 選出時間は変わらない結果となった. ...