Web 負荷分散 (ロード バランシング) は、簡単に言えば、「作業タスク」をサーバー クラスターに割り当てることであり、適切な割り当て方法を使用することは、バックエンド Web サーバーを保護するために非常に重要です。
リバース プロキシの負荷分散
リバース プロキシ サービスの中核となる作業は、主に HTTP リクエストを転送することであり、次の役割を果たします。ブラウザーとバックエンド Web サーバーのリレーの役割。 7層のネットワーク構造の7層目であるHTTP層(アプリケーション層)で動作するため、「7層負荷分散」とも呼ばれます。リバース プロキシとして使用できるソフトウェアは数多くありますが、最も一般的なものの 1 つは Nginx です。
Nginx は、転送戦略を自由にカスタマイズしたり、サーバー トラフィックの重みを割り当てたりできる、非常に柔軟なリバース プロキシ ソフトウェアです。リバース プロキシでは、一般的な負荷分散戦略ではリクエストがランダムに割り当てられるため、一般的な問題は Web サーバーによって保存されるセッション データです。同じログインユーザーからのリクエストが同じ Web マシンに割り当てられる保証はなく、セッションが見つからないという問題が発生します。
主な解決策は 2 つあります。
同じユーザーからのリクエストが同じマシンに送られるように、リバース プロキシの転送ルールを構成します (Cookie を分析することによって)。 、複雑な転送ルールはより多くの CPU を消費し、プロキシ サーバーの負荷が増加します。
セッションなどの情報を保存するには、redis/memchache などの独立したサービスを使用することをお勧めします。
リバース プロキシ サービスではキャッシュを有効にすることもできます。有効にすると、リバース プロキシの負荷が増大するため、使用には注意が必要です。この負荷分散戦略は実装と展開が非常に簡単で、パフォーマンスも比較的良好です。ただし、「単一障害点」という問題があり、ハングすると大変なことになります。また、後段では Web サーバの数が増加し続けるため、Web サーバ自体がシステムのボトルネックになる可能性があります。
設定ファイルのサンプル:
#user nobody; worker_processes 1; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream www.hcoder.net { server 192.168.1.188:80 weight=5; server 192.168.1.158:80; } server { listen 80; server_name www.hcoder.net; location / { proxy_pass http://www.hcoder.net; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
以上がウェブサイト負荷分散ソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。