それのいくつかを持って負荷分散を達成するnginxの道?

負荷分散とは何ですか

サーバー時間の交通単位大きい場合は、サーバーは、自分の能力を超えるのに十分な大きさの圧力、大きい、サーバがクラッシュします。ユーザーがより良い経験を持ってできるように、サーバーのクラッシュを避けるために、我々は道によって、サーバの負荷分散の圧力を共有する必要があります。

我々は、多くのを構築することができ、ユーザーがサイトを訪れたとき、多くのサーバーでは、サーバークラスタ内の小さい方のサーバーの圧力は、その後、アクセス要求をサーバに導入されるように、途中でサーバーを選択し、中間サーバにアクセスするために、サーバークラスタを形成します。各ユーザのアクセス以来だから、サーバー上の圧力を共有するために、サーバークラスタの圧力内の各サーバはバランスをとる傾向があることを保証します、サーバがクラッシュを避けるために。

 

ロードバランシングは、リバースプロキシの実装の原理を用いています。

いくつかの一般的な方法をロードバランシング

図1に示すように、ポーリング(デフォルト)各リクエストに個別時系列割り当てられたバックエンドサーバがダウンした場合に異なるバックエンドサーバーには、自動的に削除することができます。 

upstream backserver {
    server 192.168.0.14;
    server 192.168.0.15;
}

 

2、重量 
確率アクセスの重量比に比例して、バックエンドサーバムラパフォーマンスのポーリング 
状況。

upstream backserver {
    server 192.168.0.14 weight=3;
    server 192.168.0.15 weight=7;
}

 

上記の例で、それぞれ30%、70%、でアクセスされる確率も大きく、重量が高いです。

 

ときの負荷分散システムのユーザーがサーバーに記録されている場合3、上記記載されている問題は、ユーザーの要求二回目は、私たちが負荷分散システムであるため、すべての要求をに再配置されます、、、、ありクラスタ内の1台のサーバは、その後、サーバは一人のユーザーを記録し、その後、別のサーバーに移転した、自分のログイン情報が失われます、これは明らかに不適切です。

我々は、顧客が、サーバーを訪問したユーザーが再びアクセスしたときに、要求が自動的にサーバを見つけるために、ハッシュアルゴリズムを介して行われている場合、この問題を解決するための手順をip_hash使用することができます。

各訪問者は、一定のバックエンドサーバーにアクセスするには、セッションの問題を解決できるように、各要求は、訪問のIPハッシュ結果に従って割り当てられています。

upstream backserver {
    ip_hash;
    server 192.168.0.14:88;
    server 192.168.0.15:80;
}

 

4、フェア(サードパーティ) 
バックエンドサーバへの割り当て要求の応答時間によって、短い応答時間優先割り当て。

upstream backserver {
    server server1;
    server server2;
    fair;
}

 

5、url_hash(第三者) 
場合、キャッシュURL割り当て要求、同じバックエンドサーバに向け各URLにアクセスするためのハッシュ結果によって、バックエンドサーバが有効です。

upstream backserver {
    server squid1:3128;
    server squid2:3128;
    hash $request_uri;
    hash_method crc32;
}

 

各デバイスのステータスがに設定されています:

単一のサーバの負荷に参加しないという前1.down表現2.weightのデフォルトは、重量の負荷も大きく、大きい1.weight。3 :最大数を超えた場合、1に失敗した要求のデフォルトの数を可能にする返すモジュール定義のエラー4. 失敗し、休止時間後。5.backup:他のすべてのバックアップマシンダウンまたは非忙しい時間は、バックアップ・マシンを要求します。だから、このマシンは軽い圧力になります。 
 
max_failsproxy_next_upstream 
fail_timeout:max_fails 

インスタンス:

#user  nobody;
worker_processes  4;
events {
    # 最大并发数
    worker_connections  1024;
}
http{
    # 待选服务器列表
    upstream myproject{
        # ip_hash指令,将同一用户引入同一服务器。
        ip_hash;
        server 125.219.42.4 fail_timeout=60s;
        server 172.31.2.183;
        }

    server{
                # 监听端口
                listen 80;
                # 根目录下
                location / {
                    # 选择哪个服务器列表
                    proxy_pass http://myproject;
                }

            }
}

おすすめ

転載: www.cnblogs.com/kinwing/p/11130281.html