Keepalived: Difference between revisions
No edit summary |
|||
| Line 1: | Line 1: | ||
= | = Keepalived Loadbalancer = | ||
== Introduction == | == Introduction == | ||
| Line 9: | Line 10: | ||
[http://www.keepalived.org/documentation.html www.keepalived.org] | [http://www.keepalived.org/documentation.html www.keepalived.org] | ||
== | == Software installation== | ||
Packages are installed using | |||
test1:~# apt-get install keepalived | test1:~# apt-get install keepalived | ||
| Line 21: | Line 22: | ||
Answer the questions with "Yes" ("load ... at boot") and then "backup" for "Daemon method". | Answer the questions with "Yes" ("load ... at boot") and then "backup" for "Daemon method". | ||
Configuration: | == Configuration example: HTTP == | ||
Create a file <pre>/etc/keepalived/keepalived.conf</pre> with following contend (adapt network adresses) | Create a file <pre>/etc/keepalived/keepalived.conf</pre> with following contend (adapt network adresses) | ||
| Line 121: | Line 122: | ||
} | } | ||
= Networking adjustments = | == Configuration example: Keepalived for Galera Loadbalancing == | ||
Here: | |||
* loadbalancer IP ''10.20.29.174'' | |||
* Three galera nodes: ''10.20.29.140'', ''10.20.29.142'', ''10.20.29.138'' | |||
For the configuration: adjust the router_id, virtual_router_id, and authentication information. | |||
global_defs { | |||
# This should be unique. | |||
router_id galera-lb | |||
} | |||
vrrp_instance mysql_pool { | |||
# The interface we listen on. | |||
interface eth0 | |||
# The default state, one should be master, the others should be set to SLAVE. | |||
state MASTER | |||
# This should be the same on all participating load balancers. | |||
virtual_router_id 19 | |||
priority 101 | |||
# Set the interface whose status to track to trigger a failover. | |||
track_interface { | |||
eth0 | |||
} | |||
# Password for the loadbalancers to share. | |||
authentication { | |||
auth_type PASS | |||
auth_pass Twagipmiv3 | |||
} | |||
# This is the IP address that floats between the loadbalancers. | |||
virtual_ipaddress { | |||
10.20.29.174 dev eth0 | |||
} | |||
} | |||
# Here we add the virtal mysql node | |||
virtual_server 10.20.29.174 3306 { | |||
delay_loop 6 | |||
# Round robin, but you can use whatever fits your needs. | |||
lb_algo rr | |||
lb_kind DR | |||
protocol TCP | |||
# For each server add the following. | |||
real_server 10.20.29.140 3306 { | |||
weight 10 | |||
MISC_CHECK { | |||
misc_path "/etc/keepalived/galera-checker.pl 10.20.29.140" | |||
misc_timeout 5 | |||
} | |||
} | |||
real_server 10.20.29.142 3306 { | |||
weight 11 | |||
MISC_CHECK { | |||
misc_path "/etc/keepalived/galera-checker.pl 10.20.29.142" | |||
misc_timeout 5 | |||
} | |||
} | |||
real_server 10.20.29.138 3306 { | |||
weight 12 | |||
MISC_CHECK { | |||
misc_path "/etc/keepalived/galera-checker.pl 10.20.29.138" | |||
misc_timeout 5 | |||
} | |||
} | |||
} | |||
=== Networking adjustments === | |||
The following instructions are valid for debian. | The following instructions are valid for debian. | ||
Revision as of 07:48, 13 August 2013
Keepalived Loadbalancer
Introduction
this page contains a basic description about how to set up keepalived for Open-Xchange cluster. This example is to work on debian systems. Keepalived mode is Direct Routing.
It is required to have ox servers and loadbalancer connected to the same switch or hub and that there is no filter for network packages between (some virtualization system do filter, too), so that MAC rewriting works.
For more information please see: www.keepalived.org
Software installation
Packages are installed using
test1:~# apt-get install keepalived
Keepalived requires some kernel modules to be loaded. They are loaded by the ipvsadmm service. So we enable it using dpkg-reconfigure:
dpkg-reconfigure ipvsadm
Answer the questions with "Yes" ("load ... at boot") and then "backup" for "Daemon method".
Configuration example: HTTP
Create a file
/etc/keepalived/keepalived.conf
with following contend (adapt network adresses)
global_defs {
router_id OX
}
vrrp_sync_group OX_GROUP {
group {
OX_GOUP
}
}
vrrp_instance OX_VRRP {
state BACKUP
interface eth0
garp_master_delay 10
virtual_router_id 10
priority 101
nopreempt
advert_int 1
authentication {
auth_type AH # Simple 'PASS' can use
auth_pass 1234 # example password '1234'
}
virtual_ipaddress {
10.20.30.77/24 brd 10.20.30.255 dev eth0 # virtual service ip 10.20.30.67
}
virtual_ipaddress_excluded {
}
}
virtual_server_group OX_HTTP {
10.20.30.77 80 # virtual ip and port 80
}
virtual_server_group OX_OL_PUSH {
10.20.30.77 44335 # VIP VPORT
}
virtual_server group OX_HTTP {
delay_loop 3
lvs_sched rr
lvs_method DR
protocol TCP
virtualhost 10.20.30.77
real_server 10.20.30.123 80 {
weight 1
inhibit_on_failure
HTTP_GET {
url {
path /servlet/TestServlet
status_code 200
}
connect_port 80
connect_timeout 10
}
}
real_server 10.20.30.321 80 {
weight 1
inhibit_on_failure
HTTP_GET {
url {
path /servlet/TestServlet
status_code 200
}
connect_port 80
connect_timeout 10
}
}
}
virtual_server group OX_OL_PUSH {
delay_loop 3
lvs_sched rr
lvs_method DR
protocol UDP
real_server 10.20.30.123 44335 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_port 9999
connect_timeout 5
}
}
real_server 10.20.30.321 44335 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_port 9999
connect_timeout 5
}
}
}
Configuration example: Keepalived for Galera Loadbalancing
Here:
- loadbalancer IP 10.20.29.174
- Three galera nodes: 10.20.29.140, 10.20.29.142, 10.20.29.138
For the configuration: adjust the router_id, virtual_router_id, and authentication information.
global_defs {
# This should be unique.
router_id galera-lb
}
vrrp_instance mysql_pool {
# The interface we listen on.
interface eth0
# The default state, one should be master, the others should be set to SLAVE.
state MASTER
# This should be the same on all participating load balancers.
virtual_router_id 19
priority 101
# Set the interface whose status to track to trigger a failover.
track_interface {
eth0
}
# Password for the loadbalancers to share.
authentication {
auth_type PASS
auth_pass Twagipmiv3
}
# This is the IP address that floats between the loadbalancers.
virtual_ipaddress {
10.20.29.174 dev eth0
}
}
# Here we add the virtal mysql node
virtual_server 10.20.29.174 3306 {
delay_loop 6
# Round robin, but you can use whatever fits your needs.
lb_algo rr
lb_kind DR
protocol TCP
# For each server add the following.
real_server 10.20.29.140 3306 {
weight 10
MISC_CHECK {
misc_path "/etc/keepalived/galera-checker.pl 10.20.29.140"
misc_timeout 5
}
}
real_server 10.20.29.142 3306 {
weight 11
MISC_CHECK {
misc_path "/etc/keepalived/galera-checker.pl 10.20.29.142"
misc_timeout 5
}
}
real_server 10.20.29.138 3306 {
weight 12
MISC_CHECK {
misc_path "/etc/keepalived/galera-checker.pl 10.20.29.138"
misc_timeout 5
}
}
}
Networking adjustments
The following instructions are valid for debian.
- For the keepalived node, configure in /etc/sysctl.conf:
net.ipv4.ip_forward = 1 - For the server nodes, use a stanza in the /etc/network/interfaces file. Adjust the IP.
auto lo:0
iface lo:0 inet static
address 10.20.30.77
netmask 255.255.255.255
pre-up echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
pre-up echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
post-up /sbin/route add -host 10.20.30.77 dev lo:0
pre-down /sbin/route del -host 10.20.30.77 dev lo:0
# reset to defaults
post-down echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
post-down echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
The effect of those settings should be self-explanatory. How to do this on other operating systems needs to be documented here.