Arquivo da tag: Linux

Migrando do OpenSuse para Debian

Tive que realizar uma pequena migração de OpenSuse para Debian, coisa fácil quando usado o rsync porem os usuario que foram migrados não queriam autenticar no Debian, fui pesquisar o motivo e descobrir que o OpenSuse usa o algoritmo Blowfish para fazer criptografia de senha e o Debian esta no MD5 por padrão. Como a migração do servidores era do Samba não podia simplesmente ignorar os grupos e usuários tive que utilizar o diff e pach para realizar esta migração. Vamos ao passo a passo do trabalho realizado.

1 – Vamos configurar o Debian para utilizar o Blowfish para autenticação no PAM

  • apt-get install libpam-unix2
  • Substituir “pam_unix.so” por “pam_unix2.so” nos seguintes arquivos:
    • /etc/pam.d/common-auth
    • /etc/pam.d/common-account
    • /etc/pam.d/common-session
    • /etc/pam.d/common-password
  • Substituir “md5″ por blowfish no arquivo:
    • /etc/pam.d/common-password

Para a senha de root funcionar você tem que mudar a senha para funcionar perfeitamente com o novo algoritimo de cryp. Porem estava tendo mais um problema, como juntar os arquivos passwd e groups sem dar conflito de ID dos serviços principais do Debian, o jeito foi usar o path como foi falando acima.  Fiz o seguinte codigo abaixo para fazer todo processo do path pois minha intenção e somente ativar o servidor de Backup quando o primario falhar, sim esta ativação tem que ser manual.

#!/bin/bash

echo "Iniciando Samba de backup"
echo "Fazendo bkp dos arquivos importantes /etc/original202/"
mkdir -p /etc/original202/
cp /etc/passwd /etc/original202/
cp /etc/shadow /etc/original202/
cp /etc/group /etc/original202/
echo "Juntando arquivo de passwd para manter usuarios"
cd /tmp
cp /etc/passwd passwd.old
cp /etc/bkp/passwd passwd.new
diff -c passwd.old passwd.new > passwd.patch
patch < passwd.patch
cp passwd.old /etc/passwd
cp /etc/shadow shadow.old
cp /etc/bkp/shadow shadow.new
diff -c shadow.old shadow.new > shadow.patch
patch < shadow.patch
cp shadow.old /etc/shadow
cp /etc/group group.old
cp /etc/bkp/group group.new
diff -c group.old group.new > group.patch
patch < group.patch
cp group.old /etc/group

Linux: Alta Disponibilidade

Vamos supor que você tem um servidor de arquivo com Linux, ou um servidor Web muito importante para sua empresa que jamais pode ficar fica indisponível, como resolver este problema ?

A resposta disso esta neste tutorial bastante básico de alta disponibilidade entre 2 servidores, vamos usar a distro Ubuntu Server 8.04 e os softwares:

  • heartbeat – responsável pela alta disponibilidade
  • drbd – responsável pela a “sincronização” de dados entre os servidores

Primeiro coisa é a escolha dos hardware para seus servidores, eu aconselho que as 2 maquinas sejam idênticas ate mesmo para não ter perda de desempenho caso a maquina principal pare de funcionar, caso não de para ter as 2 maquinas idênticas uma coisa é importante é obrigatório, que o espaço para os dados sejam de tamanhos idênticos (exemplo: partição, hd, LVM) senão o DRBD não irar funcionar corretamente, falando nisso o que seria o DRBD,como ele funciona ?

Bom o DRBD seria como um raid-1, porem pela a rede do computador, tudo que escreve num computador é automaticamente escrito no outro, porem somente um computador tem acesso aos dados.

 

Vamos supor que para a maquina 1 você tenha dado o nome de “node1″ e para a maquina 2 “node2″. Para instalação é simples, execute nas 2 maquinas:

  • aptitude update
  • aptitude install drbd8-utils

Editar o arquivo /etc/drbd.conf nas 2 maquina:

global {
usage-count yes;
}
common {
protocol C;
}
resource dados {
on node1 {
device /dev/drbd1;
disk /dev/sda3;
address 192.168.0.250:7789; #IP DA MAQUINA
meta-disk internal;
}
on node2 {
device /dev/drbd1;
disk /dev/sda3;
address 192.168.0.251:7789; #IP DA MAQUINA
meta-disk internal;
}
}

 

 

Podem reparar que o sda3 tem o mesmo tamanho e não pode ter nenhum sistema de arquivo neles

Lembrando de mudar os campos “address” para o IP de cada maquina, depois disso vamos executar os seguintes comandos:

  • drbdadm create-md dados
  • /etc/init.d/drbd restart

Execute no node1:

  • drbdadm — –overwrite-data-of-peer primary dados

agora e esperar os nodes syncronizares, para ver como anda: cat /proc/drbd

version: 8.0.11 (api:86/proto:86)
GIT-hash: b3fe2bdfd3b9f7c2f923186883eb9e2a0d3a5b1b build by phil@mescal, 2008-02-12 11:56:43

1: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
ns:2670316 nr:0 dw:0 dr:2678496 al:0 bm:162 lo:1 pe:5 ua:256 ap:0
[========>...........] sync'ed: 46.6% (2998/5606)M
finish: 0:08:31 speed: 5,960 (6,448) K/sec
resync: used:2/31 hits:166982 misses:164 starving:0 dirty:0 changed:164
act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0

Apos terminar e hora de formatar a partição, eu escolhi ext3 mas a escolha fica por conta sua

  • mkfs.ext3 /dev/drbd1

Duvidas sobre os paramentos: www.drbd.org/docs/about/

Agora vamos instalar o heartbeat, mas antes o que seria o heartbeat ?  heartbeat é responsável por verificar se os nodes estao funcionando caso o node principal saia do ar ele levanta os serviços no node secundário sem nenhuma interversão do usuário. Para instalar nos 2 nodes é simples:

  • aptitude install heartbeat-2

Apos disso vamos criar o arquivo de configuração /etc/ha.d/ha.cf com o seguinte conteúdo

debugfile /var/log/ha-debug
bcast eth0 #INTERFACE QUE AS MAQUINAS ESTÃO LIGADAS
keepalive 2
warntime 10
deadtime 10
initdead 15
auto_failback off
respawn hacluster /usr/lib/heartbeat/ipfail
ping 192.168.1.250 192.168.1.251 #IP DAS MAQUINAS
node node1
node node2

Criar também o arquivo /etc/ha.d/authkeys

auth1
1 md5 suafrasesecreta

Criar tambem o arquivo /etc/ha.d/haresources, o mais importante, com o seguinte conteúdo

node1  Ipaddr::192.168.0.10/24/eth0 drbddisk::dados Filesystem::/dev/drbd1::/dados apache2

com este arquivo e bastante interessante e formado da seguinte forma:

<Nome do node Master> <serviços>

serviço são buscado no /etc/ha.d/resource.d/ ou no /etc/init.d/ o arquivo deve ser basicamente neste estilo

#/bin/bash

case "$1" in
start)
# Programa a ser iniciado
;;
stop)
# Comando para ser parado
;;
status)
# Comando para mostrar Status
;;
esac

Estes arquivos tem quer ser IDÊNTICOS nos 2 servidores. Vamos iniciar o heartbeat

  • /etc/init.d/heartbeat start

Duvidas no parâmetros: www.linux-ha.org

Como irar funcionar isso tudo, bastante simples, node1 esta no poder respondendo o serviço no IP 192.168.0.10, mas de repente sua fonte queima é desligava a maquina, em menos de 1 minuto o node2 irar responder pelo o serviço e os usuários nem vão perceber a queda do serviços.

Tenho que comentar umas coisas importante que não falei ao longo do tutorial, a maquina que usei somente tinha uma interface de rede por isso usei eth0 em todas as configurações, mas o mais ideal é você utilizar 2 interfaces de rede para interligar os servidores. Como você pode imagina a carga de sync entre o DRBD é muito grande e assim você evitar gargalos na rede, então você teria que somente mudar o arquivo /etc/ha.d/ha.cf de eth0 para ethX e os IPS para a sua solução.

No arquivo /etc/ha.d/haresources no parâmetro “Ipaddr::192.168.0.10/24/eth0″ você vai colocar o IP e interface que o serviço irar responder e mudar de Ipaddr para Ipaddr2 pois o Ipaddr cria uma alias da interface(eth1:0) é o Ipaddr2 levanta o IP realmente na placa. Qualquer duvidas somente deixar um comentário.

Convertendo Imagem de CD

Infelizmente o Linux somente consegue acessar conteúdo .iso, se por alguma razão você tem alguma imagem de cd em outro formato e quer ver o conteúdo deste cd no Linux, seus problemas acabaram :P
http://wiki.linuxquestions.org/wiki/CD_Image_Conversion
Neste site você vai achar todas as opções de conversão possível para Linux, talvez as mais famosas seja a mdf2iso, bin2iso. Para quem não sabe e possível acessar o conteúdo de uma .iso no Linux usando o seguinte comando
# mount -t iso9660 minhaimagem.iso /mnt/cdrom -o loop
obs: no link ele fala muito em compilar programas, mas lembre de conferir se não existe o programa desejado no repositório de sua distribuição Linux

Toy Story 3 vem ai.

Bem acabei de ver que vão lançar mais um filme do Toy Story, mas o que isso tem a ver com linux, informática ou Apple??

Para quem não sabem o Debian tem seus “codenames” baseados no filme Toy Story, algumas dos nomes já utilizados:

  • Buzz – release 1.1
  • Rex – release 1.2
  • Bo – releases 1.3.x
  • Hamm – release 2.0
  • Slink – release 2.1
  • Potato – release 2.2
  • Woody – release 3.0
  • Sarge – release 3.1
  • Etch – release 4.0

E a próxima versão sera a Lenny que esta no testing, o projeto Debian começou a utilizar nome na versão 1.1, pois Bruce Perens tomava a liderança do Projeto de Ian Murdock e Bruce trabalhava na Pixar, a companhia que produziu o filme. Para quem não sabe foi Ian Murdock que fundou o projeto Debian e o nome deste projeto vem do nomes , Ian Murdock, e sua esposa, Debra.

Bom sobre o filme e somente em 2010, é bom que não faltara nome para o projeto Debian :P

Links:
Debian
Blog do Ian Murdock
Toy Store 3