2016-05-25 13 views
0

私は複数のIPが設定されたサーバをeth0の仮想IPとして持っています。私はロードバレーシングのためにHaproxyを使用しています。各IPは異なるドメイン名に設定/ポイントされており、各IPアドレスに付随するすべての要求は、haproxyを使用して異なるバックエンドサーバーに転送されます。バックエンドのソースIPとしてfrontend_ipを設定しました

ここで、haproxyからのすべての発信トラフィックは、メインインターフェイスIP [デフォルトでは]を通過します。バックエンド接続用にソースIPを設定したかっただけです。

以下の設定を試しましたが、動作しません。何か案が ?私は確かに言うことはできませんので

backend web1 
     server ss2 10.11.12.13:80 source ${frontend_ip} 

frontend new1 
     bind 10.11.13.15:8080 
     mode tcp 
     use_backend web1 
+0

*あなたは*動作していないと言うときにあなたのhaproxy.logを投稿してください。 –

+0

わからない、haproxy.logから確認できるものとにかくこれは私のサンプルログです "[5738] [1464157677.783] 0/0/0/0/0/0/0/1/0 // 20664 ---- 10.11.13.155:58246 10.11.13.15:8080 10.11.12.13 :80 new1 - - 0 web1:ss2 "" "" "" "req_size = 0 resp_size = 0" – KMG

答えて

1

あなただけのあなたの質問に1 IPを持っています。しかし、複数の仮想IPを持ち、異なるバックエンドにサービスを提供したい場合は、それぞれ少なくともfrontendを作成する必要があります。このように:

frontend new1 
    bind 10.11.13.15:80 
    ... 
    acl is_new1domain hdr(host) -i new1.domain.com 
    use_backend web1 if is_new1domain 

frontend new2 
    bind 10.11.13.16:80 
    ... 
    acl is_new2domain hdr(host) -i new2.domain.com 
    use_backend web2 if is_new2domain 

backend web1 
    ... 
    source 10.124.13.15 

backend web2 
    ... 
    source 10.124.13.16 

実際に、解析する他のルールがない場合は、レイヤ4を使用してプロキシ/バランスをとるだけです。このように:

listen new1 
    bind 10.11.12.15:80 
    server ss1 10.11.12.90:8080 check 
    server ss2 10.11.12.91:8080 check 
    server ss3 10.11.12.92:8080 check 
    source 10.124.12.15 

listen new2 
    bind 10.11.12.16:80 
    server ss4 10.11.12.80:8080 check 
    server ss5 10.11.12.81:8080 check 
    server ss6 10.11.12.82:8080 check 
    source 10.124.12.16 
関連する問題