方法 1: 負荷分散の重みを調整する
負荷分散は既存のネットワーク構造上に構築され、ネットワーク機器とサーバーを拡張するための安価で効果的かつ透過的な方法を提供します。帯域幅を増やし、スループットを向上させ、ネットワーク データ処理機能を強化し、ネットワークの柔軟性と可用性を向上させます。
ロード バランシング (英語名は Load Balance) は、Web サーバー、FTP サーバー、エンタープライズ キー アプリケーション サーバー、その他のミッションクリティカルなサーバーなどの複数のオペレーティング ユニットに実行を割り当てることを意味します。仕事のタスクを一緒に完了するために。
簡単な構成は次のとおりです:
http { upstream cluster { ip_hash; #如果你的系统中没有使用第三方缓存管理工具 ,建议使用此方式 server 192.168.1.210:80 weight=5; server 192.168.1.211:80 weight=3; server 192.168.1.212:80 weight=1; } server { listen 80; location / { proxy_next_upstream error timeout; proxy_redirect off; proxy_set_header host $host; #proxy_set_header x-real-ip $remote_addr; proxy_set_header x-real-ip $http_x_forwarded_for; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; client_max_body_size 100m; client_body_buffer_size 256k; proxy_connect_timeout 180; proxy_send_timeout 180; proxy_read_timeout 180; proxy_buffer_size 8k; proxy_buffers 8 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; proxy_pass http://cluster; } } }
このグレースケール パブリッシュ方法は重み付けによって実装されますが、この方法は動作を変更する場合にのみ適しています。アプリケーションはすべてまったく同じであり、その基本的な機能はノードの追加または削除後に負荷容量を調整することであり、最終的な目標はトラフィックのバランスを保つことです。
方法 2. nginx lua を使用して Web プロジェクトのグレースケール公開を実装する
location / { content_by_lua ' myip = ngx.req.get_headers()["x-real-ip"] if myip == nil then myip = ngx.req.get_headers()["x_forwarded_for"] end if myip == nil then myip = ngx.var.remote_addr end if myip == "公司出口ip" then ngx.exec("@client") else ngx.exec("@client_test") end '; } location @client{ proxy_next_upstream error timeout; proxy_redirect off; proxy_set_header host $host; #proxy_set_header x-real-ip $remote_addr; proxy_set_header x-real-ip $http_x_forwarded_for; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; client_max_body_size 100m; client_body_buffer_size 256k; proxy_connect_timeout 180; proxy_send_timeout 180; proxy_read_timeout 180; proxy_buffer_size 8k; proxy_buffers 8 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; proxy_pass http://client; } location @client_test{ proxy_next_upstream error timeout; proxy_redirect off; proxy_set_header host $host; #proxy_set_header x-real-ip $remote_addr; proxy_set_header x-real-ip $http_x_forwarded_for; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; client_max_body_size 100m; client_body_buffer_size 256k; proxy_connect_timeout 180; proxy_send_timeout 180; proxy_read_timeout 180; proxy_buffer_size 8k; proxy_buffers 8 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; proxy_pass http://client_test; }
nginx lua モジュールを使用するため、この方法は多くのシナリオに適しており、非常に強力ですが、問題は、Lua の構文を多く学習する必要があるかもしれないということです。
方法 3. http ヘッダー情報を使用して重み (グレースケール値) を決定します。
http リクエストの送信プロセス中に、ユーザー エージェント、ホスト、リファラーは自動的に含まれる Cookie およびその他の情報。 IP アドレス セグメント、ユーザー エージェント、Cookie 内の情報などを判断するだけで済みます。ここでは Cookie を例として取り上げます。
もちろん、ここでは 2 つの問題を解決する必要があります:
①静的ページへの最初の訪問では Cookie が生成されない可能性がある
②コードを通じてルートを動的に設定する必要がある
③重みによるグレー値の制御
##例を使用して、上記の②と③の問題を解決できます。upstream tts_v6 { server 192.168.3.81:5280 max_fails=1 fail_timeout=60; } upstream tts_v7 { server 192.168.3.81:5380 max_fails=1 fail_timeout=60; } upstream default { #通过upstream default + weight节点控制权重 server 192.168.3.81:5280 max_fails=1 fail_timeout=60 weight=5; server 192.168.3.81:5380 max_fails=1 fail_timeout=60 weight=1; } server { listen 80; server_name test.taotaosou.com; access_log logs/test.taotaosou.com.log main buffer=32k; #match cookie set $group "default"; if ($http_cookie ~* "tts_version_id=tts1"){ #动态控制路由 set $group tts_v6; } if ($http_cookie ~* "tts_version_id=tts2"){ set $group tts_v7; } location / { proxy_pass http://$group; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; index index.html index.htm; } }
<script src="https://test.taotaosou.com/cookieinfo.php" /><script>
<?php if(!session_id()) { session_start(); } if(!isset($_cookie["tts_version_id"])) { $cookievalue = $_server['server_port']==5280?"tts1":"tts2"; setcookie("tts_version_id", $cookievalue, time()+3600, "/"); } ?>
以上がNginx がグレースケール パブリッシングを実装するにはどのような方法がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。