AirbnbにおけるKubernetes上の分散データベースによる高可用性の実現
伝統的には、高価なスタンドアローン・サーバーとシャーディングを使用してデータベースのスケーリングを行ってきたが、このアプローチはデータの需要が増加するとメンテナンスが問題となった。クラウド環境で高可用性、低レイテンシー、スケーラビリティを実現しながら合理的なコストで水平スケーリング可能なオープンソース・データベースを実行することは大きな課題であった。Airbnbは、複数のKubernetesクラスターにわたる分散データベース・クラスターを展開することで、信頼性と運用性を向上させる革新的戦略を採用した。Kubernetes上でのステートフル・サービス zoals データベースの管理は、特にノードの置き換えやアップグレードに関する問題があるため困難である。Kubernetesがデータの配分に無知であるため、AirbnbはAWS EBSを使用してノードにストレージ・ボリュームをアタッチし、Kubernetes Persistent Volume Claimsを介して新しい仮想マシンに自動的に再アタッチできるようにした。カスタム・Kubernetes・オペレーターを開発し、ノードの置き換えイベントを管理することで、データベース・イニシエーション、プロアクティブ・インフラストラクチャー、計画外の障害に分類した。データベース・イニシエーションとプロアクティブ・イベントの場合、オペレーターはすべてのノードが稼働していることを確認し、ポッドの追放を調整して安全な削除を実現する。計画外の障害は調整できず、進行中のメンテナンスは、故障したハードウェアが修復されるまで置き換えをブロックすることで保護する。高可用性を実現するために、Airbnbは各データベースを異なるAWSアベイラビリティ・ゾーンにある3つの独立したKubernetesクラスターに展開し、問題の影響範囲を限定する。オーバープロビジョニングされたデータベース・クラスターは、1つのAZ、Kubernetesクラスター、あるいはゾーン内のすべてのストレージ・ノードがダウンした場合でも十分な容量を保証する。AWS EBSは、ノードの置き換えに対する高速な再アタッチと優れた耐久性を提供し、3つのレプリカでの高可用性クラスターを実現する。EBSでのレイテンシーのスパイクは、ストレージ・リード・タイムアウトの実装とレプリカからのリードを許可することで緩和し、クロス・アベイラビリティ・ゾーンのコストを避けることができる。さらに、ステイル・リードはリード・パフォーマンスを最適化する。このマルチ・クラスター・Kubernetes・ストラテジーは、AWS EBSとカスタム・オペレーターを活用し、クラウド環境でオープンソース・分散ストレージ・システムが高可用性、低レイテンシー、スケーラビリティを実現することを可能にすることで、ロバストなデータ・マネジメントを実現する。