haproxy cookie не может работать по кругу?

Я хочу сделать так, посмотри мой haproxy:

backend app
balance     roundrobin
cookie  ha_gray_cookie insert indirect nocache
server  app1 127.0.0.1:5001 cookie 110 check
server  app2 127.0.0.1:5002 cookie 110 check
server  app3 127.0.0.1:5003 cookie 110 check
server  app4 127.0.0.1:5004 cookie 120 check
server  app5 127.0.0.1:5005 cookie 120 check
server  app6 127.0.0.1:5006 cookie 120 check
server  app7 127.0.0.1:5007 cookie 120 check
server  app8 127.0.0.1:5008 cookie 120 check
server  app9 127.0.0.1:5009 cookie 120 check

когда пользователи заходят сюда, у них есть шанс 3/9 посетить новые версии (5001 5002 5003) и шанс 6/9 посетить старые версии.

В приведенной выше конфигурации есть некоторые проблемы, а именно: когда я устанавливаю для файла cookie значение 110, а затем клиент всегда посещает приложение1, когда я устанавливаю для файла cookie значение 120, клиент всегда посещает приложение4.

Я хочу сделать это: если я установлю для файла cookie значение 110, клиент может посещать все 3 сервера (5001,5002,5003) циклическим перебором.


person jackie    schedule 24.06.2013    source источник


Ответы (1)


Ключевое слово cookie предназначено для привязки к конкретному серверу, поэтому haproxy не будет возвращаться к циклическому перебору, как вы ожидаете.

Вместо этого вы можете создать два бэкэнда, один со своими 110 серверами, а другой со своими 120 серверами. Используйте ACL для направления трафика на любой сервер на основе файлов cookie. Что-то вроде этого:

frontend cookie_balancer
    bind    :80
    mode    http

    acl is_110 hdr(Cookie) 110
    acl is_120 hdr(Cookie) 120

    use_backend backend_110 if is_110
    use_backend backend_120 if is_120

    default_backend backend_110

backend backend_110
        balance roundrobin
        server  app1 127.0.0.1:5001 check
        server  app2 127.0.0.1:5002 check
        server  app3 127.0.0.1:5003 check

backend backend_120
        balance roundrobin
        server  app4 127.0.0.1:5004 check
        # ...

Видеть:

Документация по Использование ACL.

документация hdr, hdr_sub или hdr_beg, которую можно использовать для проверки конкретный файл cookie и соответственно направлять трафик.

person ty.    schedule 01.07.2013
comment
Спасибо за ваш ответ. и я сделаю эту работу, как ваше решение - person jackie; 03.07.2013