web-dev-qa-db-ja.com

Postgresの負荷分散のためのPGPool、どこに置くか

だから私は読書のスタックをやっています。私はまだそれについて行くための最良の方法を100%明確にしていません。

簡単な設定をしてみましょう。サーバーUWSGIアプリへの3つのノード(ランダム)、PGSQL用の3つのノード、1つの公称マスターと2つの読み取り専用スレーブ-まだセットアップされていませんが、それが目標です。ほとんどのアプリでは、リクエストの80%はとにかく読み取り専用です。

さて、私を本当に悩ませているのは、PGPoolが通常単一のマシンとして示されていることです。負荷分散を非常に望ましい副作用として主な目標として高可用性を実現する場合、途中でPGPoolの必要性を導入することは、単一障害点と、おそらくそれ以外の場合は不必要なノードを導入することです。

どうすればよいかを確認しようとすると、DBがダウンした場合に最初に気付くのはアプリサーバーであるため、実際にはアプリサーバーがPGpoolである可能性があると思いますが、複数のPGPoolが複雑であると聞きました。

私が本当に望んでいるのは、フェイルオーバーを実行し、新しいマスターなどをマークする機能を備えた組み込みのレプリケーション機能です。PGPoolがそれを実行することはわかっています。可能であれば分散化してほしいのですが、人々は私を正しい方向に向けてくれませんか。

1
Mitchell Currie

方向:私は間違いなくこれをお勧めします ステップバイステップのチュートリアル それはあなたを正しい方向に向けるかもしれません。これは、同様の構成をセットアップするときに使用したものです。あなたはそれをあなたのニーズに大きく開いて適応させることができます。

複数のPgPool:チュートリアルは長いようです(そしてそれは:6つの部分です!)が、複数のPgpoolの設定に関連する部分は6の半分未満ですパーツ(パート5および6を参照)。 pgpoolの設定を苦痛と見なすことができたとしても、客観的には、この部分は価値がありません(ip arpingとwatchdogの設定で構成されています)。 1つのpgpoolとstreamまたはwalレプリケーションを構成するための残りの部分をすでに完了している場合は、問題にはなりません。

分散型かどうか:これは意見に基づくだけかもしれませんが、pgpool redondancyを設定する必要がある場合(私はしませんでした)、postgresqlに沿ってpgpoolを配置することをお勧めしますセットアップを簡素化し、外部からすべてに「あたかも」単純なpgsqlサーバーであるかのようにアクセスできるようにするためのサーバー。アプリとデータベースのレイヤーは、本来の機能を維持し、アセンダント/ディセンダントレイヤーに対して技術的に「不可知論」を維持することができます。

1
David B.