この記事は主に nigx 負荷分散アルゴリズムを共有し、皆様のお役に立てることを願っています。
1. Nginx 負荷分散アルゴリズム
1. ポーリング (デフォルト)
各リクエストは、時系列に 1 つずつ異なるバックエンド サービスに割り当てられます。バックエンド サーバーがクラッシュした場合、障害のあるシステムは自動的に排除されます。ユーザーにアクセスを許可する 影響を受けません。
2. Weight (ポーリングウェイト)
Weight の値が大きいほど、より高いアクセス確率が割り当てられます。主にバックエンドの各サーバーのパフォーマンスがアンバランスな場合に使用されます。または、マスター/スレーブの状況で異なる重みを設定するだけで、ホスト リソースの合理的かつ効果的な利用を実現できます。
3. ip_hash 送信元アドレス ハッシュ法
送信元アドレス ハッシュの考え方は、クライアントの IP アドレスに基づいてハッシュ関数を通じて計算された値を取得し、この値を使用してサイズのモジュロ演算を実行することです。サーバーのリストを取得し、その結果、クライアントがサーバーにアクセスしたいシリアル番号が得られます。送信元アドレス ハッシュ方式は、バックエンド サーバーのリストが変更されない限り、同じ IP アドレスを持つクライアントが毎回アクセスするために同じバックエンド サーバーにマップされます。
4. Fair
Weight や ip_hash よりもインテリジェントな負荷分散アルゴリズム。Fair アルゴリズムは、ページ サイズと読み込み時間に基づいて負荷分散をインテリジェントに実行できます。つまり、バックエンド サーバーの応答時間に基づいてリクエストを割り当てます。 、応答時間の短い優先割り当てを使用します。 Nginx 自体はフェアをサポートしていません。このスケジューリング アルゴリズムが必要な場合は、upstream_fair モジュールをインストールする必要があります。
5. url_hash
アクセスされた URL のハッシュ結果に応じてリクエストを割り当て、各 URL がバックエンド サーバーに振り分けられるようにすることで、バックエンド キャッシュ サーバーの効率をさらに向上させることができます。 Nginx 自体は url_hash をサポートしていません。このスケジューリング アルゴリズムが必要な場合は、Nginx ハッシュ ソフトウェア パッケージをインストールする必要があります。
1. ポーリング (デフォルト)
各リクエストは時系列に 1 つずつ異なるバックエンド サーバーに割り当てられ、バックエンド サーバーがダウンした場合は自動的に削除されます。
2. Weight
は、ポーリング確率を指定します。重みは、アクセス率に比例し、バックエンド サーバーのパフォーマンスが不均一な場合に使用されます。
例:
upstream bakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; }
3. ip_hash
各リクエストは、アクセスされた IP のハッシュ結果に従って割り当てられるため、各訪問者はバックエンド サーバーに固定的にアクセスでき、セッションの問題を解決できます。
例:
upstream bakend { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; }
4. フェア(サードパーティ)
バックエンドサーバーの応答時間に応じてリクエストを割り当て、応答時間の短いリクエストが最初に割り当てられます。
upstream backend { server server1; server server2; fair; }
5. url_hash (サードパーティ)
アクセスされた URL のハッシュ結果に従ってリクエストを分散し、各 URL が同じバックエンド サーバーに送られるようにします。バックエンド サーバーがキャッシュされている場合、より効果的です。 。
例: アップストリームにハッシュステートメントを追加します。サーバーステートメントに重みなどの他のパラメータを記述することはできません。 hash_method は使用されるハッシュアルゴリズムです
upstream backend { server squid1:3128; // 10.0.0.10:7777 server squid2:3128; //10.0.0.11:8888 hash $request_uri; hash_method crc32; }
2. Nginx のロードバランシングのスケジューリングステータス
Nginx アップストリームモジュールで、次の設定を行うことができます各ロード バランシング スケジュールにおけるバックエンド サーバーのステータス。一般的に使用されるステータスは次のとおりです。
1. ダウン、現在のサーバーが当面ロード バランシングに参加しないことを示します。 2. バックアップ、予約されたバックアップ マシン。他のすべての非バックアップ マシンが失敗するかビジー状態になると、バックアップ マシンが要求されるため、このマシンのアクセス プレッシャーは最も低くなります
3. max_fails (許可されるリクエスト失敗の数) は、最大数が上限に達した場合、デフォルトで 1 に設定されます。を超えると、proxy_next_upstream モジュールによって定義されたエラーが返されます。
4.fail_timeout、リクエスト失敗タイムアウト、max_fails 回の失敗後にサービスを一時停止する時間。 max_fails とfail_timeout は一緒に使用できます。
もし Nginx が 1 つのサーバーのみをプロキシできなければ、Nginx は、1 つのサーバーがダウンしても、システムを引き続き利用できるように構成できます。具体的な構成プロセスは次のとおりです:
1. http ノードの下にアップストリーム ノードを追加します。
upstream linuxidc { server 10.0.6.108:7080; server 10.0.0.85:8980; }
2. 将server节点下的location节点中的proxy_pass配置为:http:// + upstream名称,即“
http://linuxidc”.
location / { root html; index index.html index.htm; proxy_pass http://linuxidc; }
3. 现在负载均衡初步完成了。upstream按照轮询(默认)方式进行负载,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。虽然这种方式简便、成本低廉。但缺点是:可靠性低和负载分配不均衡。适用于图片服务器集群和纯静态页面服务器集群。
除此之外,upstream还有其它的分配策略,分别如下:
weight(权重)
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。如下所示,10.0.0.88的访问比率要比10.0.0.77的访问比率高一倍。
upstream linuxidc{ server 10.0.0.77 weight=5; server 10.0.0.88 weight=10; }
ip_hash(访问ip)
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream favresin{ ip_hash; server 10.0.0.10:8080; server 10.0.0.11:8080; }
fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。
upstream favresin{ server 10.0.0.10:8080; server 10.0.0.11:8080; fair; }
url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法。
upstream resinserver{ server 10.0.0.10:7777; server 10.0.0.11:8888; hash $request_uri; hash_method crc32; }
upstream还可以为每个设备设置状态值,这些状态值的含义分别如下:
down 表示单前的server暂时不参与负载.
weight 默认为1.weight越大,负载的权重就越大。
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误.
fail_timeout : max_fails次失败后,暂停的时间。
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
upstream bakend{ #定义负载均衡设备的Ip及设备状态
ip_hash; server 10.0.0.11:9090 down; server 10.0.0.11:8080 weight=2; server 10.0.0.11:6060; server 10.0.0.11:7070 backup; }
相关推荐:
以上がnigx ロード バランシング アルゴリズムの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。