terça-feira, 14 de julho de 2009
quinta-feira, 30 de abril de 2009
Confugurando heartbeat no RHEL 5
baixar os pacotes em http://download.opensuse.org/repositories/server:/ha-clustering/
OBS: É importante salientar que os ip´s fixos servem apenas de comunicação entre o heartbeat.
Cenário:
Exemplo:
Imagine que seu Servidor Activo com o ip fixo 172.16.1.60 esteja respondendo no dns para http://aplicacao.com.br
Agora iremos configurar o heartbeat para que sua aplicacao responda para o ip virtual 172.16.1.63 do Servidor Standby quando o servidor Activo cair.
Os pacotes são:
heartbeat-2.99.2-8.1.x86_64.rpm
heartbeat-common-2.99.2-8.1.x86_64.rpm
heartbeat-resources-2.99.2-8.1.x86_64.rpm
libheartbeat2-2.99.2-8.1.x86_64.rpm
Devemos levar em consideração algumas dependências que serão necessárias:
para instalar use yum install nome do pacote..
Depois de baixar os pacotes no endereço acima vamos instalar com o seguinte comando:
rpm -ivh heartbeat-*, um por um.
OK agora com os pacotes instalados iremos iniciar as configurações.
De acordo com as instruções fornecidas na documentação do heartbeat em http://www.linux-ha.org/, é necessário criar os arquivo abaixo em /etc/ha.d/.
authkeys
ha.cf
haresources
Mas usaremos os arquivos que vem junto da instalação utilizando o seguinte comando:
cp /usr/share/doc/packages/heartbeat/ha.cf /etc/ha.d/
cp /usr/share/doc/packages/heartbeat/authkeys /etc/ha.d/
cp /usr/share/doc/packages/heartbeat/haresources /etc/ha.d/
Agora iremos configurar o HeartBeat:
Abra o arquivo ha.cf, observe que as seguintes linhas devem estar descomentadas:
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 5
udpport 694
Se a máquina tiver uma placa de rede somente utilize
bcast eth0 # Linux
Se a máquina tiver duas placas de rede utilize
bcast eth0 eth1 # Linux
Continuando.......
auto_failback on
node nome_do_servidor_na_rede_activo
node nome_do_servidor_na_rede-standby
Abra o arquivo haresources, adicione no final do arquivo:
nome_do_servidor_na_rede_activo IPaddr::172.16.1.63/24/eth0 nome_do_serviço exemplo: httpd ou tomcat5.
É importante saber que se você colocar o nome_do_serviço o heartbeat que vai gerenciar de inicializa-lo. No meu caso eu já deixei os serviços para ativar na inicialização, assim não utilizando o heartbeat para iniciá-los.
Abra o arquivo authkeys e descomente as seguintes linhas:
auth 1
1 crc
Iremos alterar a permissão do arquivo:
chmod 600 authkeys
Agora iremos adicionar no /etc/hosts a identificação do servidor com o ip fixo:
vim /etc/hosts
172.16.1.60 nome_do_servidor_ativo
Agora iremos instalar o heartbeat da mesma forma que instalamos no primeiro servidor e copiar para o Servidor Standby os mesmos arquivos:
authkeys
ha.cf
haresources
Iremos deixar como está as configurações do arquivo.
Apenas de a permissão para o arquivo chmod 600 authkeys.
Agora iremos adicionar o heartbeat na inicialização do cron dos dois servidores.
adicione com o comando
chkconfig --add heartbeat
chkconfig heartbeat on
Verifique se o serviço está ativo e ligado
chkconfig --list heartbeat
heartbeat 0:não 1:não 2:sim 3:sim 4:sim 5:sim 6:não
Pronto agora é hora de startar os serviços nos dois servidores.
service heartbeat start
a seguinte mensagem será exibida:
[root@projudi-backup ha.d]# service heartbeat start
logd is already running
Starting High-Availability services:
2009/05/04_06:00:16 INFO: Resource is stopped
[ OK ]
Pronto serviço ativo.
Veja no Servidor Standby se o hearbeat levantou o ip virtual da maquina.
[root@servidor_standby ~]# ifconfig
eth0 Link encap:Ethernet Endereço de HW 00:50:56:A2:75:00
inet end.: 172.16.1.60 Bcast:172.16.1.255 Masc:255.255.255.0
endereço inet6: fe80::250:56ff:fea2:7500/64 Escopo:Link
UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1
RX packets:4117 errors:0 dropped:0 overruns:0 frame:0
TX packets:2751 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:1000
RX bytes:705766 (689.2 KiB) TX bytes:1030616 (1006.4 KiB)
Endereço de E/S:0x1400 Memória:f4820000-f4840000
eth0:0 Link encap:Ethernet Endereço de HW 00:50:56:A2:75:00
inet end.: 172.16.1.63 Bcast:172.16.1.255 Masc:255.255.255.0
UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1
Endereço de E/S:0x1400 Memória:f4820000-f4840000
lo Link encap:Loopback Local
inet end.: 127.0.0.1 Masc:255.0.0.0
endereço inet6: ::1/128 Escopo:Máquina
UP LOOPBACKRUNNING MTU:16436 Métrica:1
RX packets:2198 errors:0 dropped:0 overruns:0 frame:0
TX packets:2198 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:0
RX bytes:4078240 (3.8 MiB) TX bytes:4078240 (3.8 MiB)
Parabéns servidores configurado e funcionando.
Agora é só desligar o servidor activo e ver se o standby assumiu o serviço do mesmo.
e bola pra frente....
Para maiores informações, veja o log de saida habilitado no arquivo ha.cf
tail -f /var/log/ha-log
Bibliografia
http://www.linux-ha.org/
http://under-linux.org/f69822-como-utilizar-o-heartbeat
Qualquer dúvida estou a disposição.
segunda-feira, 27 de abril de 2009
Replicação mysql
Replicação mysql
VERSÃO: Server version: 5.0.45-log Source distribution:
Cenário:
Configurando o Master:
1º passo: logue no servidor que será o master:
2º passo: após logar execute: mysql -u usuario para ir ao prompt:
3º passo: crie o usuario com o seguinte comando.
mysql> GRANT REPLICATION SLAVE ON *.* TO 'usuario'@'%.mydomain.com' IDENTIFIED BY 'senha';
4º passo: agora iremos configurar o my.cnf atribuindo as seguintes configurações:
[mysqld]
log-bin=mysql-bin
server-id=1
binlog-do-db=especifique a tabela que você quer fazer a sincronização
OBS: Se a configuração do seu banco for InnoDB, para garantir a durabilidade e consistência dos dados use:
adicione as linhas no my.cnf , ficando assim:
[mysqld]
log-bin=mysql-bin
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
binlog-do-db=test
Configurando o Slave:
1º passo: agora iremos configurar o my.cnf atribuindo as seguintes configurações:
[mysqld]
server-id=2
Travando as tabelas no servidor Master:
1º passo: agora iremos travar as tabelas no servidor Master coma o seguinte comando
2º passo: mysql -u usuário para ir ao prompt:
3ºpasso: OBS lembrando que o banco é InnoDB deve-se executar o comando COMMIT após
executar o comando abaixo:
mysql> FLUSH TABLES WITH READ LOCK;
mysql> COMMIT;
4º passo: restart o servidor mysql do Master
Testanto a ativação no servidor Master:
1º passo: mysql -u usuário para ir ao prompt:
2ºpasso: Use o comando SHOW MASTER STATUS para ver o binary log corrente que foi ativado no master:
mysql > SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
Agora iremos gerar um backup do banco que está no Master e importá-lo no Slave:
1º passo: execute no console o seguinte comando abaixo:
mysqldump --all-databases --lock-all-tables > dump.sql
OU
mysqldump -u usuario nome_do_bando > dump.sql
2º passo: execute no console do servidor Slave seguinte comando abaixo:
mysqldump -u usuario nome_do_banco < dump.sql
3º passo: execute no console do servidor Master o seguinte comando abaixo:
Efetuando a comunicação do Slave com o Master:
1º passo: mysql -u usuário para ir ao prompt:
CHANGE MASTER TO
MASTER_HOST='ip do servidor master',
MASTER_USER='o usuário criado na configuração do master',
MASTER_PASSWORD='a senha informada para o usuário na configuração do master',
MASTER_LOG_FILE='mysql-bin.003',coloque aqui o nome do file do bin log
OBS: na sessão do manual acima: Testanto a ativação no servidor Master:
mysql > SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
MASTER_LOG_POS=73; coloque aqui a posição do log conforme mostrado acima.
Agora iremos iniciar o mysql slave no servidor Slave:
1º passo: execute no console do servidor Slave o seguinte comando abaixo:
mysql> START SLAVE;
Pronto, a sua replicação já está funcionando: basta executar o comando abaixo no servidor Slave.
[root@localhost ~]# mysql -u root
mysql> show slave status\G
O retorno será este.
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.16.1.60
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 860
Relay_Log_File: mysqld-relay-bin.000003
Relay_Log_Pos: 997
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 860
Relay_Log_Space: 997
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.00 sec)
Observe as linhas em vermelho.
Testando a replicação dos dados:
Insira qualquer registro ou até mesmo crie uma tables na banco de dados sincronizado, no servidor MASTER.
Vá agora no servidor SLAVE e veja se atualizou a tabela criada no servidor master.
Se tiver atualizado BINGO.
Parabéns você acabou de criar a sua replicação do Mysql;
terça-feira, 10 de março de 2009
Rsync entre servidores Linux + Crontab
Servidor 1 onde roda sua aplicação ou arquivos preciosos:)
Servidor 2 onde você deseja efetuar o back-up.
1º Passo:
Temos que habilitar a relação de confiança ssh entre os dois servidores (Secure SHell).
Fazendo a relação de confiança :

2º Passo:
Devemos criar uma chave criptografada entre os dois servidores, para efetuar a autenticação do ssh sem solicitar a senha.
- execute os seguintes passos:
No console do Servidor 1 digite:
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
40:2b:17:59:17:26:ae:ee:aa:b7:66:cb:2c:ed:17:a8 root@svn-projudi
The key's randomart image is:
+--[ DSA 1024]----+
| ooo +. |
| ..+ + |
| . + . |
| o o |
| .. S |
| ... |
| o .. |
| Eo=.. |
| .BB=. |
+-----------------+
- Observe que gerou duas chaves:
root@svn-projudi:~/.ssh# ls
id_dsa id_dsa.pub
root@svn-projudi:~/.ssh#
- Agora você vai copiar a chave publica para o Servidor 2 com a seguinte linha:
OBS: se não existir a pasta authorized_keys crie ela, mkdir authorized_keys.
- Em seguida teremos que logar no Servidor 2 e atribuir algumas permissões para os seguintes arquivos:
chmod 600 ~/.ssh/authorized_keys
- Para ver o conteudo do arquivo criptografado digite.
Pronto, agora iremos criar o scrip shell para usar o Rsync
Crie o um arquivo com a seguinte sintaxe vim script_rsync.
Adicione o seguinte conteúdo ao arquivo.
#!/bin/sh
######################################################################
#Descreva o que o script vai fazer para documentar...
######################################################################
TREINAMENTO="ip do seu servir origem"
echo "Iniciando copia dos arquivos" > /var/log/copiaTemporal.log
echo "##########Inicio##################"
rsync -Cravzp --progress --partial origem_dos_arquivos_ root@$servidor2:/ >> /var/log/copiaTemporal.log
echo "Finalizando copia dos arquivos" >> /var/log/copiaTemporal.log
echo "############Fim##################"
Pronto agora o seu script esta pronto. Agora vamos agendar a execução do script no servidor 1
Para maiores informações sobre o CRONTAB, digite crontab -man.
Após configurar o crontab, restart o serviço:
[root@projudi-homologacao /]# service crond restart
Pronto agora seu rsync está ativado e funcionando.
Para ter certeza verifique se o log em /var/log/copiaTemporal.log esta sendo gerado.