冗長性と拡張性のために2つのWebサーバーを使用する単純なシナリオを取得しました。
しかし、2つのWebサーバーのセットアップを完全に冗長にするにはどうすればよいですか?私は2つの解決策を考えることができます。
2つのWebサーバー、1つのロードバランサーが負荷を分散します。ロードバランサー用に1台の追加マシン。しかし、ロードバランサーはどのように冗長になりますか?
2台のマシン。それぞれがWebサーバーを実行し、ロードバランサーを実行して、負荷を分散します。両方のマシンへのDNSエントリポイントがあります。負荷分散に追加のマシンは必要ありません。
通常、この種の問題をどのように解決しますか?
しかし、2つのWebサーバーのセットアップを完全に冗長にするにはどうすればよいですか?
通常、あなたはしません。シームレスなフェイルオーバーでデータベースを完全に冗長化することは困難です。また、完全な冗長性には追加のハードウェアが必要なため、サイトが少し大きくなる前に実装されないことがよくあります。
セッションの状態-ユーザーのログイン状態、ショッピングカートの内容などを考慮する必要があります。これはどのように処理されますか?
サービスが完全にステートレス(ユーザーごとにカスタマイズされていないfx静的ファイルサービス)の場合は、DNSラウンドロビンを使用して、サーバーごとに1つずつ、サイトの2つのIPアドレスを公開できます。
フェイルオーバーの処理方法をもう少し制御する必要がある場合は、2つのWebサーバーを検討できます。どちらも、 Windows NLB を介して、またはLinuxでは Linux-HA)のようなものを使用して同じIPアドレスを共有します。 、 Keepalived など(いくつかの可能な解決策があります)。
http://www.howtoforge.com/high-availability-load-balancer-haproxy-heartbeat-debian-etch
ハートビートとともに両方のサーバーにhaproxyをインストールします。 Haproxyは両方のWebサーバーに負荷分散し、ハートビートはサーバーの1つに障害が発生した場合に仮想IPを引き継ぐフェイルオーバーを提供します。
サーバーが2つだけに制限されている場合は、各マシンのロードバランサーが相互にポイントしているDNSラウンドロビンよりも悪い結果になる可能性があります。従来、ロードバランサーは、独自の冗長性とフェイルオーバーを備えた独自のサーバー上の階層です。
ハードウェアロードバランサーを想定すると、通常、ネイティブ構成を使用してフェイルオーバー用にアクティブ/パッシブクラスターにセットアップできます。ソフトウェアロードバランサー(Microsoft NLBではない)を使用している場合は、VRRPに準拠しているものを探し、VRRPを使用してロードバランサーのフェイルオーバーを処理します。 Microsoft NLBを使用している場合は、スケールアウトクラスター内のすべてのマシンで実行され、マシンの障害を自動的に処理します。
通常、高可用性/スケーラビリティのフェイルオーバーソリューションを実装するには2つの方法があります。 1つ目は、ラウンドロビンDNSレコードでロードバランサーと組み合わせて短いTTLを使用することであり、2つ目は、ハードウェアまたはソフトウェアソリューションでハートビートモニタリングとIPアドレスフェイルオーバーを使用することです。一部のソリューションでは、信頼性を高めるためにこれら2つのアプローチを組み合わせて使用しています。
これを行うために現金を投じるべきだと言っているわけではありませんが、ZeusのZXTMおよびGLBソリューションをチェックして、商用ソリューションで何が可能かを理解してください。私は過去に自分のハードウェアでそれらを使用しましたが、良い結果が得られました。
FWIW、DNSレコードで短いTTLを使用し、LBを失った場合に、プログラムでDNSをバックアップWebヘッドに向けることで、かなり信頼できるはずです。 Zerigoのようなサービスを使用すると、レコードをその場で変更するためにヒットできるAPIが提供されるため、これを行うことができます。コストを最適化することを検討している場合、これはロールする方法です。
Linuxでこれを行うには、LVS上に構築されたソリューションを含むいくつかのソリューションがあるようです: http://www.cyberciti.biz/faq/rhel-centos-Fedora-keepalived-lvs-cluster- configuration / ですが、デプロイできる場所(AWS以外など)に制限があり、セットアップ、監視、および正しく実装するための追加コストがかかる場合があります。