2015-03-17 3 views
0

У нас есть haproxy, который загружает два сервера: app1 и app2. Мы установили весы для каждого из них, например, app1 имеет вес 255, а другой - app2 0. Если какой-либо случай app1 идет вниз, как перенести сеанс и соединение на приложение без изменений. Можем ли мы достичь этого через хапрокси. Мы присоединяем нашу HAproxy конфиг ниже любезно вести насHaproxy Session Transfer

global 
    log   127.0.0.1 local0 
    chroot  /var/lib/haproxy 
    pidfile  /var/run/haproxy.pid 
    maxconn  4000 
    user  haproxy 
    group  haproxy 
    stats socket /etc/haproxy/haproxysock level admin 
    daemon defaults 
    mode  http 
    log   global 
    option  dontlognull 
    option  http-server-close 
    option  httplog 
    option  redispatch 
    timeout connect 10000 
    timeout client 300000 
    timeout server 300000 
    maxconn  60000 
    retries  3 
    stats uri /haproxy_stats 
    stats realm HAProxy\ Statistics 
    stats auth hadmin:unMetric_2012 

frontend main *:5000 
    acl is_app  path_beg  -i /static /images /javascript /stylesheets /js 
    acl is_app  path_end  -i .jpg .gif .png .css .js 
    acl is_app  path_end  -i /app/ 
    use_backend app    if is_app 
    default_backend    app backend static 
    balance  roundrobin 
    server  static 127.0.0.1:4331 check backend app option httpchk GET /app 
    balance roundrobin 
    reqrep ^([^\ :]*)/app((/?.*)*) \1/app\2 
     cookie uid preserve indirect 
    stick-table type string len 40 size 5M expire 60m 
    stick store-response set-cookie(sid) table app stick on cookie(sid) table app 
    stick on url_param(sid) table app server app1 demo1.unmetric.com:8080 cookie s1 weight 255 check 
    server app2 demo2.unmetric.com:8080 cookie s2 weight 0 check 

ответ

0

HAProxy не управляет серверной репликации приложение сеанса.
Он использует параметр cookie или request для липкости, но ваше backend-приложение должно обрабатывать репликацию сеанса самостоятельно.