2017-11-26 17 views
0

異なるパスの要求を異なるバックエンドに転送するようにHAProxyを構成する必要があります。だから私はthis questionに出くわしました。そこに提供されている解決策はうまくいきますが、私たちの慣習により、frontenduse_backendの代わりにlistenuse-serverを使用する必要があります。HAProxy - ロードバランシングを使用したURLベースのルーティング - リスニングおよび使用サーバーを使用

だから今、私はこのようなものがあります:

listen poq [url]:[port] 
    acl has_cool_url path_beg -i /cool 
    use-server cool if has_cool_url 
    server cool [ip]:[port] check 
    server default [ip]:[port] check 

をそして私はこれを使用することはできません。

listen poq [url]:[port] 
    acl has_cool_url path_beg -i /cool 
    use_backend cool if has_cool_url 
    use_backend notcool if !has_cool_url 

backend cool 
    balance roundrobin 
    server first [ip]:[port] check 
    server second [ip]:[port] check 

backend notcool 
    server third [ip]:[port] check 

を私達の規則はlistenブロック内のすべてのものを定義することを教えているので。

だから私の質問は:firstsecondは、負荷分散ラウンドロビンを使用している

listen poq [url]:[port] 
    acl has_cool_url path_beg -i /cool 
    use-server {first, second} if has_cool_url 
    server first [ip]:[port] check 
    server second [ip]:[port] check 
    server default [ip]:[port] check 

:このようなものはありますか?

答えて

0

あなたの規約は任意であり、機能を制限しています。ブロックlistenは、同じ名前のブロックfrontendbackendと機能的に似ていますが、フロントエンドからバックエンドを指す暗黙のdefault_backendです。 listenブロックは、単純な構成に使用することを意図しています。

バックエンドのポイントは、バックエンドのすべてのサーバーが同じサービスを提供することです。 use-serverでは、サーバーを1つだけ選択できます。

あなたがlistenで行うことができますのみ事は、個別にアドレス指定可能な使用条件の一致をサーバに加え、1台の以上の個々のサーバーの単一のデフォルトセットをバランスですが、彼らはバランスすることができません。

listen poq [url]:[port] 
    acl has_warm_url path_beg -i /warm 
    use-server warm-server if has_warm_url 
    acl has_hot_url path_beg -i /hot 
    use-server hot-server if has_hot_url 
    server warm-server [ip]:[port] check weight 0 
    server hot-server [ip]:[port] check weight 0 
    server default1 [ip]:[port] check 
    server default2 [ip]:[port] check 

この構成では、/ warmはウォームサーバーに、/ hotはホットサーバーに移動します。これらの2つのサーバーは、他の要求を処理できないように重み付けされています。

他のすべては、default1とdefault2の間でバランスが取れています。

これは、上記のようにあなたは、HAProxyは唯一のバックエンドごとに均衡の1セットを行いますので、listenであり、すべての柔軟性、listenセクションでは、frontendbackendのマッチしたセットの機能の暗黙の組み合わせです。

+0

あなたが提供したソリューションは、私の目的のために完璧に機能します。ありがとうございます。私は規約が恣意的であることに同意します! – ezer1337

関連する問題