クラウドネイティブ時代のデータベース設計で考慮すべきポイントを検討する本連載。第2回はKubernetesでPostgreSQLを扱う「PostgreSQL on Kubernetes」の仕組みを解説する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
アプリケーションやWebサーバ、データベース(DB)などシステムを構成するためのプラットフォーム統一が不可欠となる中、本番利用に耐えられるまで十分成熟しているのがKubernetesだ。大手クラウドプロバイダーがマネージドサービスを提供するなどトレンドになっている。
連載第1回では、クラウドネイティブ時代のDBに求められる3つの要件として「アジリティ、可用性、拡張性」を紹介した。第2回はKubernetesでPostgreSQLを扱うことでどのようにアジリティ、可用性、拡張性およびDB固有の要件を実現できるか解説する。
あらためてKubernetesとは、コンテナ管理を自動化するためのプラットフォームだ。Kubernetesはマニフェストを用いて宣言された「あるべき状態」を維持するために、自律的に動作する。定期的に「現在の状態」を監視し、「あるべき状態」と「現在の状態」を比較。その差分がなくなるように自律的に動き続ける。これらの動作の繰り返しを「Reconciliation Loop(突き合わせループ)」と呼ぶ。この特徴を生かすことで、システム管理者によるサーバの構築や管理を自動化でき、作業の手間が大幅に削減される。
Kubernetesでは、ステートレスなアプリケーションの場合にはレプリカを複数用意することで簡単に高可用性や負荷分散を実現できるが、DBのようなステートフルアプリケーションを運用管理するためには、専用のOperatorが必要になる。
Operatorとは、Kubernetesで動作するアプリケーションの各種管理を自動化するための機能だ。管理が複雑であるPostgreSQLのようなステートフルアプリケーションの場合は、プライマリーとレプリカの役割と、DB固有の要件(自動フェイルオーバー、バックアップ、データの永続化など)を考慮する必要があるため、Kubernetesの標準的な機能だけでPostgreSQLクラスタを構築、管理するのは難しい。
そこで、PostgreSQL専用のOperatorを利用すれば、PostgreSQLクラスタをKubernetesで簡単にデプロイ、管理できるようになる。手作業だった監視、障害時の対応、バックアップ、スケーリングといったさまざまな運用管理をコード化してKubernetesに組み込み、Kubernetesの本来の機能を拡張することで、DBの管理も容易になる。
PostgreSQL Operatorは各社が開発を進めている。その中でも代表的なものが「Zalando PostgreSQL Operator」と「Crunchy PostgreSQL Operator」だ。Zalando PostgreSQL Operatorはドイツのeコマース企業Zalando SEが開発しており、MITライセンスで公開されている。Crunchy PostgreSQL OperatorはPostgreSQL関連サービスを提供する米国のCrunchy Dataが開発し、Apache License 2.0で公開されている。各PostgreSQL Operatorにはそれぞれに特徴があるが、基本的な機能は共通しており、PostgreSQLクラスタの管理に必要な機能が一通り用意されている。
ここからは、各PostgreSQL Operatorの共通機能を用いたPostgreSQLの構築、運用の自動化を見ていく。
Copyright © ITmedia, Inc. All Rights Reserved.