Así que keepalived ha existido por bastante tiempo ahora ... sin embargo, todavía es un misterio para muchos.
Este es un ejemplo muy simple de cómo keepalived puede trabajar con MySQL. Con suerte, esto puede ayudar a aquellos con preguntas.
Tendremos un maestro simple para configurar esclavos. Es decir, escribimos en uno a menos que tengamos conmutación por error al segundo para algún evento.
1º - instalar keepalived
Así que tenemos 2 hosts
Este es un ejemplo muy simple de cómo keepalived puede trabajar con MySQL. Con suerte, esto puede ayudar a aquellos con preguntas.
Tendremos un maestro simple para configurar esclavos. Es decir, escribimos en uno a menos que tengamos conmutación por error al segundo para algún evento.
1º - instalar keepalived
# yum search keepalived
keepalived .x86_64: equilibrador de carga y servicio de alta disponibilidad
Solo coincidencias de nombre y resumen, use "buscar todo" para todo.
# yum -y install keepalived
Ahora debería tener un archivo de configuración
# ls -ltr /etc/keepalived/keepalived.conf
Guarde el original como siempre hace una copia de seguridad ... correcto ....
# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.orig
Por lo tanto, debe averiguar una dirección IP que pueda usar para su IP virtual. Escogí 192.168.0.123 para este ejemplo.
A continuación, configuraremos un script para usarlo en nuestro nuevo archivo de configuración.
Algunas cosas que hice aqui ..
Dejé un archivo .cnf para keepalived y un registro en el / etc / keepalived.
Esto facilita el ejemplo para que pueda hacer esto o usar sus propios archivos cnf.
Un guión:
cat /etc/keepalived/keepalived_check.sh
#! / bin / bash
# monitorear el estado de mysql
# si este nodo mysql está muerto
# y su esclavo está vivo, entonces deja de mantenerlo vivo. El otro nodo enlazará la IP.
exportar MYSQL_HOME = / etc / keepalived /
export PATH = $ MYSQL_HOME / bin: $ PATH
mysql = "/ usr / bin / mysql"
mysqladmin = "/ usr / bin / mysqladmin"
delay_file = "$ MYSQL_HOME / slave_delay_second.log"
slave_host = $ 1
ALIVE = $ ($ mysqladmin --defaults-file = $ MYSQL_HOME / .my.localhost.cnf ping grep vivo | wc -l);
REMOTEALIVE = $ ($ mysqladmin --defaults-file = $ MYSQL_HOME / .my.remotehost.cnf ping grep vivo | wc -l);
si [[$ ALIVE -ne 1]]
entonces
#echo "MySQL está caído"
si [[$ REMOTEALIVE -eq 1]]
entonces
# echo "Shutdown mantener vivo"
systemctl dejar de mantener vivo
# echo "keepalived stop"
fi
#más
#echo "MySQL está arriba"
#fecha
fi
salida 0 # todo hecho
Nuevo archivo de configuración
cat /etc/keepalived/keepalived.conf
global_defs {
notification_email {
anothermysqldba@gmail.com
}
notification_email_from anothermysqldba@gmail.com
smtp_server localhost
smtp_connect_timeout 30
}
vrrp_script check_mysql {
script "/etc/keepalived/keepalived_check.sh"
intervalo 2
peso 2
}
vrrp_instance VI_1 {
estado maestro
interfaz enp0s8 # <--- QUE NOMBRE DE LA INTERFAZ CUMPLE TU REAL IP / sbin / ifconfig
# encontrado con ip link show
virtual_router_id 51
prioridad 101
advert_int 1
imperdonable # solo es necesario en el nodo de mayor prioridad
autenticación {
auth_type PASS
auth_pass 1111
}
track_script {
check_mysql
}
virtual_ipaddress {
192.168.0.123
}
}
Todo esto es genial, pero funciona ...
Así que tenemos 2 hosts
[root @ centosa keepalived] # nombre de host
centosa
[root @ centosb keepalived] # nombre de host
centosb
Empezar a mantener vivo
[root @ centosa keepalived] # systemctl status keepalived
● keepalived.service - LVS y VRRP High Availability Monitor
Cargado: cargado (/usr/lib/systemd/system/keepalived.service; desactivado; valor predeterminado del proveedor: desactivado)
Activo: inactivo (muerto)
[root @ centosa keepalived] # systemctl restart keepalived
[root @ centosa keepalived] # systemctl status keepalived
● keepalived.service - LVS y VRRP High Availability Monitor
Cargado: cargado (/usr/lib/systemd/system/keepalived.service; desactivado; valor predeterminado del proveedor: desactivado)
Activo: activo (en ejecución)
[root @ centosa keepalived] # ssh 192.168.0.123 'nombre de host'
Contraseña de root@192.168.0.123:
centosa
Demuestra que las conexiones ya funcionan
[root @ centosa keepalived] # mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.101 -e "seleccione @@ hostname"
+ ------------ +
| @@ hostname |
+ ------------ +
| centosb |
+ ------------ +
[root @ centosa keepalived] # mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.102 -e "seleccione @@ hostname"
+ ------------ +
| @@ hostname |
+ ------------ +
| centosa |
+ ------------ +
Compruebe que se está ejecutando ...
[root @ centosa keepalived] # systemctl status keepalived | grep activo
Activo: activo
[root @ centosb keepalived] # systemctl status keepalived | grep activo
Activo: activo
Probar el VIP actual. Detener mysql y ver los mismos hosts de cambio VIP ...
[root @ centosa keepalived] # mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.123 -e "seleccione @@ hostname"
+ ------------ +
| @@ hostname |
+ ------------ +
| centosa |
+ ------------ +
[root @ centosa keepalived] # systemctl stop mysqld
[root @ centosa keepalived] # mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.123 -e "seleccione @@ hostname"
+ ------------ +
| @@ hostname |
+ ------------ +
| centosb |
+ ------------ +