Keepalived, HAProxy and varnish: Difference between revisions
Jump to navigation
Jump to search
(Created page with "= Setting up Keepalived, HAProxy and Varnish = == Install & setup Keepalived == == Install & setup HAProxy == == Install & setup Varnish ==") |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
= Setting up Keepalived, HAProxy and Varnish = |
= Setting up Keepalived, HAProxy and Varnish = |
||
Assuming debian install, but packages should exists for popular distroes as well |
|||
== Install |
== Install packages == |
||
<pre> |
|||
aptitude install keepalived varnish haproxy |
|||
</pre> |
|||
== Install & setup HAProxy == |
|||
== |
== Prepare system configs == |
||
edit |
|||
<code>/etc/sysctl.conf</code> |
|||
Add: |
|||
<pre> |
|||
net.ipv4.ip_forward=1 |
|||
net.ipv4.ip_nonlocal_bind=1 |
|||
</pre> |
|||
== Setup keepalived == |
|||
MASTER: |
|||
Edit |
|||
<code>/etc/keepalived/keepalived.conf</code> |
|||
<pre> |
|||
vrrp_script chk_haproxy { # Requires keepalived-1.1.13 |
|||
script "killall -0 haproxy" # cheaper than pidof |
|||
interval 2 # check every 2 seconds |
|||
weight 2 # add 2 points of prio if OK |
|||
} |
|||
vrrp_script chk_nginx { # Requires keepalived-1.1.13 |
|||
script "killall -0 nginx" # cheaper than pidof |
|||
interval 2 # check every 2 seconds |
|||
weight 2 # add 2 points of prio if OK |
|||
} |
|||
vrrp_instance VI_1 { |
|||
interface eth0 |
|||
state MASTER |
|||
virtual_router_id 152 |
|||
priority 101 # 101 on master, 100 on backup |
|||
virtual_ipaddress { |
|||
172.30.1.248 |
|||
} |
|||
track_script { |
|||
chk_haproxy |
|||
} |
|||
} |
|||
vrrp_instance VI_2 { |
|||
interface eth0 |
|||
state MASTER |
|||
virtual_router_id 162 |
|||
priority 101 # 101 on master, 100 on backup |
|||
virtual_ipaddress { |
|||
172.30.1.247 |
|||
} |
|||
track_script { |
|||
chk_nginx |
|||
} |
|||
} |
|||
</pre> |
|||
SLAVE: |
|||
<pre> |
|||
vrrp_script chk_haproxy { # Requires keepalived-1.1.13 |
|||
script "killall -0 haproxy" # cheaper than pidof |
|||
interval 2 # check every 2 seconds |
|||
weight 2 # add 2 points of prio if OK |
|||
} |
|||
vrrp_script chk_nginx { # Requires keepalived-1.1.13 |
|||
script "killall -0 nginx" # cheaper than pidof |
|||
interval 2 # check every 2 seconds |
|||
weight 2 # add 2 points of prio if OK |
|||
} |
|||
vrrp_instance VI_1 { |
|||
interface eth0 |
|||
state BACKUP |
|||
virtual_router_id 152 |
|||
priority 100 # 101 on master, 100 on backup |
|||
virtual_ipaddress { |
|||
172.30.1.248 |
|||
} |
|||
track_script { |
|||
chk_haproxy |
|||
} |
|||
} |
|||
vrrp_instance VI_2 { |
|||
interface eth0 |
|||
state BACKUP |
|||
virtual_router_id 162 |
|||
priority 100 # 101 on master, 100 on backup |
|||
virtual_ipaddress { |
|||
172.30.1.247 |
|||
} |
|||
track_script { |
|||
chk_nginx |
|||
} |
|||
} |
|||
</pre> |
|||
== Setup HAProxy == |
|||
MASTER: |
|||
<pre> |
|||
# this config needs haproxy-1.1.28 or haproxy-1.2.1 |
|||
global |
|||
log 127.0.0.1 local0 |
|||
log 127.0.0.1 local1 notice |
|||
maxconn 8196 |
|||
user haproxy |
|||
group haproxy |
|||
daemon |
|||
defaults |
|||
log global |
|||
mode http |
|||
option httplog |
|||
option dontlognull |
|||
retries 3 |
|||
option redispatch |
|||
maxconn 20000 |
|||
contimeout 5000 |
|||
clitimeout 50000 |
|||
srvtimeout 50000 |
|||
listen varnish_farm 172.30.1.248:80 |
|||
mode http |
|||
cookie SERVERID insert indirect nocache |
|||
balance roundrobin |
|||
option http-server-close |
|||
option forwardfor |
|||
stats enable |
|||
stats auth admin:Toklon |
|||
server varnish1 172.30.1.23:80 cookie varnish11 check |
|||
server varnish2 172.30.1.75:80 cookie varnish12 check |
|||
</pre> |
|||
SLAVE: |
|||
== Setup Varnish == |
|||
MASTER & SLAVE are equal on both servers. |
Latest revision as of 16:47, 5 September 2012
Setting up Keepalived, HAProxy and Varnish
Assuming debian install, but packages should exists for popular distroes as well
Install packages
aptitude install keepalived varnish haproxy
Prepare system configs
edit
/etc/sysctl.conf
Add:
net.ipv4.ip_forward=1 net.ipv4.ip_nonlocal_bind=1
Setup keepalived
MASTER: Edit
/etc/keepalived/keepalived.conf
vrrp_script chk_haproxy { # Requires keepalived-1.1.13 script "killall -0 haproxy" # cheaper than pidof interval 2 # check every 2 seconds weight 2 # add 2 points of prio if OK } vrrp_script chk_nginx { # Requires keepalived-1.1.13 script "killall -0 nginx" # cheaper than pidof interval 2 # check every 2 seconds weight 2 # add 2 points of prio if OK } vrrp_instance VI_1 { interface eth0 state MASTER virtual_router_id 152 priority 101 # 101 on master, 100 on backup virtual_ipaddress { 172.30.1.248 } track_script { chk_haproxy } } vrrp_instance VI_2 { interface eth0 state MASTER virtual_router_id 162 priority 101 # 101 on master, 100 on backup virtual_ipaddress { 172.30.1.247 } track_script { chk_nginx } }
SLAVE:
vrrp_script chk_haproxy { # Requires keepalived-1.1.13 script "killall -0 haproxy" # cheaper than pidof interval 2 # check every 2 seconds weight 2 # add 2 points of prio if OK } vrrp_script chk_nginx { # Requires keepalived-1.1.13 script "killall -0 nginx" # cheaper than pidof interval 2 # check every 2 seconds weight 2 # add 2 points of prio if OK } vrrp_instance VI_1 { interface eth0 state BACKUP virtual_router_id 152 priority 100 # 101 on master, 100 on backup virtual_ipaddress { 172.30.1.248 } track_script { chk_haproxy } } vrrp_instance VI_2 { interface eth0 state BACKUP virtual_router_id 162 priority 100 # 101 on master, 100 on backup virtual_ipaddress { 172.30.1.247 } track_script { chk_nginx } }
Setup HAProxy
MASTER:
# this config needs haproxy-1.1.28 or haproxy-1.2.1 global log 127.0.0.1 local0 log 127.0.0.1 local1 notice maxconn 8196 user haproxy group haproxy daemon defaults log global mode http option httplog option dontlognull retries 3 option redispatch maxconn 20000 contimeout 5000 clitimeout 50000 srvtimeout 50000 listen varnish_farm 172.30.1.248:80 mode http cookie SERVERID insert indirect nocache balance roundrobin option http-server-close option forwardfor stats enable stats auth admin:Toklon server varnish1 172.30.1.23:80 cookie varnish11 check server varnish2 172.30.1.75:80 cookie varnish12 check
SLAVE:
Setup Varnish
MASTER & SLAVE are equal on both servers.