HAProxyを使用してホスト名に基づいてトラフィックを迂回させる方法は?


17

HAProxyが他のさまざまなポートでリッスンするアプリサーバーのセットをセットアップすることで、最初の成功を収めました。

現在、1つのポートでリッスンしている別のWebサーバーがあり、ホスト名ごとにトラフィックを流すために構成にどのような変更を加えるかを考えています。

以下は、現在のセットアップです。

  • 私のApache Webサーバーはexamplecom:8001で実行されています
  • 私のアプリサーバーの束0.0.0.0:8081、0.0.0.0:8082、0.0.0.0:8083
global
  log 127.0.0.1 local0
  log 127.0.0.1 local1 notice
  maxconn 4096
  debug
  #quiet
  #user haproxy
  #group haproxy

defaults
  log global
  mode  http
  option  httplog
  option  dontlognull
  retries 3
  redispatch
  maxconn 2000
  contimeout  5000
  clitimeout  50000
  srvtimeout  50000

listen appservers 0.0.0.0:80
  mode http
  balance roundrobin
  option httpclose
  option forwardfor
  #option httpchk HEAD /check.txt HTTP/1.0
  server  inst1 0.0.0.0:8081 cookie server01 check inter 2000 fall  3
  server  inst2 0.0.0.0:8082 cookie server02 check inter 2000 fall  3
  server  inst3 0.0.0.0:8083 cookie server01 check inter 2000 fall  3
  server  inst4 0.0.0.0:8084 cookie server02 check inter 2000 fall  3
  capture cookie vgnvisitor= len 32

(^セットアップに関する他のコメントは歓迎します。)

ここで、上記と同じことを続けたいのですが、さらに、ホスト名がmyspecialtopleveldomain <dot> comの場合、example <dot> com:8001にトラフィックを流したいと思います。

〜B


2
フロントエンドとバックエンドの設定を使用して、ホスト名に基づいて異なるサーバーにリクエストを送信することが可能です。あなたの質問は少しわかりにくいですが、あなたはexample.com:8001に言及していますが、それはどこの設定にもありません。ポート80でmyspecialtopleveldomain.comへのリクエストの宛先ですか?おそらく、ユーザーが入力するいくつかのサンプルURLと、それらのURLをhaproxyで送信する場所を指定できます。
ThatGraemeGuy

回答:


24

以下に例を示します。

frontend http
        bind 0.0.0.0:80
        default_backend www
        # NAT static host names and static paths in other hostnames to a different backend
        acl host_static hdr_beg(host) -i static.
        acl url_static  path_beg         /static
        use_backend static if host_static or url_static

backend www
        balance roundrobin
        server  qa1 10.177.1.81:80
        server  qa2 10.177.1.45:80

backend static
        balance roundrobin
        server  media1 10.177.0.86:80

サンプル構成のおかげで、ロードバランサーの構成の最終決定を手伝ってくれました:)
isNaN1247
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.