web-dev-qa-db-ja.com

URLリクエストのバランスのためのHaproxyACL

私はhaproxy1.4.13バージョンのUbuntuを使用しています。

2つのサブドメインの負荷分散:

  • app1.domain.com
  • app2.domain.com

ここで、ACLを使用してrl requestに基づいて右側のバックエンドに送信できるようにします。例:

http://app1.domain.com/path/games/index.php  sould be send to backend1
http://app1.domain.com/path/photos/index.php should be send to backend2

http://app2.domain.com/path/mail/index.php  sould be send to backend3
http://app2.domain.com/path/wazap/index.php should be send to backend4

私は次のACLのコードを使用しました

frontend http-farm
        bind 0.0.0.0:80
        acl app1web     hdr_beg(Host) -i app1  # for http://app1.domain.com
        acl app2web     hdr_beg(Host) -i app2  # for http://app2.domain.com

acl msg-url-1 url_reg ^\/path/games/.*
acl msg-url-2 url_reg ^\/path/photos/.*
acl msg-url-3 url_reg ^\/path/mail/.*
acl msg-url-4 url_reg ^\/path/wazap/.*

use_backend games  if  msg-url-1 app1web
use_backend photos if  msg-url-2 app2web
use_backend mail if .....



backend games
        option httpchk GET /alive.php HTTP/1.1\r\nHost:\ app1.domain.com
        option  forwardfor
        balance roundrobin
        server  appsrv-1  192.168.1.10:80  check inter 2000 fall 3
        server  appsrv-2  192.168.1.11:80  check inter 2000 fall 3

backend photos
        option httpchk GET /alive.php HTTP/1.1\r\nHost:\ app2.domain.com
        option  forwardfor
        balance roundrobin
        server  appsrv-1  192.168.1.13:80  check inter 2000 fall 3
        server  appsrv-2  192.168.1.14:80  check inter 2000 fall 3

..。

パスメール、写真などはiisのアプリケーションプールになるので、それらが生きているかどうかを監視したいのですが、プールが応答しない場合は、サービスを停止する必要があります。

私の問題は確かにACLの正規表現にありますacl msg-url-4 url​​_reg ^/path/wazap /.*

ACLを機能させるには、ACLで何を変更する必要がありますか?

ヒントをありがとう

1
Elgreco08

それが実際の問題であるかどうかはわかりませんが、HAProxyの正規表現でスラッシュをエスケープする必要はありません。また、あなたが述べたケースでは、正規表現さえ必要ありませんが、単純な文字列マッチャーを使用できます。それらは正規表現よりもはるかに高速です。したがって、ACLは次のようになります。

acl msg-url-3 url_beg /path/mail/
acl msg-url-4 url_beg /path/wazap/

ディスパッチされたバックエンドで使用可能なサーバーがない場合、HAProxyはHTTP 503応答を返します。 errorlocまたはerrorfileを使用して応答をカスタマイズできます。

しかし、私があなたの問題を少し誤解した可能性があります。何が期待どおりに機能していないのかは明確ではありません。

6
Holger Just