2016-09-26 5 views
0

私は、F5ロードバランサと2つのアプリケーションサーバー(Apache httpd)の間の中間層に、2つのVarnishサーバーを持っています。私は、ワニスが2つのApacheサーバーの間で負荷を多かれ少なかれ均等に分割したいと思っています。ここで私が使用しているコンフィギュレーションの重要なビットです:クライアントを識別する - より均等に負荷を分割する方法は?

backend prod1 { 
    .host = "172.16.1.1"; 
    .port = "80"; 
} 

backend prod2 { 
    .host = "172.16.2.1"; 
    .port = "80"; 
} 

director wpprod client { 
    { .backend = "prod1"; .weight = 1; } 
    { .backend = "prod2"; .weight = 1; } 
} 

sub vcl_recv { 
    set client.identity = req.http.user-agent; 
    set req.backend = wpprod; 
} 
意図は、セッション中に変更しないでくださいヘッダーを取ることが、半ランダムであるべきである

(クライアントのユーザーエージェント:ヘッダ) 2つのバックエンドサーバー間で負荷を分散するために使用します。

残念ながら、実際には、負荷は約70-30に分割されています。一方のバックエンドはもう一方のトラフィックと比べて約2倍のトラフィックがあります。

また、私のF5がclient.identityとして追加しているが、同じ問題があったX-Forwarded-For:ヘッダを使ってみました。

負荷を均等にしようとするにはちょっとだけ微調整することができますが、それは実際にはスケーラブルではなく、複数のサーバーで実行可能ではありません。

私が使用できるヘッダーに関する提案は、トラフィックの均等分割を招くでしょうか?

+0

これは最終的にワニスの問題ではないことが判明しました。私たちのネットワークのどこかで、暴走する検索エンジン/スパイダーがこれらのサーバーを叩いていました。それはすべてのトラフィックの約40%で、送信されたすべてのリクエストに同じUser-Agentがあるため、この問題を修正すると約50-50のバランスが回復しました。ワニスサーバがロードバランサの背後にあるので、 –

答えて

0

ワニス3.xを使用していて、ここで何らかの粘着性が必要であると仮定した場合(そうでなければランダムまたはラウンドロビンディレクターかもしれません)、client.identityclient.ipを入力するか、

... 

sub vcl_recv { 
    cookie.parse(req.http.Cookie); 

    unset req.http.X-Group; 
    if (cookie.get("group")) { 
     set client.identity = cookie.get("group"); 
    } else { 
     set req.http.X-Group = std.random(1, 1000); 
     set client.identity = req.http.X-Group; 
    } 

    set req.backend = wpprod; 
} 

sub vcl_deliver { 
    if (req.http.X-Group) { 
     header.append(
      resp.http.Set-Cookie, 
      "group=" + req.http.X-Group + "; domain=.example.com; path=/; expires=" + cookie.format_rfc1123(now, 365d)); 
    } 
} 
+0

client.ipは機能しません。 (したがって、すべてのリクエストは同じIPから来ているように見えます)そして、X-Forwarded-Forを使ってみましたが、同じ問題(ワニスサーバ間で約2:1の分割)がありました。 –

+0

「あなた自身のクッキーを追加する」アイデアは確かにメリットがありますが、コードが多いため、もっと多くのことが書かれているかもしれません。負荷を分割する方が良い "ネイティブ"な方法があれば、それが望ましいと思います。つまり、テスト環境でこれを実装して、より均等にトラフィックを分割するかどうかを確かめることになります。 –

関連する問題