====== heartbeat ======
ha high availability redundancy failover
Aplicacion para proveer de Alta Disponibilidad a dos servidores, que compartiran una direccion IP. Uno sera el activo y otro el pasivo.
===== Instalacion =====
sudo aptitude install heartbeat
Requisitos:
* Los dos nodos se comunican mediante trafico multicast, por lo que la red/cortafuegos... lo tiene que permitir
===== Configuracion =====
Escenario:
^ Nombre ^ Direccion IP ^ Interfaz de red ^ Descripcion ^
| balancer.dev.jj.com | 10.0.0.200 | -- | IP virtual. La comparten los dos nodos de heartbeat |
| balancer-1.dev.jj.com | 10.0.0.15 | eth2 | Nodo maestro de heartbeat |
| balancer-2.dev.jj.com | 10.0.0.17 | eth3 | Nodo maestro de heartbeat |
----
\\
/etc/ha.d/authkeys
auth 2
2 sha1 jj.com
| jj.com | Contrasenya. El archivo tiene que ser de root y con 0600 |
----
\\
/etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
bcast eth2 # Linux
mcast eth2 225.0.0.1 694 1 0
ucast eth2 10.0.0.15
auto_failback off
node balancer-1.dev.jj.com
node balancer-2.dev.jj.com
| eth2 | NIC of the node. In this case belongs to balancer-1.dev.jj.com |
| 225.0.0.1 | Multicast address. Should be the same on both nodes |
| 10.0.0.15 | IP address of the node. In this case belongs to balancer-1.dev.jj.com |
| node balancer-1.dev.jj.com\\ node balancer-2.dev.jj.com | Nodes name. Should be the same on both nodes. If no DNS entry have them added to /etc/hosts |
| auto_failback off | Prefiero hacer un sanity check antes de volver a poner como activo el nodo que fallo |
----
\\
/etc/ha.d/haresources
balancer-1.dev.jj.com 10.0.0.200 haproxy
| balancer-1.dev.jj.com | Nombre del nodo maestro. Tiene que ser el mismo en los dos nodos |
| 10.0.0.200 | Direccion IP virtual que comparten los dos nodos. Tiene que ser el mismo en los dos nodos |
| haproxy | Opcional. Servicio que para y arranca cuando se para/arranca heartbeat. Tiene que tener un script de arranque/parada estandar en /etc/init.d |
===== Servicio =====
sudo /etc/init.d/heartbeat restart
Nodo **ACTIVO** (especificar tarjeta de red adecuada):
sudo ip addr sh eth2
2: eth2: mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:16:36:93:ad:cf brd ff:ff:ff:ff:ff:ff
inet 10.0.0.15/24 brd 10.0.0.255 scope global eth2
inet 10.0.0.200/24 brd 10.0.0.255 scope global secondary eth2:0
inet6 fe80::216:36ff:fe93:adcf/64 scope link
valid_lft forever preferred_lft forever
Existe la linea con la IP compartida:
inet 10.0.0.200/24 brd 10.0.0.255 scope global secondary eth2:0
Nodo **FAILOVER** (especificar tarjeta de red adecuada):
sudo ip addr sh eth3
2: eth3: mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:16:36:8c:f1:09 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.17/24 brd 10.0.0.255 scope global eth3
inet6 fe80::216:36ff:fe8c:f109/64 scope link
valid_lft forever preferred_lft forever
Comprobar:
1. (Desde cliente) Hacer un ping a la IP compartida:
ping 10.0.0.200
2. (En el nodo maestro) Parar el servicio heartbeat:
ssh balancer-1.dev.jj.com
sudo /etc/init.d/heartbeat stop
ps ax | grep heartbeat
Los pings no deberian parar