web-dev-qa-db-ja.com

ハードウェアロードバランサーを使用せずに、複数のNginxロードバランサー間で負荷を分散することは可能ですか?

別のNginxサーバーをソフトウェアロードバランサーとして使用して、アプリサーバー間で負荷を分散する予定です。しかし実際には、アプリサーバーの前にあるロードバランサーを使用すると、ダウンタイムなしで必要なときにアプリサーバー(OS、アプリケーションなど)を更新できるためです。

次に、ロードバランサー自体を更新するにはどうすればよいかを理解しました。つまり、アプリケーションのロードバランサーとして機能するサーバー上のOSとNginxを更新する必要がある場合でも、サイトはダウンします。

ハードロードバランシングは問題外なので、2つのNginx Webサーバーを接続して、アプリサーバー間で負荷を分散し、ダウンタイムを発生させることなく、必要なときに1つずつ更新できるようにすることができるかどうか疑問に思いました。

これは現実的ですか?

3
its_me

共通のアクセスポイントが必要です。これは、仮想アドレスまたはルーティングを使用して実行する必要があります。追加のハードウェアとプロトコルなしでこれを達成するための最良/最も簡単な方法 LVSを使用することです

LVSは、その仕事をすることができ、非常に高速で効果的で、優れたスループットを備えたカーネルレベルのIPバランサーです。同じノードでファイルウォールを構成することもできます。

構成の場合、最も簡単な方法は、LVS-NATを2つのノード(アクティブバックアップ)で構成することです。これは、ノード間のハートビートをサポートし、両側に仮想IPを使用します。マスターノードに障害が発生した場合、スレーブノードはarp更新をスイッチにプッシュしてIPアドレスを引き継ぎます。

構成ユーティリティはたくさんあります 、一部のディストリビューションは、構成用の豪華なユーティリティを備えています。 RHEL/Centos/FedoraにはピラニアWebGUIがあります。

実サーバーの場合、タイムアウト、スケジューリング、比率、監視、セッションの永続性などを構成できます。非常に柔軟です。

また、ノード間でセッション情報を共有することをお勧めします。

enter image description here

推奨ドキュメント:

LVSの公式: http://www.linuxvirtualserver.org/Documents.html

LVS wiki: http://kb.linuxvirtualserver.org/wiki/Main_Page

3
GioMac

これは、マシンをホストする方法によって異なります。ハードウェアサーバーまたは仮想マシンをレンタルするより安価なホスティング業者は、別のサーバーにルーティングされる可能性のある、ある種のフェイルオーバーIPを提供します。通常は手動で切り替えることができます(または監視ツールを介して自動化されますが、これはお勧めしません)。これは、簡単なセットアップには十分快適です。

ある種のサーバーハウジングを使用し、複数のNICを備えたサーバーを実行している場合、結合されたNICを備えたマシン間で独自のネットワーク、ローカルネットワーク、サーバー間の直接リンクなどをセットアップできます。キープアライブやペースメーカーなどのソリューションを使用できます。しかし、セットアップとチューニングは、これに精通している人が行う必要があります(私の経験)。このソリューションは、正しくセットアップされていれば、完全に自動化され、堅実に機能します。 ipsとservicesは、パッケージを失うことなく手動で切り替えることができます。更新、メンテナンス、再起動に非常に役立ちます。

どちらのソリューションもまだ貧乏人のHAソリューションですが、それでも何もないよりはましです。重要なのは、たとえそれが何らかの形で制限されているとしても、have soltionです。


ところで、あなたが求めているのは負荷分散ではなくフェイルオーバーです。記録のためだけに:)