lunes, 15 de abril de 2019

Configuración sencilla de KeepaliveD

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


# 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     |
+ ------------ +