HAProxy ACL - Бэкэнд-разрешение - PullRequest
0 голосов
/ 02 июня 2019

Учитывая эту конфигурацию HAProxy:

    acl acl-api-qa hdr(host) -i qa.example.com
      use_backend backend-api-qa if acl-api-qa
    backend backend-api-qa
      mode http
      balance leastconn
      server-template api 10 _api._env=qa.service.consul resolvers consul resolve-prefer ipv4 check


    acl acl-api-test hdr(host) -i test.example.com
      use_backend backend-api-test if acl-api-test
    backend backend-api-test
      mode http
      balance leastconn
      server-template api 10 _api._env=test.service.consul resolvers consul resolve-prefer ipv4 check

Трафик направляется только на qa.example.com, но test.example.com является сервисом 503: недоступен, поскольку HAProxy, кажется, закорачивается, когда встречается с первым бэкэндом и игнорирует следующий набор ACls и бэкэндов. Это проблема заказа? я не могу переплетать ACL и бэкэнды? Должны ли они быть построены как раздел ACL, за которым следует раздел Backends?

1 Ответ

0 голосов
/ 02 июня 2019

что, похоже, имеет место? Это сработало для меня:

    acl acl-api-test hdr(host) -i test.example.com
    acl acl-api-qa hdr(host) -i qa.example.com


    use_backend backend-api-test if acl-api-test
    use_backend backend-api-qa if acl-api-qa


    backend backend-api-test
      mode http
      balance leastconn
      server-template api 10 _api._env=test.service.consul resolvers consul resolve-prefer ipv4 check

    backend backend-api-qa
      mode http
      balance leastconn
      server-template api 10 _api._env=qa.service.consul resolvers consul resolve-prefer ipv4 check

, но в моем шаблоне консула довольно много дублированного кода. ожидает ли HAProxy сгруппировать acl, use-backend и backend в отдельные группы?

...