ZFSヘッドノードをデータベースサーバーとして使用していますか?


9

ここに示すように、Nexentaの推奨アーキテクチャに基づいて、高可用性クラスタ共有ストレージにデュアルヘッドZFS-backed NASを使用しています。

ここに画像の説明を入力してください

1 JBODのディスクは単一の4 TB Postgresデータベースのデータベースファイルを保存し、他のJBODのディスクは20 TBの大きな未加工バイナリフラットファイル(大きな恒星オブジェクトの衝突シミュレーションのクラスター結果)を保存します。つまり、PostgresファイルをバッキングするJBODは主にランダムなワークロードを処理し、シミュレーション結果をバッキングするJBODは主にシリアルワークロードを処理します。どちらのヘッドノードにも256 GBのメモリと16コアがあります。クラスターには約200のコアがあり、それぞれがPostgresセッションを維持しているため、約200の同時セッションが予想されます。

ZFSヘッドノードをクラスターのミラーリングされたPostgresデータベースサーバーのペアとして同時に機能させることが、セットアップで賢明かどうか知りたいのですが。私が見ることができる唯一の欠点は次のとおりです。

  1. インフラストラクチャのスケーリングの柔軟性が低下します。
  2. 冗長性のレベルがわずかに低くなります。
  3. PostgresのメモリとCPUリソースが制限されています。

ただし、私が理解している利点は、ZFSは自動フェールオーバーにかなりとんでもないことであり、ヘッドと一緒に失敗するため、ヘッドノードが失敗したかどうかを各Postgresデータベースサーバーに理解させるために多くの作業を費やす必要はありません。ノード。


PostgreSQL 、どのような形式の共有ストレージモードでも実行できません。そうしようとすると失敗します。保護をバイパスして実行を停止しようとすると(移動/非表示などpostmaster.pid)、重大なデータ破損が発生します。
クレイグリンガー2014年

2
@CraigRinger Hm、これはwiki.postgresql.org/wiki/Shared_Storageと矛盾してますか?
elleciel 14年

1
一度に1つのポストマスターだけがデータディレクトリにアクセスする可能性があることが絶対的に保証されている場合は、これを実行できます。優れたSTONITH /フェンシングは、大規模なデータ破損を回避するための絶対的な要件です。個人的にそれをする方法はありません。また、フェイルオーバーを管理する必要があるため、メイン/ライブサーバーを自動的に特定するなど、これまで説明してきたメリットもなくなります。
クレイグリンガー

2
わかりやすくするためにWikiページを改訂しました。指摘してくれてありがとう。
クレイグリンガー2014年

1
これは意味がありません。NexentaのHAソリューションは、RSF-1クラスタリングを活用しています。RSF-1なしでLinux上のZFSでこれを行っているようです。Linux上のZFSには実際にはクラスタリングオプションがないため、Nexentaのリファレンスは適用されません。2つのヘッドノードを持つことで何を得る必要がありますか?
ewwhite 2014年

回答:


0

2つのPostgresインスタンス(Postgres用語では「クラスター」)が同じ物理ファイルで動作することはできません。

パフォーマンスが必要な場合は、シャーディングが役立つ場合があります(2つのインスタンスがそれぞれ異なるデータを運ぶ)

高可用性が必要な場合は、STONITHを使用したフェイルオーバーが解決策になる場合があります。ハードウェアが修復されていることを確認する必要があります。2番目のノードがデータベースを処理している間は、データベースを開こうとしないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.