Search code examples
virtualboxredhathaproxyhigh-availabilityvirtual-ip-address

KeepAlived + HAProxy gets connection refused after a while


I´ve the next scenario, 4 VM´s running Red Hat Enterprise Linux 7:

  • 20.1.67.230 server (VIRTUAL IP) (not a host)

  • 20.1.67.219 haproxy1 (LOAD BALANCER)

  • 20.1.67.229 haproxy2 (LOAD BALANCER)
  • 20.1.67.223 server1 (LOAD TO BALANCE)
  • 20.1.67.213 server2 (LOAD TO BALANCE)

My keepalived.conf file is:

vrrp_script chk_haproxy {

   script "killall -0 haproxy" # check the haproxy process

   interval 2 # every 2 seconds

   weight 2 # add 2 points if OK

}

vrrp_instance VI_1 {

   interface enp0s3 # interface to monitor

   state MASTER# MASTER on haproxy1, BACKUP on haproxy2

   virtual_router_id 51

   priority 101 # 101 on haproxy1, 100 on haproxy2

   unicast_src_ip 20.1.67.229  # This is the IP of the interface keepalived    listens on

   unicast_peer {                          # This is the IP of the peer instance

     20.1.67.219

   }

  virtual_ipaddress {

    20.1.67.230  # virtual ip address

  }

  track_script {

    chk_haproxy

  }

}

When a execute a request to the VIRTUAL IP, for instance:

curl  server:8888/info

everything is ok, but just for a while, after some requests the command returns me : connection refused

So I´ve to restart the keepalived service manually , this way:

systemctl restart keepalived.service

The whole system seems work well, VRRP messages between haproxy1 and haproxy2 are OK, it´s just like the Virtual IP is not working properly.

Can anyone point me in the right direction to diagnose and fix this problem?


Solution

  • It was a networking issue. There was a device on the net with same IP as the Virtual IP I had chosen.