Today morning when I am trying to start haproxy in one of server I got following error:
[ALERT] 096/213653 (26549) : Starting proxy webfarm: cannot bind socket
I have spent around 2 hours to debug this issue.
Here is the solution:
HAProxy will try to bind to Virtual IP which will only available in active node. Since our virtual IP is already bind to active node, this server unable to bind.
To resolve this issue we need to append net.ipv4.ip_nonlocal_bind=1 in /etc/sysctl.conf file.
Open /etc/sysctl.conf and append following line:
net.ipv4.ip_nonlocal_bind=1
After adding above line run following command to check if its updated or not:
$ sysctl -p
Output:
net.ipv4.ip_nonlocal_bind = 1
In output of sysctl -p we can see net.ipv4.ip_nonlocal_bind = 1.
Now start HAProxy:
$ service haproxy restart
Output:
* Restarting haproxy haproxy
After starting check HAProxy status:
$ service haproxy status
Output:
haproxy is running.
To find where is your virtual IP
To find to which host your virtual IP is bind use following command:
$ ip addr
In output check if you can find your virtual IP.
Start HAProxy with init script
To start HAProxy with init script set the ENABLED
option to 1
in /etc/default/haproxy file
Open /etc/default/haproxy file
$ vim /etc/default/haproxy
Append following line:
ENABLED=1
After adding above line restart HAProxy.
$ service haproxy restart
Output:
* Restarting haproxy haproxy