Mais conteúdo relacionado
Semelhante a PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料) (20)
Mais de NTT DATA Technology & Innovation (20)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
- 1. © 2022 NTT DATA Corporation 1 © 2022 NTT DATA Corporation
PostgreSQLをKubernetes上で活用するためのOperator紹介!
2022年1月14日
株式会社NTTデータ 藤井 雅雄
Cloud Native Database Meetup #3
- 2. © 2022 NTT DATA Corporation 2
2
© 2022 NTT DATA Corporation
自己紹介
藤井 雅雄
Database Technical Lead @ NTTデータ
データベース研究開発
PostgreSQL 技術支援
PostgreSQLコミッタ
レプリケーション
WAL圧縮
バックアップ進捗確認
pg_bigm(全文検索モジュール) コミッタ
fujii_masao
MasaoFujii
- 3. © 2022 NTT DATA Corporation 3
3
© 2022 NTT DATA Corporation
本講演について
講演資料は、NTTデータのSlideShareアカウント上で公開予定です。
https://www.slideshare.net/nttdata-tech
- 4. © 2022 NTT DATA Corporation 4
PostgreSQLをK8s上で活用するための
Operator
- 5. © 2022 NTT DATA Corporation 5
5
© 2022 NTT DATA Corporation
OperatorによるK8s上のPostgreSQL環境
Operatorを使うことで、
K8s上に簡単にPostgreSQL環境を実現できる!
バックアップ
モニタリング ログ集約
PostgreSQL
HA構成
PostgreSQL PostgreSQL
HA構成
セットアップ
操作・監視
Web UI
ユーザ
- 6. © 2022 NTT DATA Corporation 6
6
© 2022 NTT DATA Corporation
K8s Operator for PostgreSQL
PostgreSQL開発コミュニティは公式のOperatorを開発・提供していない
様々な企業やコミュニティがPostgreSQL用のOperatorを提供中
• Zalando Postgres Operator
• PGO: The Postgres Operator from Crunchy Data
• StackGres
• Stolon
• KubeDB
• Cloud Native PostgreSQL
• VMware Tanzu SQL with PostgreSQL for Kubernetes
etc...
- 7. © 2022 NTT DATA Corporation 7
7
© 2022 NTT DATA Corporation
K8s Operator for PostgreSQL
PostgreSQL開発コミュニティは公式のOperatorを開発・提供していない
様々な企業やコミュニティがPostgreSQL用のOperatorを提供中
• Zalando Postgres Operator
• PGO: The Postgres Operator from Crunchy Data
• StackGres
• Stolon
• KubeDB
• Cloud Native PostgreSQL
• VMware Tanzu SQL with PostgreSQL for Kubernetes
etc...
代表的な
Operator
として紹介
- 8. © 2022 NTT DATA Corporation 8
8
© 2022 NTT DATA Corporation
Postgres Operator (Zalando)の概要
• ヨーロッパ最大手のファッション系EC企業のZalando SEがメインで開発・OSS提供している
Operator
• GitHubのスター数は2,228と人気のOperatorのうちの1つ
• 初回リリース(v1.0.0)は2018年8月
• MITライセンス
• Zalandoでは、K8s上で1400以上のPostgreSQLクラスタを稼働
(出典) "PostgreSQL on K8S at Zalando: Two years in production" talk by Alexander Kukushkin, FOSSDEM 2020
(2022年1月11日時点の情報)
- 9. © 2022 NTT DATA Corporation 9
9
© 2022 NTT DATA Corporation
PGOの概要
• PostgreSQLコア開発者が複数所属しているPostgreSQL企業のCrunchy Dataが
メインで開発・OSS提供しているOperator
• GitHubのスター数は2,204と人気のOperatorのうちの1つ
• 初回リリース(v1.0)は2017年5月と、一番歴史あるOperator
• Apache License 2.0ライセンス
(2022年1月11日時点の情報)
- 10. © 2022 NTT DATA Corporation 10
10
© 2022 NTT DATA Corporation
StackGresの概要
• PostgreSQL企業のOnGresがメインで開発・OSS提供しているOperator
• 初回リリース(v0.6)は2019年9月と、新興のOperator
• 最新版は2021年10月13日リリースされたv1.0.0
• スター数はGitHubで325、GitLabで60
• AGPLv3ライセンス (商用ライセンスのエンタープライズ版もある)
• 次回リリース予定のv1.1.0ではBabelfish for Postgresをサポート予定
(2022年1月11日時点の情報)
- 11. © 2022 NTT DATA Corporation 11
11
© 2022 NTT DATA Corporation
Operatorの比較表
Zalando PGO StackGres
メイン開発企業 Zalando SE Crunchy Data OnGres
初回リリース 2018年8月 2017年5月 2019年9月
最新バージョン 1.7.1 5.0.4 1.0.0
対応PostgreSQL
メジャーバージョン
9.6 ~ 14 10 ~ 14 12 ~ 14
ライセンス MIT Apache License 2.0 AGPL v3
スター数 2,228(Github) 2,204(Github) 325(Github)、60(Gitlab)
コントリビュータ数 118 85 12
商用サポート - The Crunchy Data Subscription StackGres Enterprise (※1)
メイン実装言語 Go Go Java
(2022年1月11日時点の情報)
(※1) StackGres Enterpriseでは、商用ライセンスで、PostgreSQLのメジャーバージョン5つに対応
- 12. © 2022 NTT DATA Corporation 12
技術要素の各Operatorでの
実現方式の比較について
1. 可用性
2. バックアップ
3. 性能監視
4. ログ収集
5. UI/API
- 13. © 2022 NTT DATA Corporation 13
13
© 2022 NTT DATA Corporation
1. 可用性の比較
各OperatorともにレプリケーションとPatroniでHA構成を実現
PostgreSQL
(スタンバイ)
Patroni
Pod1
PostgreSQL
(プライマリ)
Patroni
Pod2
PostgreSQL
(スタンバイ)
Patroni
Pod3
レプリケーション レプリケーション
状態監視、自動
フェイルオーバなど
- 14. © 2022 NTT DATA Corporation 14
14
© 2022 NTT DATA Corporation
Patroniの概要
Patroniは、Zalando SEがメインで開発・OSS提供している
PostgreSQLのHA構成テンプレート
• MITライセンス
• 3台以上のPostgreSQLのHA制御も可能
• ZooKeeperやetcdなどの一貫性が保証された分散データストア(DCS)を
ベースにHA制御
• 各Operatorでは、K8sが内部で利用するetcdをPatroniでも利用可能
- 15. © 2022 NTT DATA Corporation 15
15
© 2022 NTT DATA Corporation
正常時のPatroniの動作
PostgreSQL
(プライマリ)
PostgreSQL
(同期スタンバイ)
PostgreSQL
(非同期スタンバイ)
Patroni
Patroni
Patroni
①DBの状態監視
②etcdの更新
#1
#2
#3
• leader
• members
などを保存
プライマリ1台、同期スタンバイ1台、非同期スタンバイ1台の構成を想定
各Patroniは、担当するPostgreSQLの状態監視(①)と状態のetcdへの記録(②)を繰り返す
①DBの状態監視
①DBの状態監視
②etcdの更新
②etcdの更新
- 16. © 2022 NTT DATA Corporation 16
16
© 2022 NTT DATA Corporation
異常時のPatroniの動作
PostgreSQL
(プライマリ)
PostgreSQL
(同期スタンバイ)
PostgreSQL
(非同期スタンバイ)
Patroni
Patroni
Patroni
①leaderがexpire
#1
#2
#3
• leader
• members
などを保存
プライマリ1台、同期スタンバイ1台、非同期スタンバイ1台の構成を想定
プライマリが故障すると、Patroniは次にプライマリとなるスタンバイを選択して昇格させる
⑤プライマリに昇格
プライマリ
②leaderの不在を検知
⑥プライマリ変更を検知
故障
③#2がプライマリに
昇格できるか確認
④#2をleaderとして登録
⑦同期先を#2に変更
同期スタンバイ
- 17. © 2022 NTT DATA Corporation 17
17
© 2022 NTT DATA Corporation
2. バックアップの比較
各Operatorはそれぞれバックアップの統合ツールを同梱して利用
• バックアップの定期取得・手動取得、世代管理を手軽に実現
• バックアップから新しいPostgreSQLクラスタを作成(リストア・PITR)することも可能
• バックアップ保管先は各パブリッククラウドのオブジェクトストレージやS3互換ストレージ
Zalando PGO StackGres
バックアップ統合ツール WAL-E、WAL-G pgBackRest WAL-G
PostgreSQL
Backup
Agent
• Amazon S3
• Google Cloud Storage
• Azure Blob Storage
• S3互換(例:MinIO)
Pod
- 18. © 2022 NTT DATA Corporation 18
18
© 2022 NTT DATA Corporation
3. 性能監視の比較
Zalandoは、性能監視の仕組みを提供しない
PGOとStackGresでは、Exporter(Node、PostgreSQL)による性能情報の収集、
Prometheusによる蓄積、Grafanaによる可視化とAlert Managerによるアラートを手軽に実現できる
PostgreSQL
PostgreSQL
Exporter
Pod2
Alert
Manager
PostgreSQL
PostgreSQL
Exporter
Pod1
Prometheus
収集
アラート
閲覧
収集
データ
ソース
- 19. © 2022 NTT DATA Corporation 19
19
© 2022 NTT DATA Corporation
3. 性能監視の比較
Zalandoは、性能監視の仕組みを提供しない
PGOでは、ExporterやPrometheus、Grafanaなどを同梱するpgMonitorを利用
StackGresでは、Prometheusと連携できる仕組みを提供(Exporterコンテナの組込み自動化など)
Zalando PGO StackGres
ノード性能情報
の収集 性能監視には、Exporter
やPrometheus、
Grafanaなどを自前で導
入・設定する必要がある
Node Exporter Node Exporter
PostgreSQL
性能情報の収集
PostgreSQL Exporter
PostgreSQL Exporter
Envoy
性能情報の蓄積 Prometheus Prometheus
性能情報の可視化 Grafana Grafana
アラート Alert Manager Alert Manager
pgMonitor
- 20. © 2022 NTT DATA Corporation 20
20
© 2022 NTT DATA Corporation
4. ログ収集の比較
StackGresでは、PostgreSQLやPatroniのログを各Podから収集する
仕組みをOperatorとして提供
PostgreSQL Fluent Bit
Pod2
Fluentd
PostgreSQL
+
Timescale
PostgreSQL Fluent Bit
Pod1
Patroni
Patroni
Distributed Log Server
REST API
- 21. © 2022 NTT DATA Corporation 21
21
© 2022 NTT DATA Corporation
5. UI/APIの比較
ZalandoとStackGresは、K8s APIとは別に、独自APIとそれを使うWebコンソールを提供
PGOは、v4.7までは独自APIとそれを使うCUIを提供していたが、v5.0で削除
PostgreSQL
Pod2
PostgreSQL
Pod1
Patroni
Patroni
独自API
K8s API
apiVersion: stackgres.io/v1
kind: SGCluster
metadata:
name: simple
spec:
instances: 2
postgres:
version: 'latest' kubectl
マニフェスト
Webコンソール
- 22. © 2022 NTT DATA Corporation 22
22
© 2022 NTT DATA Corporation
Webコンソールの比較 (Zalando)
Webコンソールから必要最低限の操作やステータス確認が可能
Webコンソールへのログイン認証はない
- 23. © 2022 NTT DATA Corporation 23
23
© 2022 NTT DATA Corporation
Webコンソールの比較 (StackGres)
Webコンソールから操作できることや確認できるステータスがZalandoより多い
Webコンソールへのログイン認証がある
ダークモードへの
表示切替もサポート!
- 25. © 2022 NTT DATA Corporation 25
PostgreSQL Operator利用時の課題
- 26. © 2022 NTT DATA Corporation 26
26
© 2022 NTT DATA Corporation
Operator未同梱のPostgreSQLエクステンションの利用
Operator未同梱のエクステンションを利用するための手軽な手段が提供されていない
例えば、エクステンションを組み込んだコンテナイメージを作成して利用する必要がある
StackGresは120個以上の
エクステンションを同梱していて
Web UIから手軽に利用選択
Operator未同梱のエクステンション例
• pg_hint_plan (HINT機能)
• pg_bigm (全文検索)
• orafce (Oracle互換機能)
• mysql_fdw (MySQLアクセス用の
Foreign Data Wrapper)
• supautils (権限制御)
- 27. © 2022 NTT DATA Corporation 27
27
© 2022 NTT DATA Corporation
PostgreSQL Operatorでのストレージ検討
PostgreSQL環境のデータ種別ごとに適切なストレージを選定する必要がある
データ種別 ストレージタイプ(例) ストレージの選択肢(例)
DBデータ ブロックストレージ(高速) ・ パブリッククラウドのブロックストレージ
・ ローカルのブロックストレージ
ー OpenEBS
ー TopoLVM
ー Rook/Ceph(block)
など
性能情報
サーバログ
ブロックストレージ
バックアップ
アーカイブログ
オブジェクトストレージ
・ パブリッククラウドのオブジェクトストレージ
・ S3互換ストレージ
ー MinIO
ー Rook/Ceph(object)
ー SeaweedFS
など
- 29. © 2022 NTT DATA Corporation 29
29
© 2022 NTT DATA Corporation
おわりに
PostgreSQLの代表的なOperatorは、Zalando、PGO、StackGres
Operatorを使うことで、K8s上に簡単にPostgreSQL環境を実現できる!
バックアップ
モニタリング ログ集約
PostgreSQL
HA構成
PostgreSQL PostgreSQL
HA構成
セットアップ
操作・監視
Web UI
ユーザ
- 30. © 2022 NTT DATA Corporation 30
その他、記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。
- 31. © 2022 NTT DATA Corporation 31
31
© 2022 NTT DATA Corporation
Operatorの比較表
Zalando PGO StackGres
Capability Level Full Lifecycle Auto Pilot (OperatorHub.io未登録)
(2022年1月11日時点の情報)
(https://operatorhub.io/)