On Tue, Apr 14, 2015 at 5:12 PM, Jim Gronowski <jgronow...@ditronics.com> wrote:
> Good day, everyone.
>
>
>
> I'm using HAproxy in front of a redis sentinel cluster.  If has worked very
> well, but this morning I ran into a small problem.  The sentinel cluster
> elected a new master, and HAproxy correctly detected the change and updated
> accordingly  (new connections went to the correct server).  However, one of
> our client web applications kept the connection open to the old server (now
> a slave), generating errors.  I'm guessing it's due to keepalives.
>
>
>
> Will 'option redispatch' correct this?  If not, is there a preferred way to
> close the connection and force the client to reconnect?  It doesn't
> necessarily have to be graceful, although that would be nice.
>
>
>
> Pertinent config below.
>
>
>
> -Jim
>
>
>
>
>
> defaults
>
>          log     global
>
>         mode    tcp
>
>         option  tcplog
>
>         option  dontlognull
>
>         option clitcpka
>
>         option srvtcpka
>
>         timeout connect 5000
>
>         timeout client  3m
>
>         timeout server  120000
>
>         errorfile 400 /etc/haproxy/errors/400.http
>
>         errorfile 403 /etc/haproxy/errors/403.http
>
>         errorfile 408 /etc/haproxy/errors/408.http
>
>         errorfile 500 /etc/haproxy/errors/500.http
>
>         errorfile 502 /etc/haproxy/errors/502.http
>
>         errorfile 503 /etc/haproxy/errors/503.http
>
>         errorfile 504 /etc/haproxy/errors/504.http
>
>
>
> frontend redisFE
>
>         bind *:6379
>
>         mode tcp
>
> frontend redisFE
>
>         bind *:6379
>
>         mode tcp
>
>         maxconn 10240
>
>         default_backend redisBE
>
>
>
> backend redisBE
>
>         mode tcp
>
>         option tcplog
>
>         balance source
>
>         option tcp-check
>
>         #tcp-check send AUTH\ foobar\r\n
>
>         #tcp-check expect +OK
>
>         tcp-check send PING\r\n
>
>         tcp-check expect string +PONG
>
>         tcp-check send info\ replication\r\n
>
>         tcp-check expect string role:master
>
>         tcp-check send QUIT\r\n
>
>         tcp-check expect string +OK
>
>         server redis-01 127.0.0.1:6379 maxconn 1024 check inter 1s
>
>         server redis-02 127.0.0.2:6379 maxconn 1024 check inter 1s
>
>
>
> Ditronics, LLC email disclaimer:
> This communication, including attachments, is intended only for the
> exclusive use of addressee and may contain proprietary, confidential, or
> privileged information. Any use, review, duplication, disclosure,
> dissemination, or distribution is strictly prohibited. If you were not the
> intended recipient, you have received this communication in error. Please
> notify sender immediately by return e-mail, delete this communication, and
> destroy any copies.


Hi Jim,

You're missing the parameter on-marked-down shutdown-sessions on your
server lines.
It will kill sessions established on a server when it is marked as
DOWN by the health checking.

Baptiste

Reply via email to