Este artigo explicará como configurar um banco de dados MySQL 5 de três nós. cluster de servidores. :Dois nós de armazenamento e um
nó de gerenciamento.
O cluster éum balanceador de carga de alta disponibilidade
que consiste em dois nós usando o pacote de instalação Ultra Monkey
que fornece dispositivo "heartbeat" (usado para verificar se outro nó está ativo) e
"ldirectord" (distribuindo solicitações aos nós do cluster MySQL). .Neste artigo, cada um de nossos nós usa o sistema Debian Sarge Linux. A instalação de outras distribuições Linux pode ser um pouco
diferente. Usamos MySQL versão 5.0.19. Se você não quiser usar o MySQL 5, você também pode usar o MySQL 4.1,
embora
eu ainda não tenha testado isso.Este artigo é um guia de aplicação prática; não envolve muita teoria. Você pode encontrar muita teoria sobre clustering online.
Para um servidor
eu uso o seguinte servidor Debian, eles estão todos no mesmo segmento de rede (este exemplo: 192.168.0.x):
sql1.test.com: 192.168.0.101 MySQL Cluster Node 1
sql2.test.com: 192.168. 0.102 Nó 2 do cluster MySQL
loadb1.test.com: 192.168.0.103 Balanceamento de carga 1 / Servidor de gerenciamento de cluster MySQL
loadb2.test.com: 192.168.0.104 Balanceamento de carga 2
Além disso, precisamos de um endereço IP virtual: 192.168.0.105. Ele organizará o balanceamento de carga para este cluster MySQL para que
os aplicativos possam acessar o cluster por meio de um endereço IP único e unificado.
Mesmo que queiramos usar dois nós no MySQL Cluster, ainda precisamos de um terceiro nó, o MySQL Cluster Management Server
, por um motivo principal: se um dos nós do MySQL Cluster falhar e o MySQL Cluster Management Server não estiver em execução, então
Então, os dados nos dois nós do cluster serão inconsistentes ("cérebro dividido"). Precisamos dele para configurar o cluster MySQL.
Portanto, nossa instalação geralmente requer cinco máquinas:
2 nós do cluster MySQL + 1 servidor de gerenciamento de cluster + 2 balanceadores de carga = 5
Como o servidor de gerenciamento de cluster não usa muitos recursos, o sistema ficará vazio. para que possamos colocar nosso
primeiro
balanceador de carga na mesma máquina que ele, o que nos economiza um servidor, então, idealmente, precisamos apenas de quatromáquinas.
2. Configure o servidor de gerenciamento de cluster MySQL
Primeiro precisamos baixar o MySQL 5.0.19 e instalar o servidor de gerenciamento de cluster (ndb_mgmd) e o cliente de gerenciamento de cluster (ndb_mgm - que
pode ser usado para monitorar a operação do cluster). as etapas estão em loadb1.test .com (192.168.0.103):
loadb1.test.com:
mkdir /usr/src/mysql-mgm
cd /usr/src/mysql-mgm
wget http://dev.mysql.com/get /Downloads/ MySQL-5.0/mysql-max-5.0.19-linux-i686-
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql- max-5.0 .19-linux-i686-glibc23.tar.gz
cd mysql-max-5.0.19-linux-i686-glibc23
mv bin/ndb_mgm /usr/bin
mv bin/ndb_mgmd /usr/bin
chmod 755 /usr/ bin/ndb_mg *
cd /usr/src
rm -rf /usr/src/mysql-mgm
Em seguida, devemos criar o arquivo de configuração do cluster, /var/lib/mysql-cluster/config.ini:
loadb1.test.com:
mkdir /var /lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini
————-
[NDBD DEFAULT]
NoOfReplicas=2
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Seção para o cluster nó de gerenciamento
[ NDB_MGMD]
# Endereço IP do nó de gerenciamento (este sistema)
HostName=192.168.0.103
# Seção para os nós de armazenamento
[NDBD]
# Endereço IP do primeiro nó de armazenamento
HostName=192.168.0.101
DataDir= /var/lib/ mysql-cluster
[NDBD]
# Endereço IP do segundo nó de armazenamento
HostName=192.168.0.102
DataDir=/var/lib/mysql-cluster
# um [MYSQLD] por nó de armazenamento
[MYSQLD]
[MYSQLD]
———-
Na aplicação real , altere o arquivo Substitua o endereço IP pelo seu IP correspondente.
Em seguida, iniciamos o servidor de gerenciamento de cluster:
loadb1.test.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
Também deveríamos ser capazes de iniciar automaticamente o servidor de gerenciamento quando o servidor iniciar, então criamos um
script de inicialização muito simples e conexão de inicialização correspondente:
loadb1.test.com:
echo 'ndb_mgmd -f /var/lib/mysql-cluster/config.ini' > /etc/init.d/ndb_mgmd
chmod 755 /etc/init. d/ ndb_mgmd
update-rc.d ndb_mgmd defaults
Três nós de cluster MySQL de configuração (nós de armazenamento)
Agora instalaremos mysql-max-5.0.19 em sql1.test.com e sql2.test.com respectivamente:
sql1.example.com/ sql2 .example.com:
groupadd mysql
useradd -g mysql mysql
cd /usr/local/
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz
ln -s mysql - max-5.0.19-linux-i686-glibc23 mysql
cd
scripts mysql/mysql_install_db –user=mysql
chown -R root:
mysql -R dados mysql
cp support-files/mysql.server /etc/init.d/
chmod
.755 /etc/init.d/mysql.server
update-rc.d padrões do mysql.server
cd /usr/local/mysql/bin
mv * /usr/bin
cd ../
rm -fr /usr/local/mysql/bin
ln -s /usr/bin /usr/local/mysql/bin
Então criamos o arquivo de configuração do MySQL /etc/my.cnf em cada nó:
vi /etc/my.cnf
–
[mysqld]
ndbcluster
# Endereço IP do cluster nó de gerenciamento
ndb-connectstring=192.168.0.103
[mysql_cluster]
# Endereço IP do nó de gerenciamento de cluster
ndb-connectstring=192.168.0.103
–
Certifique-se de inserir o endereço IP correto no servidor de gerenciamento de cluster.
Em seguida, criamos o diretório de dados e iniciamos o servidor MySQL em cada nó do cluster:
sql1.test.com / sql2.test.com:
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
ndbd – inicial
/ etc/init.d/mysql.server start
(Lembre-se: iniciamos o MySQL apenas pela primeira vez ou quando /var/lib/mysql-cluster/config.ini em loadb1.test.com
muda. Use apenas ndbd –initial)
Agora é hora de definir a senha para a conta root do MySQL:
sql1.test.com / sql2.test.com:
mysqladmin -u root password yourrootsqlpassword
Precisamos iniciar o nó do cluster quando o servidor iniciar, então criamos uma inicialização ndbd script e a
conexão de inicialização do sistema correspondente:
sql1.test.com / sql2.test.com:
echo 'ndbd' > /etc/init.d/ndbd
chmod 755 /etc/init.d/ndbd
update-rc.
4 Testando MySQL Cluster
Nossa configuração do MySQL Cluster está completa, agora é hora de testá-lo. No servidor de gerenciamento de cluster
(loadb1.test.com), execute o cliente de gerenciamento de cluster ndb_mgm para verificar se os nós do cluster estão conectados:
loadb1.test.com:
ndb_mgm
Você verá isto:
– NDB Cluster — Management Client –
ndb_mgm >
Em Enter show;
na linha de comando
as informações de saída devem ser assim:
ndb_mgm> show
Connected to Management Server em: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)] 2 node( s)
id= 2 @192.168.0.101 (versão: 5.0.19, grupo de nós: 0, mestre)
id=3 @192.168.0.102 (versão: 5.0.19, grupo de nós: 0)
[ndb_mgmd(MGM)] 1 nó(s) )
id=1 @192.168.0.103 (Versão: 5.0.19)
[mysqld(API)] 2 nós
id=4 @192.168.0.101 (Versão: 5.0.19)
id=5 @192.168.0.102 (Versão: 5.0.19)
ndb_mgm>
Se você perceber que todos os seus nós estão conectados. Então tudo corre bem!
Digite
quit;
para sair do console do cliente ndb_mgm.
Agora criamos um banco de dados de teste no nó sql1.test.com, criamos uma tabela de teste e
preenchemos
alguns dados de teste:
mysql -u root -p
CREATE DATABASE mysqlclustertest
USE mysqlclustertest;
;
INSERT INTO testtable () VALUES (1);
SELECT * FROM testtable
quit
(Veja a instrução CREATE acima: as tabelas de todos os bancos de dados que queremos agrupar devem usar ENGINE=NDBCLUSTER!
Se você usar outro ENGINE, então o Clustering irá não funciona!)
O
resultado
de SELECT deve ser:
mysql> SELECT * FROM
testtable
+
——
+
|
mesmo banco de dados no nó sql2.test.com (sim, ainda temos que criá-lo, masos dados serão copiados para sql2.test.com
após a criação da testtable
, porque a testtable está usando ENGINE=NDBCLUSTER):sql2. test. com:
mysql
-u root -p
CREATE
DATABASE mysqlclustertest;
USE
mysqlclustertest
;
—+
| i |
+——+
| 1 |
+——+
1 linha no conjunto (0,04 seg)
Vemos que os dados foram copiados do nó sql1.test.com para o nó sql2.example.com. Agora
inserimos outra linha na testtable:
sql2.test.com:
INSERT INTO testtable () VALUES (2)
;
Agora vamos retornar ao nó sql1.example.com e verificar se podemos ver a linha recém-inserida:
sql1.example.com:
mysql
-u root -p
USE
mysqlclustertest
;
SELECT
*
FROM
testtable
;
| 2 |
+——+
2 linhas no conjunto (0,05 seg)
para que cada nó do cluster tenha os mesmos dados!
Agora vamos ver se paramos o nó 1 (sql1.example.com): execute
sql1.example.com
:
killall ndbd
e verifique
ps aux |
Se você ainda vir processos ndbd, execute
killall ndbd
novamenteaté que todos os processos ndbd sejam finalizados.
Agora em nosso servidor de gerenciamento, verifique o status do cluster (loadb1.example.com):
loadb1.example.com:
ndb_mgm
Digiteshow;
no console ndb_mgm
Você deverá ver isto:
ndb_mgm> show
Connected to Management Server em: localhost; :1186
Configuração do cluster
————————
[ndbd(NDB)] 2 nós
id=2 (não conectado, aceitando conexão de 192.168.0.101)
id=3 @192.168.0.102 (Versão: 5.0 .19 , Grupo de nós: 0, Mestre)
[ndb_mgmd(MGM)] 1 nó(s)
id=1 @192.168.0.103 (Versão: 5.0.19)
[mysqld(API)] 2 nó(s)
id=4 @192.168 .0.101 (Versão: 5.0.19)
id=5 @192.168.0.102 (Versão: 5.0.19)
ndb_mgm>
Veja, o nó sql1.example.com não está conectado.
Digite:
sair;
saia do console ndb_mgm.
Vamos verificar o nó sql2.example.com:
sql2.example.com:
mysql -u root -p
USE
mysqlclustertest;
SELECT * FROM
testtablequit
;
+— —+
| i |
+——+
| 2
|
+——+
2 linhas no conjunto (0,17 seg)
Ok, todos os testes estão normais, agora vamos iniciar o nó sql1.test.com novamente:
sql1 .example .com:
ndbd
5 Como reiniciar o cluster
Agora vamos imaginar que vocêprecisa reiniciar o cluster MySQL
devido à modificação de /var/lib/mysql-cluster/config.ini no nó loadb1.test.com
ou outro nó razões.Para fazer isso, você usa
o cliente de gerenciamento de cluster ndb_mgm no nó loadb1.example.com:
loadb1.test.com
:
ndb_mgm
No console ndb_mgm, você digita
shutdown e
verá uma mensagem como esta:
ndb_mgm> shutdown ;
: Encerramento do cluster iniciado
Nó 2: Encerramento do nó concluído.
2
nós do NDB Clusterforam
encerrados
.
todos os servidores de gerenciamento de cluster foram desligados.
Execute
quit;
saia do console ndb_mgm.
Para iniciar o servidor de gerenciamento de cluster, faça isso em loadb1.test.com:
loadb1.test.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
e em sql1.test.com e sql2.test.com Execute em:
sql1.example.com / sql2.example.com:
ndbd
Ou você acabou de modificar o arquivo /var/lib/mysql-cluster/config.ini em loadb1.test.com:
ndbd –initial
Depois disso, você pode verificar em loadb1.test.com se o cluster foi reiniciado:
loadb1.test.com:
ndb_mgm
No console ndb_mgm, insira
show
para visualizar o status atual do cluster. Pode levar um momento para que todos os nós relatem que estão conectados após a reinicialização.
Digite:
sair;
saia do console ndb_mgm.
6. Configurando o balanceamento de carga
Nosso cluster MySQL agora está completo e você pode começar a usá-lo.
No entanto, não temos umendereço
IP separadopara acessar o cluster
, o que significa que você precisa configurar parte do aplicativo para usar o nó 1 do cluster MySQL (sql1.test.com) e outra parte para usar o nó 2 (sql2. test.com).Claro, todos os aplicativos precisam usar apenas um nó, mas se você
não quiser dividir a carga entre os nós do cluster, qual é o propósito de ter um cluster? Outra questão é:
e se um cluster
?nó cai? Então, os aplicativos que usam este nó de cluster não poderão funcionar.
A solução aqui é configurar um balanceador de carga na frente do cluster MySQL para equilibrar a carga entre cada nó do cluster MySQL.
O balanceador de carga configura um endereço IP virtual compartilhado entre os nós do cluster e todos os seus aplicativos usam esse endereço IP virtual para
acessar o cluster. Se um dos nós ficar inativo, seu aplicativo ainda funcionará porque o balanceador de carga transferirá solicitações
para o outro nó que estiver funcionando corretamente.
Agora, neste exemplo, o balanceador de carga se torna o gargalo. E se esse balanceador de carga quebrar? Portanto, configuraremos
dois balanceadores de carga no modo de instalação (ativo/passivo) ativo/passivo. Isso significa que temos um balanceador de carga ativo e outro em
espera ativa e, quando o ativo ficar inativo, ele se tornará ativo. Cada balanceador de carga usa pulsação para verificar
a atividade do outro balanceador de carga, e o balanceador de carga também usa ldirectord, que é responsável por distribuir o tráfego para os nós do cluster.
Heartbeat e ldirectord estão incluídos no pacote de instalação do Ultra Monkey que iremos instalar.
É muito importante que o kernel do sistema dos nós loadb1.test.com e loadb2.test.com suporte IPVS (IP Virtual Server).
O IPVS realiza balanceamento de carga na camada de transporte do kernel Linux.
6.1 Instale o Ultra Monkey
OK, agora vamos começar: Primeiro habilitamos o IPVS nos nós loadb1.test.com e loadb2.test.com:
loadb1.example.com / loadb2.example.com:
modprobe ip_vs_dh
modprobe ip_vs_ftp
modprobe ip_vs
modprobe ip_vs_lblc
modprobe ip_vs_lblcr
modprobe ip_vs_lc
modprobe
ip_vs_nq
modprobe ip_vs_rr modprobe ip_vs_sed
modprobe ip_vs_sh
modprobe ip_vs_wlc
modprobe ip_vs_wrr
Para habilitar módulos IPVS na inicialização, enumeramos os módulos em /etc/modules:
loadb1.test.com / loadb2.test.com:
vi /etc /
moduleip _vs_dh
ip_vs_ftp
ip_vs
ip_vs_lblc
ip_vs_lblcr
ip_vs_lc
ip_vs_nq
ip_vs_rr
ip_vs_sed
ip_vs_sh
ip_vs_wlc
ip_vs_wrr
Agora editamos /etc/apt/sources.list, adicionamos o ponto de download do Ultra Monkey e então instalamos o Ultra Monkey:
loadb1.test .com/loadb2.test.com:
vi / etc/apt/sources.list
deb http://www.ultramonkey.org/download/3/ sarge main
deb-src http://www.ultramonkey.org/download/3 sarge main
apt-get update
apt-get instale ultramonkey libdbi-perl libdbd-mysql-perl libmysqlclient14-dev
Agora
oUltra
Monkey foi instalado, se você vir o seguinte aviso:
| libsensors3 não funcional
|
libsensors3 não funcionará em seu sistema
|
Se você quiser habilitá-lo, dê uma olhada em “I2C Hardware Sensors
Chip
|
Responda a seguinte pergunta:
Você deseja carregar automaticamente as regras IPVS na inicialização
<- Não
Selecione um método daemon
<- nenhum
O pacote de instalação libdbd-mysql-perl que acabei de instalar não funciona no MySQL 5 (estamos em. MySQL Cluster usando MySQL 5),
então instalamos o pacote de instalação DBD::mysql Perl mais recente:
loadb1.test.com / loadb2.test.com:
cd /tmp
wget
tar xvfz DBD-mysql-3.0002.tar.gz
cd DBD- mysql -3.0002
perl Makefile.PL
make
make install
Devemos primeiro habilitar o encaminhamento de pacotes:
loadb1.example.com / loadb2.example.com:
vi /etc/sysctl.conf
# Habilita o encaminhamento de pacotesnet.ipv4.ip_forward = 1
6.2 Configurar pulsação ( heartbeat )
Configuramos o heartbeat criando três arquivos (os arquivos de loadb1.test.com e loadb2.test.com devem ser exatamente iguais):
loadb1.test.com / loadb2.test.com:
vi /etc/ha.d /ha .cf
logfacility local0
bcast eth0
mcast eth0 225.0.0.1 694 1 0
auto_failback off
node loadb1
node loadb2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
Lembre-se: você deve listar o nome do nó (este No exemplo, loadb1 e loadb2)
uname -n
Além disso, não precisamos fazer nenhuma modificação neste arquivo.
vi /etc/ha.d/haresources
loadb1
ldirectord::ldirectord.cf
LVSSyncDaemonSwap::master
IPaddr2::192.168.0.105/24/eth0/192.168.0.255
Você deve enumerar um dos nomes de nó de balanceamento de carga (aqui: loadb1) e lista
o endereço IP virtual (192.168.0.105) e o endereço de transmissão (192.168.0.255
vi /etc/ha.d/authkeys
auth 3
3 md5 somerandomstring somerandomstring
são os dois batimentos cardíacos usados por loadb1 e loadb2 para autenticar cada um)
.outro. A senha do daemon.
Defina sua própria senha aqui. Você pode escolher entre 3 métodos de criptografia. Geralmente uso MD5 para criptografia.
/etc/ha.d/authkeys deve ser somente leitura para a conta root. Aqui fazemos isso:
loadb1.test.com / loadb2.test.com:
chmod 600 /etc/ha.d/authkeys
6.3 Configurando ldirectord
Agora vamos crie para ldirectord arquivo de configuração, balanceador de carga:
loadb1.example.com / loadb2.example.com:
vi /etc/ha.d/ldirectord.cf
# Diretivas Globais
checktimeout=10
checkinterval=2
autoreload=no
logfile="local0"
quiescent = sim
virtual = 192.168.0.105:3306
serviço = mysql
real = 192.168.0.101:3306 portão
real = 192.168.0.102:3306 portão
checktype = negociar
login = "ldirector"
passwd = "ldirectorpassword"
banco de dados = "ldirectordb"
request = "SELECT * FROM connectioncheck"
agendador = wrr
Preencha o endereço IP virtual correto (192.168.0.105) e o endereço IP correto do nó do cluster MySQL (192.168.0.101 e 192.168.0.102).
3306 é a porta padrão quando o MySQL está em execução. Também especificamos um usuário MySQL (ldirector) e uma senha (ldirectorpassword), um banco de dados (ldirectordb) e
uma consulta SQL. ldirectord usa essas informações para testar os nós do cluster MySQL para verificar se eles estão sempre disponíveis. A seguir usaremos o usuário ldirector para
criar o banco de dados ldirectordb.
Agora criamos as conexões de inicialização necessárias para o heartbeat e removemos o ldirectord (porque o ldirectord será iniciado pelo heartbeat):
loadb1.test.com / loadb2.test.com:
update-rc.d -f heartbeat remove
update-rc.d heartbeat start 75 2 3 4 5 . stop 05 0 1 6 .
update-rc.d -f ldirectord remove
6.4 Criar banco de dados ldirector
Em seguida, criamos o banco de dados ldirector nos nós do cluster MySQL sql1.test.com e sql2.test.com. Este banco de dados será usado pelo nosso balanceador de carga para verificar
a disponibilidade dos nós do cluster MySQL.
sql1.test.com:
mysql -uroot
-p
GRANTALL
ON ldirectordb.*TO
'ldirector'@'%' IDENTIFICADO POR 'ldirectorpassword'
; =NDBCLUSTER;
INSERT INTO connectioncheck () VALUES (1);
sair
sql2.test.com:
mysql -u root -p
GRANT ALL ON ldirectorb.* TO 'ldirector'@'%' IDENTIFICADO POR 'ldirectorpassword'
;
CREATE DATABASE ldirectordb;
quit
6.4 Preparando nós do cluster MySQL para balanceamento de carga
Finalmente, devemos configurar os nós do cluster MySQL sql1.test.com e sql2.test.com para aceitar o endereço IP virtual 192.168.0.105.
sql1.test.com / sql2.test.com:
apt-get install iproute
Adicione o seguinte conteúdo em /etc/sysctl.conf:
vi /etc/sysctl.conf
# Habilite a configuração da opção arp_ignore
net.ipv4.conf.all . arp_ignore = 1
# Quando uma solicitação arp for recebida em eth0, responda apenas se esse endereço estiver
# configurado em eth0 Em particular, não responda se o endereço estiver
# configurado em lo
net.ipv4.conf.eth0.arp_ignore = 1
#. Idem para eth1, adicione para todas as interfaces ARPing
#net.ipv4.conf.eth1.arp_ignore = 1
# Habilite a configuração da opção arp_announce
net.ipv4.conf.all.arp_announce = 2
# Ao fazer uma solicitação ARP enviada através de eth0 Sempre use um endereço que
# está configurado em eth0 como o endereço de origem da solicitação ARP Se este
# não estiver definido e os pacotes estiverem sendo enviados eth0 para um endereço que está em
# lo e uma solicitação arp for necessária, então o endereço em # lo é necessário. lo será usado
# Como o endereço IP de origem das solicitações arp é inserido no cache ARP no
# destino, isso tem o efeito de anunciar esse endereço
# não é desejável neste caso, pois os endereços em lo no real -. servidores devem
# ser anunciados apenas pelo diretor linux.
net.ipv4.conf.eth0.arp_announce = 2
# Idem para eth1, adicione para todas as interfaces ARPing
#net.ipv4.conf.eth1.arp_announce = 2
sysctl -p
irá adicionar o seguinte parágrafo para /etc/network/interfaces:
sql1.test.com / sql2.test.com:
vi /etc/network/interfaces
auto lo:0
iface lo:0 inet static
address 192.168.0.105
netmask 255.255.255.255
pre - up sysctl -p > /dev/null
ifup lo:0
7. Inicie o balanceador de carga e teste
Agora iniciamos dois gerenciadores de balanceamento de carga:
loadb1.test.com / loadb2.test.com:
/etc/init.d /ldirectord stop
/etc/init.d/heartbeat start
Se você não encontrar erros, será necessário reiniciar cada balanceador de carga agora:
loadb1.test.com / loadb2.test.com:
shutdown -r now
Depois de reiniciar, podemos verificar se ambos carregam os balanceadores funcionam conforme o esperado:
loadb1.test.com / loadb2.test.com:
ip addr sh eth0
O balanceador de carga ativo deve listar o endereço IP virtual (192.168.0.105):
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:16:3e:45:fc:f8 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.103/24 brd 192.168.0.255 escopo global eth0
inet 192.168.0.105/24 brd
O balanceador de carga para
192.168.0.255 o escopo global secundário eth0 passivo (hot standby) deve aparecer da seguinte forma:2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:16:3e:16:c1:4e brd ff:ff:ff :ff:ff:ff
inet 192.168.0.104/24 brd 192.168.0.255 escopo global eth0
loadb1.test.com / loadb2.test.com:
ldirectord ldirectord.cf status
Saída no balanceador de carga ativo:
ldirectord para /etc/ha .d/ldirectord.cf está em execução com pid: 1603
Saída no balanceador de carga passivo:
ldirectord é interrompido para /etc/ha.d/ldirectord.cf
loadb1.example.com / loadb2.example.com:
ipvsadm -L - nOutput
no balanceador de carga ativo:
versão do servidor virtual IP 1.2.1 (tamanho = 4096)
Prot LocalAddress: Port Scheduler Flags
-> RemoteAddress: Port Forward Weight ActiveConn InActConn
TCP 192.168.0.105:3306 wrr
-> 192.168.0.101:3306 Route 1 0 0
-> 192.168.0.102:3306
Saída em Balanceador de carga passivo Route 1 0 0:
IP Virtual Server versão 1.2.1 (tamanho = 4096)
Prot LocalAddress: Port Scheduler Flags
-> RemoteAddress: Port Forward Weight ActiveConn InActConn
loadb1.test.com / loadb2.test.com:
/etc/ ha.d/resource.d/LVSSyncDaemonSwap status do mestre
Saída no balanceador de carga ativo:
mestre em execução
(ipvs_syncmaster pid: 1766)
Saída no balanceador de carga passivo:
mestre parado
(ipvs_syncbackup pid: 1440)
Se todos os seus testes estiverem normais, agora você pode acessar o banco de dados MySQL de outros servidores na mesma rede (192.168.0.x) usando o endereço IP virtual 192.168.0.105:
mysql -h 192.168 .0.105 -u ldirector -p
(Lembre-se: seu cliente MySQL deve ter pelo menos a versão 4.1 ; versões mais antigas não rodarão MySQL5. )
Agora você pode desligar um dos nós do cluster MySQL para testar; você ainda deve conseguir se conectar ao banco de dados MySQL.
8 Notas
Ao executar um cluster MySQL, aqui estão algumas coisas importantes para lembrar:
– Todos os dados estão na memória! Portanto, você precisa de uma grande quantidade de memória nos nós do cluster. Aqui está
a fórmula de cálculo para a capacidade de memória necessária para cada nó:
(Tamanho do banco de dados SizeofDatabase * Número de réplicas NumberOfReplicas * 1.1 ) / Número de nós de dados NumberOfDataNodes
Portanto, se você tiver um tamanho de banco de dados de 1 GB, deverá equipar cada nó com 1,1 GB de memória!
–O nó de gerenciamento de cluster atende qualquer conexão na porta 1186. Isso significa que não é muito seguro, então você deve executar o MySQL Cluster em uma rede separada.