Haproxy

配置 HA 代理以允許某些應用程序伺服器的某些請求

  • January 3, 2017

我有一個 HaProxy 設置,其中每個 haproxy 伺服器將流量路由到多個應用程序伺服器。正常 http 流量的路由基於請求 url 的雜湊值。

現在我想創建一些規則以允許將某些管理請求路由到特定的應用程序伺服器。那就是我有應用程序伺服器“node06 - node15”。我希望能夠請求 node06.mydomain.com/my-admin-request 並將其路由到正確的應用程序伺服器。

我不能通過 dns 做到這一點。所有請求都通過一個公開的 IP 地址進入集群。

所以我做了一個 haproxy 配置來做我想要的:

frontend www-http
      bind :80
      reqadd X-Forwarded-Proto:\ http

      acl node06 hdr_beg(host) -i node06.
      use_backend node06-status if node06

      acl node07 hdr_beg(host) -i node07.
      use_backend node07-status if node07

      # ... and many more such nodes ...

      default_backend application-backend


      # This is the application back end. 
      # Route request based on hash of url
backend application-backend
      balance url_param url check_post

      server node06 192.168.1.70:80 check
      server node07 192.168.1.71:80 check

      # ... and many more such nodes ...

      # these are the status back ends. This is so we can make requests
      # direct to each node for the status console.
backend node06-status
      server node06 192.168.1.70:80

backend node07-status
      server node07 192.168.1.71:80

      # ... and many more such back ends ...

這會奏效(我認為),但它真的很羅嗦。我必須為集群中的每個應用程序伺服器創建三次相同的配置塊。如果我將其擴展到 10 個以上的節點,它將變得難以管理。

有沒有辦法配置它,這樣我就不必為每個應用程序伺服器分開配置行?

您可以將 ACL 和 use-server(而不是 use-backend)放在後端定義中。另外,我認為您可能能夠使用內聯 ACL,而不必在使用前定義它們。

引用自:https://serverfault.com/questions/823817