タグ付けされた質問 「load-balancing」

負荷分散は、複数のシステムを使用して高い要求に対処し、それらの複数のシステム間で負荷を分散することに関する技術を扱います。質問は、専用ハードウェアを使用するかどうかにかかわらず、ネットワークとサーバーの負荷分散を扱います。


6
水平方向にスケーラブルなソフトウェアロードバランサーがsslを分散する例がないのはなぜですか?
ssl、ローカルセッション、および負荷分散に関して、相互に関連していると思われる質問がたくさんあります。そのため、この質問については、事前にお詫び申し上げます。 ファイルベースのセッションを使用するWebサイトがあります。サイトの性質はほとんどがhttpですが、一部のセクションはsslです。現在、ファイルベースのセッションのため、sslリクエストは以前のhttpリクエストと同じサーバーにヒットする必要があります。 時間の制約のため、増加したhttpおよびsslトラフィックの負荷を分散するために、可能な限り簡単なことをしたいと考えています。 スティッキーロードバランシングアルゴリズムには2つのオプションがあるようです。 IPベース クッキーベース IPベースのソリューションはおそらく機能しますが、ハッシュアルゴリズムは、サーバーがダウンしたり追加されたときにユーザーが移動するサーバーを変更する可能性があります。これは、現在のファイルベースのセッション設定では望ましくありません。また、ユーザーがWebサイトを閲覧しているときに、IPを合法的に変更することは技術的には可能だと思います。 cookieベースのアルゴリズムはより良いように見えますが、sslで暗号化されたときにcookieを検査できないことは、それ自体に問題があるようです。 私はsslを負荷分散する方法の例を探していましたが、cookieベースの負荷分散を実行でき、別のsslデコーダーを追加することで増加したssl負荷を処理できる設定の明示的な例を見つけることができません。 私が見たほとんどの明示的な例では、ブラウザークライアントとロードバランサーの間にsslデコーダー(通常はハードウェア、apache_mod_ssl、またはnginx)があります。通常、例には次のようなものがあります(http://haproxy.1wt.eu/download/1.3/doc/architecture.txtから変更)。 192.168.1.1 192.168.1.11-192.168.1.14 ------- + ----------- + ----- + ----- + ----- + | | | | | +-+-+ +-+-+ +-+-+ +-+-+ +-+-+ | LB1 | | A | | B | | C | | D | + ----- + …

5
サービス拒否攻撃を防ぐための最良のテクニックは何ですか?
現在、私は(D)DoS-Deflateを使用して、負荷テスト用のApache JMeterとともに、多数のリモートサーバーでこのような状況を管理しています。 全体的にはかなりうまくいっていますが、私がこのような状況で私より長い間取り組んできたグルからのアドバイスを聞きたいと思います。Webホスティングビジネスで働いている人々は、これらの状況に対処するという公平なシェアを持っていたと思います。では、企業環境でこのような問題に取り組むためのベストプラクティスは何なのでしょうか。

1
AWS CloudFormationスタックインスタンスにSSH接続できません
私は現在、スケーラブルなロードバランサーを設定していますが、これは主にこのテンプレートに従っています: https://github.com/satterly/AWSCloudFormation-samples/blob/master/LAMP_Multi_AZ.template AWS::AutoScaling::AutoScalingGroup.CreationPolicy.ResourceSignal.Countキーを調整した後0(基本的に、成功シグナルを受信せずにスタックを読み込むことができます)、スタックを読み込むことができ、利用可能なすべてのリソースを確認できます。 作成中のキーのパブリックDNSを確認できますが、インスタンスにSSH接続できません。 私はインスタンスルール内のすべてのユーザーに対してSSHアクセスを開いていますが、これはAWSコンソールで確認できます。 AWSの公式ドキュメント内で推奨されているように、VPCのルートも構成しました:https : //aws.amazon.com/premiumsupport/knowledge-center/ec2-linux-ssh-troubleshooting/ インスタンスが存在することは確認できますが、自分のアクセスをどこかに制限しているようです。ただし、AWS EC2コンソール内では、設定はインスタンスにSSH接続できる場合と同じように見えます。 VPC、サブネット、セキュリティグループなどを含むすべての設定を表示できる場所で使用しているJSONテンプレートを次に示します。https://gist.github.com/dambrogia/e4cd93a64ae6f3a79d4a58d466f144f8 次のコマンドからタイムアウトエラーが表示されます:(私のid_rsaキーはec2内で有効です) ssh -i ~/.ssh/id_rsa ec2-user@<ec2_instance> インスタンスにSSH接続するにはどうすればよいですか?助けてくれてありがとう!

2
HAプロキシ-ラウンドロビンと最小接続
いつ使用すべきか、いつ使用すべきかについての提案はありroundrobinますleastconnか? 私はroundrobin現在使用しており、バックエンドサーバーの負荷が均等に分散されていないことを確認しました。もちろん他の問題もあるかもしれませんがleastconn、試してみたいと思いますが、ミッションクリティカルなサーバーなので、変更する前に他の経験を参考にしたいと思います。 共有するアイデアはありますか?

1
HAProxyでの基本的な体重の質問
サーバーに割り当てられた重みは、その特定のバックエンド内のバランスにのみ影響しますか? 重みを初めて実装するときに、バックエンドのすべてのサーバーに同じ数を指定すると、重みがない場合と同じになりますか? 特定の量でウェイトを調整して、シフトするトラフィックの量を計算するにはどうすればよいですか。例えば: サーバーweb1 10.10.10.10重み100 サーバーweb2 10.10.10.11重み100 サーバーweb3 10.10.10.12重量90 サーバーweb4 10.10.10.13重量90

2
500エラーおよび/またはサーバー停止時にバックアップするHAProxyスイッチ
特定の構成で、2台のバックエンドサーバーの前にHAProxyを設定しています。すべての要求はサーバーAに送信する必要があります。ただし、サーバーAが5xxエラーコードを返す場合、すべての要求はバックアップサーバーBに送られます。Aが「up」を返すと、すべての要求がAに送られます。 私はこの構成を試しています: backend example_cluster balance roundrobin option httpclose option forwardfor option httpchk HEAD /ping.html HTTP/1.0\r\nHost:www.example.com http-check disable-on-404 default-server error-limit 1 on-error mark-down redirect scheme https if !{ ssl_fc } server node1 1.2.3.4:80 check observe layer7 server node_back 5.6.7.8:443 backup ssl verify none ただし、次の2つの理由で機能しません。 node1(A)が起動している場合でも、すべてのリクエストはサーバーのnode_back(B)にルーティングされます。 サーバーAに対してhttpcheckが実行されていないようです。以上、syslogにサーバーAのダウンに関するエラーは表示されません。 「option httpchk」行とそのすぐ下の2行を削除すると、また、サーバーAの「observe layer7」も削除します。HAProxyはすべてのリクエストをノードAにルーティングすることで機能します。ただし、サーバーAが500を返す場合、HAProxyはBに切り替わりません。したがって、問題はオプションのhttpchk構成にあると想定しています。

2
負荷分散されているサーバーを確認するにはどうすればよいですか?
ロードバランサーの背後にある2つのサーバー間の一方向の同期に対するいくつかの構成変更をテストしたいと思います(これはすべてRackspace Cloudインフラストラクチャの参考情報です)。私が持っている問題は、与えられたIPが常にロードバランサーのIPであるため、どのサーバーに負荷分散されているのかわからないことです。 実際にどのサーバーにリダイレクトされたかを確認する簡単な(またはそれほど簡単ではない)方法はありますか?技術者以外のチームメンバーも比較的簡単に問題を報告できるため、ブラウザの何かが理想的ですが、これに対する最善のアプローチについてのアイデアはありがたいです。 追加情報:両方のサーバーでApacheが実行され、ロードバランサーでセッションの永続性が構成されています。

2
64k以上のWebソケット用にHAProxyを拡張
64k以上のWebソケットを処理できるアーキテクチャを設計しようとしています。 私たちは最初にAmazon ELBを試しましたが、その設計では、トラフィックやWebSocketの予期しないスパイクは許可されていません。(TCPモードでWebSocketが予期せずタイムアウトする) HAProxyではこれらの制限は適用されませんが、HAとバックエンドサーバー間で維持される〜64kのWebソケットに制限されます。 頭に浮かんだ複数のソリューション: 複数のHAProxyインスタンス、DNSによる負荷分散(Route53には加重オプションがあります) Keepalived、複数の内部IPアドレスを持つ2つのHAProxyインスタンス(実行可能かどうかは不明) これを行うより良い方法はありますか?

4
セッション数を制限するには?
Webセッションを追跡してWebアプリに制限する方法が必要です。「セッション」は、上記のWebアプリのページを閲覧する単一のユーザーとして大まかに定義されます。次のように翻訳できます。 セッションは、レイヤーまたは使用可能なデータに応じて、または<clientIP,vHost>としてタプルとして定義されます<clientIP,serverIP,serverPort><cookie,vHost> ユーザーが認証データを定義済みのログインURIに送信した後にセッションが開始します ユーザーが定義されたログアウトURIに到達した後にセッションが終了する クライアントが最後のオブジェクトを要求した後、指定されたタイムアウトの期限が切れると、セッションが終了します 指定されたセッション制限に達した後、次のユーザーはカスタムエラーページにリダイレクトされます。また、監視目的で現在のセッション数を追跡する方法と、監視サーバー(webappにクエリを定期的に発行している)をホワイトリストに登録して制限から除外する機能も必要です。 私が扱えるもの: Webアプリケーションに独自のファームが定義され、リバースプロキシモードで実行されているRadWare AppDirector Apache 2.2 SLES 11 SP2 他のオプションが残っていない場合は考慮しますが、追加のプロキシサーバーを使用しないことをお勧めします。 これらすべての背後にある理論的根拠は、前述のWebアプリが過負荷になりやすく、リクエストを不規則に拒否し始め、プロセスで(通常)フォームエントリデータを失う作業中のユーザーを怒らせます。過負荷状態になる可能性が低い制限を指定することにより、負荷が急上昇する可能性が高い場合にユーザーが後で戻るように指示される、明確に定義された障害状態を作成したいと考えています。 編集:Webアプリは3層の実装であり、最初の層(プレゼンテーション層、Apache vHostのCGIコードとして実装)はかなり単純化されており、アプリケーションサーバー間の基本的なエラー処理と要求負荷分散に限定されています。実行するWebサーバーに大きな負荷をかけることはありません。これが、AppDirectorファームで単なるフェールオーバーモード(負荷分散なし)で実行しているためです。 この時点以降はすべて基本的にブラックボックスです。データ層にはMSSQLデータベースがありますが、テーブル構造に関する意味のある情報をベンダーから入手することはほぼ不可能です。アプリケーションサーバーはクローズドソースであり、ベンダーは実装にかなり包括的なフレームワークを使用していますが、操作に関連するそれほど複雑でない質問には答えられないようです。

2
F5ロードバランサーがタイムアウト時にリクエストを再送信する
私はシステム管理者ではない、私はプログラマーであると言って、これを前置きさせてください。 最近、システム管理者がF5ロードバランサーをインストールしました。それ以来、リクエストがタイムアウトして500がスローされるたびに、ロードバランサーが同じリクエストを他のサーバーに送信することに気付きました。IISは、スクリプトが実際に実行されていても、タイムアウト応答を送信します。スクリプトの実行時間が5分を超えると、POSTリクエストも複製されます。これは、特に顧客への請求が関係するeコマースサイトでは、潜在的な問題のようです。 これは、実行時間の長いスクリプトのいくつかにのみ問題があります(ただし、深刻な問題です)。これは予想される動作であり、準拠するようにコードを変更する必要があると言われました。だから私の質問は: これは予想される動作ですか? ユーザーが更新する必要がないこと以外に、タイムアウト後にロードバランサーが要求をレプリケートする利点は何ですか? このアーキテクチャでは、サーバーを停止するかリソースを占有するスクリプトを実行すると、最終的に両方のサーバーで実行されます。それは本当に最適ですか?

4
Active Directory認証の負荷分散とフェイルオーバー
Active Directory DCに対して認証するアプリケーションの場合、明らかに、フェイルオーバーやロードバランシングなどの特定のDCではなく、メインドメインのDNSレコードを指すようにするのが最善です。 DCのIPをハードコードすることを強制するこれらのアプリケーションのベストプラクティスは何ですか?代わりに、ロードバランサーのIPアドレスをハードコーディングして、1つのDCがダウンしても、そのアプリケーションが認証できるようにすることができます。より良い代替案はありますか?

2
NameVirtualHostsを使用してwwwにリダイレクトする場合、ELBヘルスチェックをどのように設定すればよいですか?
HTTPヘルスチェックが失敗しているため、ELBはインスタンスをサービスから外し続けています。 DNSワイルドカードがあり、すべてをwwwにリダイレクトします。 vhost.conf: ServerName www.example.com ServerAlias *.example.com RewriteEngine on RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] RewriteRule ^ http://www.example.com/$1 [R=301,L] これは実際のブラウザでは正常に機能しますが、302を取得しているためと思われますが、/へのHTTPヘルスチェックは失敗します。 TCPヘルスチェックを使用するのに最適なオプションはありますか、それともHTTPを機能させる方法はありますか?

5
haproxy-tcpモードで元の/リモートIPを渡す
perpraクラスターのロードバランシングとIPフェイルオーバーのためにkeepalivedでhaproxyをセットアップしました。それがうまく機能するので、別のサービス/デーモンに同じlb /フェイルオーバーを使用したいと思います。 私はこのようにhaproxyを設定しました: listen my_service 0.0.0.0:4567 mode tcp balance leastconn option tcpka contimeout 500000 clitimeout 500000 srvtimeout 500000 server host1 xxx.xxx.xxx.xx1:4567 check port 4567 inter 5000 rise 3 fall 3 server host2 xxx.xxx.xxx.xx2:4567 check port 4567 inter 5000 rise 3 fall 3 ロードバランシングは正常に機能しますが、サービスはクライアントの実際のIPではなくロードバランサーのIPを認識します。httpモードでは、リモートIPに沿ってhaproxyを渡すのは非常に簡単ですが、tcpモードではどうすればよいですか?これは、負荷分散する必要のあるサービスの性質上重要です。 ありがとう!ヴィート

4
EC2とRackspace間の外部ロードバランサーソリューション
バックエンド(MySql)がRackspaceストアに非同期でレプリケートされ、主にEC2でホストされているWebサイトがあります。また、Amazonが停止した場合に備えて、Rackspaceで一連のWebサーバー、キャッシュ、データベースをスタンバイ状態にする予定です。 これは見通しですが、可用性に応じてEC2とRackspaceを切り替えることができるソリューションはありますか?

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