Documente Academic
Documente Profesional
Documente Cultură
FACULTAD DE INGENIERA
SISTEMAS OPERATIVOS
TRUJILLO - PER
2017
SERVIDOR HAPROXY PARA BALANCEO DE REDIS
2
Usaremos tres componentes:
Redis/Sentinel: La base de Datos con su sistema de monitorizacin propio, monitoriza
que nodo es master o esclavo en el cluster (el cambio ser automtico cuando Sentinel
detecte un problema).
HaProxy: Un balanceador de carga que permite chequear los tres nodos Redis y ver en
cada momento cual es el Master. Permitir que el trfico sea siempre dirigido al nodo
Master.
*Comenzaremos la instalacin, por las piezas que sern las que ataquen los clientes para
llegar a la BBDD, HaProxy y KeepAlived.
Este montaje est basado en 3 mquinas Debian Net Install
SERVIDOR MAESTRO: IP 10.0.2.15
3
El HaProxy y los Keepalive solo irn en las primeras y Redis/Sentinel en las tres, es decir
la ltima mquina solo entrara en nuestro HA como rplica de BBDD y de Sentinel.
En las dos primeras mquinas instalaremos estos componentes:
nano /etc/haproxy/haproxy.cfg
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode tcp
option httplog
option dontlognull
4
frontend redis
bind 10.20.0.5:6380 name redis_prod
default_backend redis_backend_prod
backend redis_backend_prod
option tcp-check
tcp-check send PING\r\n
tcp-check expect string +PONG
tcp-check send info\ replication\r\n
tcp-check expect string role:master
tcp-check send QUIT\r\n
tcp-check expect string +OK
server redis1 10.0.2.15:6379 check inter 1s
server redis2 192.168.1.38:6379 check inter 1s
server redis3 192.168.1.40:6379 check inter 1s
- /etc/init.d/haproxy reload
- nano /etc/keepalived/keepalived.conf
vrrp_script chk_haproxy {
script killall -0 haproxy
interval 2 weight }
vrrp_instance VI_1 {
interface ens32 #nombre interfaz puede cambiar dependiendo de la
instalacin
state MASTER
virtual_router_id 51
priority 101
virtual_ipaddress {
10.20.0.5 # virtual IP
} track_script {
chk_haproxy}
- /etc/init.d/keepalived start
5
Con esto, ya tenemos preparada la alta disponibilidad a nivel de red, tenemos una
herramienta que nos chequea quien es el master en cada momento y nos balancea y
una IP comn a la que se pueden conectar nuestros clientes y que estar balanceada
entre dos nodos, por si hubiera un problema de red en alguno.
El siguiente paso ser instalar las BBDD Redis y configurar Sentinel, esta parte
debemos hacerla en los tres nodos:
Con el parmetro slaveof lo que estaremos dicindole a Redis que replique la BBDD y
la persista en los nodos esclavos.
Ahora, antes de configurar Sentinel tenemos que tener arrancado Redis y
comprobaremos que la rplica est activa (ejemplo):
redis-cli
info
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.1.38,port=6379,state=online,offset=71,lag=0
slave1:ip=192.168.1.38,port=6379,state=online,offset=71,lag=1
master_repl_offset:71
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:70
6
El ltimo paso, es configurar Sentinel, tenemos que crear el archivo de configuracin
en cada nodo y seleccionar el master y sus esclavos. Sentinel tiene auto
descubrimiento es decir si aadimos nodos visibles a nivel de red con el mismo
nombre de grupo los aadir como esclavos.
El archivo de configuracin quedar como sigue:
port 6390
daemonize yes
loglevel warning
logfile /var/log/redis/redis-sentinel.log
#MASTER SETUP
sentinel monitor sentinelgroup 10.0.2.15 6379 2
sentinel down-after-milliseconds sentgti 5000
sentinel failover-timeout sentgti 900000
sentinel down-after-milliseconds sentinelgroup 5000
sentinel config-epoch sentinelgroup 0
sentinel leader-epoch sentinelgroup 0
#SLAVE SETUP
sentinel known-slave sentinelgroup 192.168.1.38 6379
sentinel known-slave sentinelgroup 192.168.1.40 6379
sentinet known-sentinel sentinelgroup 192.168.1.38 6390
sentinet known-sentinel sentinelgroup 192.168.1.40 6390
sentinel monitor resque 10.0.2.15 6379 2
A grandes rasgos, con una configuracin similar a esta, tendrais un cluster de Redis
con alta disponibilidad de red, todos los clientes se conectaran a nuestra vip y podr
balancear entre los dos nodos si a uno le pasa algo. Y con disponibilidad de BBDD,
HaProxy se dar cuenta si Sentinel cambia un nodo de master a esclavo y balancear
las peticiones al nuevo activo.