有没有办法configurationHAProxy发送基于cookie的stream量?

在configurationHAProxy时,我想根据存在的cookie将stream量发送到某些服务器。

例如:

  1. 有一个HAProxy服务器和2个Web服务器(serverA和serverB)。
  2. 当有人login时,会创build一个cookie“loginCreds = user:company”。
  3. 当来自CompanyA的John进来时,他的cookie是“loginCreds = John:CompanyA”。
  4. 他的stream量将被引导到serverA。

这是可能的,如果是的话,你如何设置它?

    是的,这是可能的,但你需要自己调整/testing这个configuration。 它应该看起来像这样:

    注意 :这只会检查“Cookie:”标题是否设置为“CompanyA”或“CompanyB”,区分大小写。 你可以玩弄值,如果你用正则expression式,你可以使用hdr_reg(Cookie)来代替。

    frontend read_cookies bind :80 mode http acl is_companya hdr(Cookie) CompanyA acl is_companyb hdr(Cookie) CompanyB use_backend company_a if is_companya use_backend company_b if is_companyb default_backend company_c backend company_a mode http option forwardfor balance source option httpclose option httpchk server web1 172.16.0.11:80 check backend company_b mode http option forwardfor balance source option httpclose option httpchk server web2 172.16.0.12:80 check backend company_c mode http option forwardfor balance source option httpclose option httpchk server web3 172.16.0.13:80 check 

    Hmn,这是一个非典型的要求。 我想你可以用HAProxy中的“appsession”命令做这样的事情,但我不知道它的确切algorithm。 我的猜测是你必须问HAProxy列表,或看看HAProxy的源代码。

    你能不能比cookies更“富有”? 例如,创build主机名“premium.company.com”和“standard.company.com”,并根据主机名路由stream量。

    另一个想法可能是学习如何HAProxy的粘性会话自己的cookie被格式化(请参阅文档中的“cookie”部分)。 如果你设置一个与HAProxy使用自己完全相同的名称和内部数据的cookie,那么我猜测HAProxy会根据你的需要路由传入的请求。