Назад | Перейти на главную страницу

Принудительное использование определенного подмножества бэкэндов в haproxy

Я настраиваю haproxy для использования нескольких внутренних серверов, но хочу, чтобы один из них обрабатывал определенные запросы:

backend bagend
        mode http
        balance roundrobin
        option httpchk GET / HTTP/1.1\r\nHost:\ www.example.com
        use-server app1_00 if { path_beg /frodo }
        use-server app1_01 if { path_beg /frodo }
        use-server app1_02 if { path_beg /frodo }
        use-server app1_03 if { path_beg /frodo }
        server  app1_00 10.0.0.1:9100 check
        server  app1_01 10.0.0.1:9101 check
        server  app1_02 10.0.0.1:9102 check
        server  app1_03 10.0.0.1:9103 check
        server  app2_00 10.0.0.2:9100 check
        server  app2_01 10.0.0.2:9101 check
        server  app2_02 10.0.0.2:9102 check
        server  app2_03 10.0.0.2:9103 check

Будут ли мои команды use-server сбалансированы по всем 4 бэкэндам в app1? Или мне нужно сделать это по-другому? Похоже, что все собирается app1_00.

Что вы хотите сделать, так это иметь acl во внешнем интерфейсе, чтобы отправить запрос другому бэкэнд на основе URL-адреса.

frontend shire
    bind *:80
    mode http
    acl path-frodo path_beg /frodo
    use backend longbottom if path-frodo
    default_backend bagend

backend longbottom
    mode http
    balance roundrobin
    option httpchk GET / HTTP/1.1\r\nHost:\ www.example.com
    server  app1_00 10.0.0.1:9100 check
    server  app1_01 10.0.0.1:9101 check
    server  app1_02 10.0.0.1:9102 check
    server  app1_03 10.0.0.1:9103 check

backend bagend
    mode http
    balance roundrobin
    option httpchk GET / HTTP/1.1\r\nHost:\ www.example.com
    server  app1_00 10.0.0.1:9100 check
    server  app1_01 10.0.0.1:9101 check
    server  app1_02 10.0.0.1:9102 check
    server  app1_03 10.0.0.1:9103 check
    server  app2_00 10.0.0.2:9100 check
    server  app2_01 10.0.0.2:9101 check
    server  app2_02 10.0.0.2:9102 check
    server  app2_03 10.0.0.2:9103 check

Все запросы, начинающиеся с / frodo, будут попадать только в app1_00, app1_01, app1_02 и app1_03. Все остальные запросы поразят все.