On Wed, Dec 11, 2013 at 04:26:18PM +0100, Jose Luis Godoy wrote:
> Description of problem:
>
> Configuring keepalived + ipvs with persistence: doesn't balance to
> other node if initial persistent node fails.
The problem is that your using "inhibit_on_failure" for quiescent
servers and persistence. To get the behavior your are expecting:
echo 1 > /proc/sys/net/ipv4/vs/expire_quiescent_template
Ryan
> Version-Release number of selected component (if applicable):
>
> keepalived-1.2.9-1.fc19.x86_64
> ipvsadm-1.27-1.fc19.x86_64
> /lib/modules/3.11.9-200.fc19.x86_64/kernel/net/netfilter/ipvs/ip_vs.ko
>
> How reproducible:
> Always.
>
> Steps to Reproduce:
> 1. /etc/keepalived/keepalived.conf -> this is part of the configuration file:
> ...
> virtual_server 192.168.58.10 443 {
> delay_loop 5
> lb_algo rr
> lb_kind DR
> persistence_timeout 3600
> persistence_granularity 255.255.255.255
> protocol TCP
>
> sorry_server 192.168.58.200 443
>
> real_server 192.168.58.201 443 {
> weight 1
> inhibit_on_failure
> TCP_CHECK {
> connect_timeout 3
> nb_get_retry 3
> delay_before_retry 1
> }
> }
> real_server 192.168.58.202 443 {
> weight 1
> inhibit_on_failure
> TCP_CHECK {
> connect_timeout 3
> nb_get_retry 3
> delay_before_retry 1
> }
> }
> ...
>
> 2. systemctl restart keepalived
>
> # ipvsadm -L -n --persistent-conn
>
> IP Virtual Server version 1.2.1 (size=4096)
> Prot LocalAddress:Port Weight PersistConn ActiveConn InActConn
> -> RemoteAddress:Port
> TCP 192.168.58.10:80 rr
> -> 192.168.58.201:80 1 0 0 0
> -> 192.168.58.202:80 1 0 0 0
> TCP 192.168.58.10:443 rr persistent 3600
> -> 192.168.58.201:443 1 0 0 0
> -> 192.168.58.202:443 1 0 0 0
>
> 3. At first we connect to 192.168.58.10:443 four times from the same
> source address.
>
> # ipvsadm -L -n --persistent-conn
>
> IP Virtual Server version 1.2.1 (size=4096)
> Prot LocalAddress:Port Weight PersistConn ActiveConn InActConn
> -> RemoteAddress:Port
> TCP 192.168.58.10:80 rr
> -> 192.168.58.201:80 1 0 0 0
> -> 192.168.58.202:80 1 0 0 0
> TCP 192.168.58.10:443 rr persistent 3600
> -> 192.168.58.201:443 1 1 0 4
> -> 192.168.58.202:443 1 0 0 0
>
> 4. We stop the persistent node 192.168.58.201:
>
> # ipvsadm -L -n --persistent-conn
>
> IP Virtual Server version 1.2.1 (size=4096)
> Prot LocalAddress:Port Weight PersistConn ActiveConn InActConn
> -> RemoteAddress:Port
> TCP 192.168.58.10:80 rr
> -> 192.168.58.201:80 1 0 0 0
> -> 192.168.58.202:80 1 0 0 0
> TCP 192.168.58.10:443 rr persistent 3600
> -> 192.168.58.201:443 0 1 0 4
> -> 192.168.58.202:443 1 0 0 0
>
> 4. We connect again to 192.168.58.10:443 four times from the initial
> source address.
>
> # ipvsadm -L -n --persistent-conn
>
> IP Virtual Server version 1.2.1 (size=4096)
> Prot LocalAddress:Port Weight PersistConn ActiveConn InActConn
> -> RemoteAddress:Port
> TCP 192.168.58.10:80 rr
> -> 192.168.58.201:80 1 0 0 0
> -> 192.168.58.202:80 1 0 0 0
> TCP 192.168.58.10:443 rr persistent 3600
> -> 192.168.58.201:443 0 1 0 4
> -> 192.168.58.202:443 1 0 0 0 <<<--- There aren't connections
>
> Expected results:
>
> IP Virtual Server version 1.2.1 (size=4096)
> Prot LocalAddress:Port Weight PersistConn ActiveConn InActConn
> -> RemoteAddress:Port
> TCP 192.168.58.10:80 rr
> -> 192.168.58.201:80 1 0 0 0
> -> 192.168.58.202:80 1 0 0 0
> TCP 192.168.58.10:443 rr persistent 3600
> -> 192.168.58.201:443 0 1 0 4
> -> 192.168.58.202:443 1 0 0 4 <<<--- We must get four connections
>
> Reference to bug in Fedora Project:
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1040405
>
>
> Additional info:
>
> The first node is stopped, IPVS doesn't balance to the other web
> server node 192.168.58.202:443 and waits 3600 seconds (in this case)
> to balance to it. We don't know te reason to do this, in our opinion
> it must balance to the other web server node, we think it could be a
> possible bug.
>
> Can anyone explain this behaviour or is really it a bug?
>
> Thanks!
>
> Jose Luis
> --
> To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
|