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
Então nós temos 2 hosts
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 |
+ ------------ +