【製品情報】Patroni 4.1.0

音声ガイド

概要

1. Patroniとは何か?
Patroniは、高可用性(HA)PostgreSQLソリューションを構築するためのテンプレートです。Pythonで書かれており、PostgreSQLクラスタのライフサイクル全体を管理し、可用性と一貫性を維持します。

これはプラグアンドプレイのシステムではなく、クラスタの状態を保存し、リーダー選出を管理するために、etcd、Consul、ZooKeeper、あるいはKubernetes自体のような分散設定ストア(DCS)を使用する柔軟なフレームワークです。Patroniは、DBA、DevOpsエンジニア、SREがデータセンターやクラウド環境で耐障害性のあるPostgreSQLクラスタを迅速にデプロイ・管理できるように設計されています。

2. Patroniの利点は何か?
Patroniを使用する主な利点は、自動化、信頼性、柔軟性に集約されます。

  • 自動フェイルオーバー: Patroniの最大の利点は、プライマリデータベースノードの障害を自動的に検出し、健全なレプリカを昇格させてその役割を引き継がせることで、ダウンタイムを最小限に抑える能力です。
  • 高可用性: プライマリノードとレプリカノードからなるクラスタを管理することで、個々のノードに障害が発生してもデータベースサービスが利用可能な状態を維持します。
  • 管理の簡素化: 新規クラスタのブートストラップ、レプリカの追加、全ノードにわたるPostgreSQL設定の管理といった複雑なタスクを自動化します。また、手動でのスイッチオーバー、再起動、設定変更などを簡単に行うためのコマンドラインツール(patronictl)を提供します。
  • データ一貫性: PostgreSQLのネイティブなストリーミングレプリケーションをサポートし、非同期または同期モードのいずれにも設定可能です。これにより、管理者は高い可用性をとるか、データ損失に対するより強力な保証をとるかを選択できます。
  • 柔軟性: プラットフォームに依存せず、複数の分散設定ストアをサポートします。また、ベアメタル、VM、そしてKubernetesネイティブ環境など、さまざまな環境で実行できます。
  • 監視と統合: ヘルスチェック、クラスタステータス、パフォーマンスメトリクスを公開する包括的なREST APIを提供し、ロードバランサー(HAProxyなど)や監視システム(Prometheusなど)との統合を容易にします。

3. Patroniはどのようにして利点を実現しているか?
Patroniは、分散合意システム、ヘルスモニタリング、自動化の組み合わせによって高可用性を実現します。

  • 分散設定ストア(DCS): DCSはPatroniアーキテクチャの中核であり、クラスタの状態に関する唯一の信頼できる情報源(single source of truth)として機能します。
  • リーダー選出: プライマリのPostgreSQLノードは、DCS内で短いTime-to-Live(TTL)を持つリーダーロックを保持します。このロックを継続的に更新することで、自身が正常に稼働していることを通知します。
  • 障害検出: プライマリノードに障害が発生すると(クラッシュ、到達不能など)、リーダーロックを更新できなくなります。TTLが期限切れになると、ロックは解放されます。
  • リーダーレース: ロックの失効は、レプリカノード間での「リーダーレース」を引き起こします。レプリカはPatroniのREST APIを使って互いに状態を問い合わせ、どのノードが最も健全で最新のデータを持っているか(つまり、最も高いログシーケンス番号(LSN)を持つか)を判断します。
  • 昇格: リーダーロックを最初に取得できた健全なレプリカが、自身を新しいプライマリに昇格させます。
  • 再設定: クラスタ内の他のすべてのノードは、DCSを介して新しいリーダーを検出し、新しく昇格したプライマリからレプリケーションを行うように自動的に再設定されます。もし古いプライマリがオンラインに復帰した場合、リーダーロックを失ったことを検出し、自身を新しいプライマリのレプリカとして再設定します。

この全プロセスは自動化されており、手動介入なしで高速かつ信頼性の高いフェイルオーバーを実現します。

4. バージョン4.1.0の新機能は何か?
リリースノート(ドキュメント内では2025年9月23日リリース予定)によると、バージョン4.1.0では、可観測性、管理、Kubernetes統合に焦点を当てたいくつかの新機能と改善が導入されています。

主な新機能は以下の通りです。

  • 監視データの強化: REST APIとpatronictl listコマンドで、各レプリカの詳細な受信・再生LSN/ラグ情報が提供されるようになり、レプリケーションの健全性をより簡単に監視できるようになりました。
  • 新しいpatronictlコマンド: スタンバイクラスタの降格・昇格プロセスを簡素化するため、demote-clusterとpromote-clusterコマンドが追加されました。
  • 同期レプリケーション制御の改善: sync_priorityタグにより、どのメンバーを同期レプリカとして優先するかを管理者が制御できるようになりました。
  • Kubernetes統合の強化:
    • Readiness APIチェック: レプリカPodは、アクティブにレプリケーションを行い、リーダーから大きく遅れていない場合にのみ「Ready」と見なされるという重要な改善がされました。これにより、まだ最新の状態でないレプリカにトラフィックが送られるのを防ぎます。
    • ブートストラップラベル: kubernetes.bootstrap_labels機能が追加され、クラスタの初期作成やブートストラップ段階でPodに割り当てられるラベルを定義できるようになりました。
  • 設定の強化:
    • 永続的なレプリケーションスロットに、オプションのcluster_type属性を追加できるようになり、スロットをプライマリクラスタでのみ作成するか、スタンバイクラスタでのみ作成するかを指定できます。
    • –validate-configコマンドに–printオプションが追加され、検証が成功した後にローカル設定を出力できるようになりました。

    日本語マニュアルを見る
    ※ 日本語マニュアルの閲覧には ユーザー登録(パスワード)が必要です。