CNDT 2022、楽天のエンジニアが解説するKubernetesのマルチリージョン化
CNDT 2022から、楽天のエンジニアがAzure上のKubernetesクラスターをマルチリージョン化した経験を解説するセッションを紹介する。プレゼンターの佐藤匠氏は、2020年の新卒で楽天グループ株式会社に入社、現在の所属はService Operation Kaizen Section(SOK)という経歴を持つ。SOKは楽天グループが横断的に使う9つのサービスの運用を行っているという。
●動画:Kubernetesのマルチリージョン化ってどうやるの!?教えて楽天のエンジニアさん!
まず説明したのは「ゾーン」と「リージョン」の違いについてだ。ゾーンはデータセンターが存在する完全に隔離された地域を指し、それをリージョンの中に含めることで複数のゾーンがリージョン内に存在するという説明はごく普通の認識と言って良いだろう。そしてマルチリージョンにしたかった理由については、可用性の実現であるとしてこれも普遍的なニーズの実現と言える。
特に問題として説明したのは、これまではリージョンに障害が起こった際の復旧に2時間程度かかっていたということだと言う。またKubernetesのアップグレードについても、コントロールプレーンが活きたままコンポーネントのアップグレードを行うことが必要となってしまっていたとして、運用担当者にとっては心理的にリスクが伴う作業となっていたことを挙げた。
その上でマルチリージョン化には4つのポイントがあったことを説明。ここでは内部アプリと外部アプリの説明を行い、AKS上で動いている外部アプリはリバースプロキシとして稼働するシステムであり、内部アプリの下部に図式化されているRedisは内部アプリのヘルスチェックのためのデータストアであると説明されている。
最初はクラスターの冗長化ということで、東のリージョンにセカンダリーとして西のリージョンを追加して、同じアプリ構成が実行されるようにしたことを説明した。この場合、東がプライマリー、西がセカンダリーなのは西のリージョンにはまだマルチリージョンを組む機能が用意されていなかったからと語った。
2つ目のポイントはAzureが用意するGSLB(Global Server Load Blancing)の導入だ。これによって同じIPアドレスへのアクセスを振り分けることが可能になったと説明した。3つ目のcronjobについては、KubectlのPatchコマンドで活性化/非活性化を行えるようにしたと説明した。
そして4つ目のRedisのデータストアに関しては単純に複製を行うのではなく、コスト軽減の観点から別のやり方を編み出したことを解説した。
このデータストア自体は高可用性が求められる性質のものではなかったとして、変更のチェックとバックアップをGitHub Actionsで記述して実行、切り替え時には保存されていたバックアップデータから復元することでコストを2倍に抑えたことを解説した。
またシステムが利用するシークレットの管理にはHashiCorpのVaultを利用していたが、OSS版のVaultではマルチリージョンには対応していなかったことからマルチリージョンに対応するEnterprise版のVaultを導入して利用を始めたという。
これらのポイントをクリアして実際に東西のリージョンを切り替えた場合の試験も実施し、これまで2時間かかっていた復旧作業が20分で切り替えられるようになったと説明。ここで目的は達成していることを解説した。またKubernetesのアップグレードも問題なく可能になったという。
切り替えについてはRedisのデータストアの部分においてのみ先にバックアップを復元してからGSLBを切り替えるという順序が存在するが、おおむね希望通りの実装になっていることを説明した。
最後にまとめとして、障害からの復旧が20分で終了するようになったこと、切り替えに対する精神的な圧力が少なくなり気楽に行えるようになったこと、AKSのアップグレードも安心して実施可能になったこと、そしてシステム全体でカナリアリリースが行えるようになったことなどを述べてセッションを終えた。
基本的にはマネージドのサービスであるAKSを使ってAzureのリージョンに複製を行い、プライマリーとセカンダリーを切り替えるという標準的な実装となっており、マネージドサービスを変にカスタマイズしないという方針が感じられる内容であった。Redisのデータストアの部分にコスト削減の意図が見えるのは、コスト意識が高い楽天のエンジニアならではと言ったところだろう。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- AWS、Amazon RDS for PostgreSQLを発表
- MongoDB Tokyo 2013で語られた、NoSQLを上手に使うためのポイントとは
- WebLogic Serverが提供するクラスタ機能
- AWS、1GBあたり月額約1円で利用可能なアーカイブストレージを提供開始
- de:code 2018が開催。基調講演はクラウド、開発ツール、MRが語られる
- CNDT 2022、NTTデータによる金融システムにおけるクラウドネイティブなシステムアーキテクチャー解説
- クラウド時代の可用性向上―サービスレベルに応じた具体策とは?
- KubeCon Europe 2023よりGitHubがMySQL互換のVitessを使った事例のセッションを紹介
- Azure+クラウド型電子カルテにおけるリソース利用効率の課題と改善への道すじ
- ブロックのようにサービスを組み合わせて使うAmazon Web Services