domingo, 14 de abril de 2019

Configuração simples do KeepaliveD

Então keepalived tem sido em torno de um bom tempo agora .... no entanto, ainda é um mistério para muitos.
Portanto, este é um exemplo muito simples de como o keepalived pode funcionar com o MySQL. Espero que isso possa ajudar as pessoas com dúvidas.

Nós teremos um mestre simples para configurar escravos. Significado .. nós escrevemos para um a menos que tenhamos failover para o segundo para algum evento.

1º - instalar keepalived


# yum search keepalived
keepalived .x86_64: Balanceador de carga e serviço de alta disponibilidade

  Apenas para nomes e resumos, use "pesquisar todos" para tudo.
# yum -y install keepalived

Agora você deve ter um arquivo de configuração

# ls -ltr /etc/keepalived/keepalived.conf  

Mantenha o original como você sempre faz backup .. certo ....
# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.orig

Então você precisa descobrir um ipaddress que você pode usar para o seu ip virtual. Eu escolhi 192.168.0.123 para este exemplo.

Em seguida, vamos configurar um script para ser usado em nosso novo arquivo de configuração.

Algumas coisas que fiz aqui ..
Eu deixei um arquivo .cnf para keepalived e um log all no / etc / keepalived.
Isso simplifica o exemplo para que você possa fazer isso ou usar seus próprios arquivos cnf.

Um roteiro:

cat /etc/keepalived/keepalived_check.sh  
#! / bin / bash

# monitorar o status do mysql

# se este nó mysql estiver morto

# e seu escravo está vivo, então pare seu keepalived. O outro nó ligará o IP.



exportar MYSQL_HOME = / etc / keepalived /

Exportar 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 alive | wc -l);

REMOTEALIVE = $ ($ mysqladmin --defaults-file = $ MYSQL_HOME / .my.remotehost.cnf   ping | grep alive | wc -l);



if [[$ ALIVE -ne 1]]

então

#echo "MySQL está inoperante"

        if [[$ REMOTEALIVE-eq 1]]

        então

#         eco "Shutdown keep alive"

            systemctl stop keepalived  

#       echo "stop keepalived"

        fi

#outro

#echo "MySQL está ativo"

#encontro

fi



sair 0 #todo feito

Novo arquivo de configuração

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 MESTRE

      interface enp0s8   # <--- O NOME DA INTERFACE REALIZA SEU IP REAL / sbin / ifconfig

        # encontrado com show ip link

      virtual_router_id 51

      prioridade 101

      advert_int 1

      nopreempt   # somente necessário no nó de prioridade mais alta

      autenticação {

        auth_type PASS

        auth_pass 1111

      }





      track_script {

        check_mysql

      }



      virtual_ipaddress {

        192.168.0.123  

      }




}



Isso tudo é ótimo, mas funciona ...

Então nós temos 2 hosts

[root @ centosa keepalived] # hostname

centosa

[root @ centosb keepalived] # hostname
centosb

Comece a manter o serviço

[root @ centosa keepalived] # systemctl status keepalived
● keepalived.service - Monitor de alta disponibilidade de LVS e VRRP
   Carregado: carregado (/usr/lib/systemd/system/keepalived.service; desativado; predefinido do fornecedor: desativado)
   Ativo: inativo (morto)
[root @ centosa keepalived] # systemctl restart keepalived
[root @ centosa keepalived] # systemctl status keepalived
keepalived.service - Monitor de alta disponibilidade de LVS e VRRP
   Carregado: carregado (/usr/lib/systemd/system/keepalived.service; desativado; predefinido do fornecedor: desativado)
    Ativo: ativo (em execução)

[root @ centosa keepalived] # ssh 192.168.0.123 'hostname'
Senha: root@192.168.0.123:  

centosa

Prove as conexões já funcionam

[root @ centosa keepalived] # mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.101   -e "selecione @@ hostname"
+ ------------ +
| @@ hostname |
+ ------------ +
| centosb     |
+ ------------ +
[root @ centosa keepalived] # mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.102   -e "selecione @@ hostname"
+ ------------ +
| @@ hostname |
+ ------------ +
| centosa     |
+ ------------ +

Verifique se está funcionando ...

[root @ centosa keepalived] # status do systemctl keepalived | grep active
    Ativo: ativo  

[root @ centosb keepalived] # status do systemctl keepalived | grep active
    Ativo: ativo  

Teste o VIP atual .. pare o mysql e veja os mesmos hosts de mudança do VIP ...

[root @ centosa keepalived] # mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.123   -e "selecione @@ hostname"
+ ------------ +
| @@ hostname |
+ ------------ +
| centosa     |
+ ------------ +
[root @ centosa keepalived] # systemctl pára o mysqld  
[root @ centosa keepalived] # mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.123   -e "selecione @@ hostname"
+ ------------ +
| @@ hostname |
+ ------------ +
| centosb     |
+ ------------ +