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

Использовать acl в бэкэнде / сжать мою конфигурацию

В моем сценарии я должен переключить серверы на основе содержащей строки URL-адреса &mode=edit или &mode=create между моими серверами, чтобы сбалансировать нагрузку. Моя конфигурация создается с помощью скрипта примерно из 100 разных URL / IP. Мой текущий способ с одним интерфейсом и двумя бэкэндами довольно длинный, и огромное количество проверок работоспособности не подходит для моих серверов ...

Как мне собрать все это в один listenвместо того frontend? Я не могу понять, как использовать ACL при прослушивании, чтобы определить, какой сервер использовать.

frontend myFrontend

    bind 127.0.0.1:80
    bind 127.0.0.1:443 ssl crt /etc/haproxy/ssl/myFrontend/myFrontend.pem
    redirect scheme https if !{ ssl_fc }
    use_backend myBackend-edit if { url_sub &mode=edit } or { url_sub &mode=create }
    default_backend myBackend

backend myBackend

    server srv1 1.1.1.1:10201 cookie srv1 ssl check
    server srv2 2.2.2.2:10201 cookie srv1 ssl check backup
    server srv3 3.3.3.3:10201 cookie srv1 ssl check backup

backend myBackend-edit

    server srv1 1.1.1.1:10201 cookie srv1 ssl check backup
    server srv2 2.2.2.2:10201 cookie srv1 ssl check backup
    server srv3 3.3.3.3:10201 cookie srv1 ssl check

правильное ключевое слово use-server (обратите внимание, что это тире, а не подчеркивание, например use_backend. Теперь моя нагрузка уменьшилась, а конфиги стали меньше. Я искал только что-то вроде use_server...

Итак, это мой рабочий пример:

listen myFrontend

    bind 127.0.1.1:80
    bind 127.0.1.1:443 ssl crt /etc/haproxy/ssl/myFrontend/myFrontend.pem
    redirect scheme https if !{ ssl_fc }
    use-server srv2 if { url_sub &mode=edit } or { url_sub &mode=create }
    server srv1 1.1.1.1:10201 cookie srv1 ssl check
    server srv2 2.2.2.2:10201 cookie srv1 ssl check backup
    server srv3 3.3.3.3:10201 cookie srv1 ssl check backup

вы также можете использовать балансировку нагрузки и придерживаться файлов cookie, если хотите.

источник: man-страница haproxy | или используйте красивую :)