web-dev-qa-db-ja.com

HAProxy-2での負荷分散Node setup-パフォーマンスの向上は可能ですか?

2ノードのGaleraClusterの負荷分散について上司と話していましたが、理由があるかどうかはわかりませんでした。

書き込みの場合、彼の主張は、書き込みのバランスをとっても、レプリケーションを実行するには各サーバーに書き込む必要があるというものでした。

読み取りの場合、サーバー間で読み取りのバランスを取ることができますが、すべてが別のサーバー上の単一のVMを通過する場合、これは本当に時間を節約できますか?

Active-ActiveGaleraセットアップにある2つの専用SQLServerがあります。

HAプロキシを実行することを考える唯一の方法は、別のサーバーで3番目のVMです。これは、すべてをこのサーバーに通すためにパフォーマンスを向上させる価値がありますVM他のトラフィックで混雑しているサーバー上にあるのはどれですか?

HA-ProxyをSQLServerに正しく配置し、読み取りの負荷を分散することは可能ですか/意味がありますが、それでもHA-Proxyを使用してプライマリサーバーを経由してサーバーBに到達します。

この簡単なセットアップに関する一般的な考えやアドバイスを探しているだけです。

1

特定のワークロードとアーキテクチャに応じて、質問にコメントするいくつかの異なるトピックがあり、多くの「IF」があります。あなたが正しいことから始めましょう:

  • 確かにGalera自体はより良い書き込みワークロードを提供するべきではありません-これはシェアードナッシング、非シャーディングクラスターであり、どこにでも書き込む必要があることを意味します。書き込みパフォーマンスを大幅に向上させる唯一の方法は、複数のノード間で書き込み負荷を共有できる場合ですが、この場合はノードを複製します。実際、シェアードナッシングアーキテクチャであるため、追加するサーバーが多いほど、通常は全体が遅くなります。これは、最も遅いサーバーまたは遠くにあるサーバーがレプリケーションのボトルネックになるためです。書き込みパフォーマンスが必要な場合、ガレラは適していません(通常、単一サーバーよりもスループットが低くなります)。通常、ガレラをセットアップして高可用性(ノードがダウンした場合のデータとサービスの存続可能性)を取得しますが、書き込みパフォーマンスは向上しません。

いくつかのしかし:*私はいくつかのクライアントを持っていましたより良い書き込みパフォーマンスを主張しましたおそらく恐ろしいSQLクエリ+行ベースのレプリケーションを必要とするGaleraのため、そしていくつかの特別なケースでは、それでいくつかの利益を得ることができます( 30秒の書き込みを実行しても、書き込みが数レコードしかない場合は、スケーラビリティが向上します)。これは通常、非常にまれです。最初にクエリを修正する必要がありますが、私は(非常に)特定の例外を指摘しているだけです。

あなたの質問の要点は、途中でプロキシを追加しているという事実が、負荷分散クエリから得られる改善の価値がない場合です。これに答えるには、6つのことを言う必要があります。

  • クライアントとサーバー間の現在の平均ラウンドトリップ時間はどれくらいですか
  • クライアントとプロキシ間の平均ラウンドトリップ時間はどれくらいですか
  • プロキシとサーバー間の平均ラウンドトリップ時間はどれくらいですか
  • プロキシ処理時間のオーバーヘッドはどれくらいですか
  • 実際のmysqlクエリ時間のローカルレイテンシはどれくらいですか
  • 平均的なクライアントの負荷はどのくらいですか?

これにより、パフォーマンス上の理由からプロキシの使用に関心があるかどうかがわかります。

pingを使用して最初の3つ、最後の3つをアクションのプロファイリングで見つけることができます。 通常、クエリ時間はデータセンター内のラウンド時間よりもはるかに長くなりますですが、実行しているクエリと、それらのVMが(物理的に)どれだけ離れているかによって異なります。それらの時間のいくつかをキャンセルするために、人々はクライアントと同じマシンにプロキシをインストールするので、オーバーヘッドはほとんどキャンセルされます。また、HAproxyはほとんどがIPプロキシであるため、オーバーヘッドは非常に低くなっています。

さて、サーバーの負荷があまり高くない場合、レイテンシーに利点がない可能性があります-サーバーにクエリを実行するとスループットが2倍になります-レイテンシーに影響があるかどうかは、現在の負荷によって異なります。

通常、プロキシを使用するより重要な理由があります。これは高可用性です。HAProxyを使用すると、アクティブなガレラノードがダウンした場合に、セカンダリガレラノードに自動的に切り替えることができます。また、手動による切り替えも簡単になります。もちろん、プロキシ自体が単一障害点になる可能性があります。

それがあなたの決断に役立つことを願っていますが、最も重要なアドバイスは自分で試して測定することです!

編集:ところで、2つのノードのみで、クラスター(特別な構成が必要)やgarbdではなく、レプリケーションソリューションとしてガレラを使用することを願っています。そうしないと、ノードがダウンすると、2番目のノードがダウンするからです。スリットブレインを回避するためにも(50%以上のクォーラムを持つノードはありません)。

2
jynus