Ir para o conteúdo
ou

Software livre Brasil

Tela cheia
 Feed RSS

Alexos Core Labs

27 de Maio de 2009, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.
Licenciado sob GNU FDL

Bacula: Gestão de Backup Distribuida – Prática

16 de Março de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Termos

Existe uma vasta terminologia usada no Bacula para maiores informações acesse Terminology

Ele é um sistema totalmente distribuido sendo formado por 3 daemons ( Director, Storage e FileDaemon ). Os 2 primeiros não necessariamente precisam estar em máquinas separadas, enquanto que o FD precisa ser instalado em todas as máquinas clientes.

Bacula Director

Responsável por supervisionar todas as operações de backup, restauração, verificação e as operações dos arquivos.

Bacula Storage

Responsável pelo armazenamento, leitura e escrita em fita ou outros meios de armazenamento, por exemplo arquivos.

Bacula File Daemon

Este é o cliente do Bacula.

Instalação e Configuração Básica

Agora apresentarei de uma forma bem simples a instalação e configuração do Bacula, recomendo uma profunda leitura da documentação. O bom entendimento de sua infra-estrutura e da política adotada facilitará muito na configuração e manutenção da rotina de backup.

No Debian a instalação desta ferramenta é bastante simples. Execute o comando abaixo para instalar todos os daemons:

aptitude install bacula-director bacula-sd bacula-fd

Configurando o Bacula Director

Edite o arquivo /etc/bacula/bacula-dir.conf

Director { # define myself
Name = backup-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = “/etc/bacula/scripts/query.sql”
WorkingDirectory = “/var/lib/bacula”
PidDirectory = “/var/run/bacula”
Password = “Console/iA6pwbPuT2zUt/hbyE2123123132123″ # Console password
Messages = Daemon
DirAddress = 123.123.123.123
}

## Clients

Job {
Name = “Job-server-01″
Client = server-01-fd
Type = Backup
FileSet = “Server 01 Set”
Schedule = “PeriodicidadeSemanal”
Messages = Standard
Pool = Default
Full Backup Pool = “Full_server-01″
Differential Backup Pool = “Diff_server-01″
Write Bootstrap = “/var/lib/bacula/server-01_new.bsr”
}

## Backup Catalog

Job {
Name = “BackupCatalog”
Client = server-2-fd
Type = Backup
FileSet=”Catalog”
Schedule = “PeriodicidadeSemanalCatalog”
Messages = Standard
Storage = Storage-Server2
Pool = “Catalog_Backup”
RunBeforeJob = “/etc/bacula/scripts/make_catalog_backup bacula”
RunAfterJob = “/etc/bacula/scripts/delete_catalog_backup”
Write Bootstrap = “/var/lib/bacula/BackupCatalog_new.bsr”
}

## Restore Job

Job {
Name = “Server-01_Restore”
Type = Restore
Client = server-01-fd
FileSet = “Server 01 Set”
Pool = Default
Messages = Standard
Where = “/var/bacula/restore/b_server-01″
Bootstrap = “/var/lib/bacula/server-01_new.bsr”
}

# Backup Files

FileSet {
Name = “Server 01 Set”
Include {
Options {
signature = MD5
compression = GZIP
}
File = /etc
File = /var/bkpdb
}
Exclude {
File = /tmp
}
}

#Schedules

Schedule {
Name = “PeriodicidadeSemanal”
Run = Level=Full on sun at 23:00
Run = Level=Differential on mon-sat at 23:00
}

Schedule {
Name = “PeriodicidadeSemanalCatalog”
Run = Level=Full on sun at 07:00
Run = Level=Differential on mon-sat at 07:00
}

# Clients FD

Client {
Name = Server-1-fd
Address = 123.123.123.123
FDPort = 9102
Catalog = MyCatalog
Password = “Nlw2vp555z4vepasdasdasddasdda”
File Retention = 30 days
Job Retention = 30 days
Autoprune = yes
}

#Storage

Storage {
Name = Storage-Server2
Address = 123.13.12.3123 # N.B. Use a fully qualified name here
SDPort = 9103
Password = “Nlw2vp555z4veqweqweqweqwY”
Device = FileStorage
Media Type = File
}

#Pool Server 01

Pool {
Name = Full_Server-01
Pool Type = Backup
Storage = FullStorage
Maximum Volume Jobs = 1
Maximum Volume Bytes = 6g
Recycle = yes
AutoPrune = yes
Volume Retention = 2 weeks
Maximum Volumes = 5
LabelFormat = “F_server-01_${Year}-${Month}-${Day}_${Hour}.${Minute}.${Second}”
}

Pool {
Name = Diff_server-01
Pool Type = Backup
Storage = DiffStorage
Maximum Volume Jobs = 1
Maximum Volume Bytes = 6g
Recycle = yes
AutoPrune = yes
Volume Retention = 2 weeks
Maximum Volumes = 7
LabelFormat = “D_server-01_${Month}-${Day}”
}

Post to Twitter Tweet This Post



Bacula: Gestão de Backup Distribuida – Prática ( cont. )

16 de Março de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Agora iremos configurar o Bacula Storage e o File Daemon

Edite o arquivo /etc/bacula/bacula-sd.conf

Storage { # definition of myself
Name = backup-sd
SDPort = 9103 # Director’s port
WorkingDirectory = “/var/lib/bacula”
Pid Directory = “/var/run/bacula”
SDAddress = 123.122.123.123
}

# List Directors who are permitted to contact Storage daemon

Director {
Name = backup-dir
Password = “Nlw2vp555z4vep0dasdads”
}

# Restricted Director, used by tray-monitor to get the
# status of the storage daemon

Director {
Name = backup-mon
Password = “Mon/GxVW6dfndasdasdsadasd”
Monitor = yes
}

# Devices supported by this Storage daemon
# To connect, the Director’s bacula-dir.conf must have the
# same Name and MediaType.

Device {
Name = FileStorage
Device Type = File
Media Type = File
Archive Device = /backup2/storage
}

Edite o arquivo /etc/bacula/bacula-fd

# List Directors who are permitted to contact this File daemon

Director {
Name = “backup-dir”
Password = “Nlw2vp555z4vep0viaBpeAsdads”
}

# Restricted Director, used by tray-monitor to get the
# status of the file daemon

Director {
Name = “backup-mon”
Password = “Mon/GxVW6dfnO+EVBPpkdasdsaP”
Monitor = yes
}

# “Global” File daemon configuration specifications

FileDaemon { # this is me
Name = Server-2-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/lib/bacula
Pid Directory = /var/run/bacula
Maximum Concurrent Jobs = 20
FDAddress = 123.123.123.123
Heartbeat Interval = 15 seconds
}

# Send all messages except skipped files back to Director
Messages {
Name = Standard
director = backup-dir = all, !skipped, !restored

Com todos os arquivos devidamente configurados inicie os serviços

invoke-rc.d bacula-director restart

invoke-rc.d bacula-sd restart

invoke-rc.d bacula-fd restart

E conecte-se ao Bacula Console

bconsole

Connecting to Director 123.123.123.123:9101
1000 OK: backup-dir Version: 2.4.4 (28 December 2008)
Enter a period to cancel a command.
*

Aparecendo a tela acima tudo está funcionando perfeitamente. Para obter informações sobre os comandos digite help.

Existe uma gama de ferramentas gráficas para gestão do bacula, posso citar o bacula-console-qt. Para ser sincero eu não utilizo ferramentas gráficas. O Bacula Console me atende muito bem nas tarefas diárias.

Backup dos SGBDs

Como informei anteriormente existe uma limitação do Bacula para fazer cópias de segurança de SGBDs porém não recomendo o backup “a quente” das bases. Todos os SGBDs do mercado possuem ferramentas que geram o dump do banco sem afetar a integridade dos dados. Seguem 02 scripts que utilizo para gerar as cópias tanto do Postgresql quanto do MySQL:

MySQL

Este script é de autoria do meu colega Marcelo Dultra, analista de segurança da FTC.

O arquivo de configuração /etc/bkpmysql.cfg contém as infomações necessárias para a realização do backup

Nome do Job:Nome do dump:Diretório destino:Usuário do banco:senha:Arquivo log:email envio alerta

Esse é o script

#!/bin/bash

##########################################################################
# Definicao de Variaveis #################################################
##########################################################################

arqcontrole=’/etc/bkpmysql.cfg’

if [ -z "${arqcontrole}" ]
then
echo “${0} – Erro Fatal: Arquivo de Configuracao nao existe!”
exit 1
fi

titbkp=`cat ${arqcontrole}|cut -d: -f1`
arqbkp=`cat ${arqcontrole}|cut -d: -f2`
adibkp=`cat ${arqcontrole}|cut -d: -f3`
usebkp=`cat ${arqcontrole}|cut -d: -f4`
senbkp=`cat ${arqcontrole}|cut -d: -f5`
logbkp=`cat ${arqcontrole}|cut -d: -f6`
usrbkp=`cat ${arqcontrole}|cut -d: -f7`
dia=`date ‘+%u’`

msg_erro()
{
echo “ATENCAO ADMINISTRADOR! ” > /tmp/bkpmysql.msg
echo “Erro no Backup da Base de Dados Horde – ${serbkp}!” >> /tmp/bkpmysql.msg
echo ${msg} >> /tmp/bkpmysql.msg
mail ${usrbkp} -s “${serbkp} – Erro Backup DB Horde” < /tmp/bkpmysql.msg
}

echo "`date '+%d/%m/%y - %H:%M:%S -'` INICIO DA ROTINA" > ${logbkp}

case ${dia} in
1) sem=”Segunda”;;
2) sem=”Terca”;;
3) sem=”Quarta”;;
4) sem=”Quinta”;;
5) sem=”Sexta”;;
6) sem=”Sabado”;;
7) sem=”Domingo”;;
*) msg=”Dia da Semana nao definido”
msg_erro
echo “`date ‘+%d/%m/%y – %H:%M:%S -’` Erro! Dia da Semana Invalido!” >> ${logbkp}
exit 1
esac

if [ -z "${titbkp}" -o -z "${arqbkp}" -o -z "${adibkp}" -o -z "${usebkp}" -o -z "${senbkp}" -o -z "${logbkp}" -o -z "${usrbkp}" -o -z "${sem}" ]
then
echo “`date ‘+%d/%m/%y – %H:%M:%S -’` Parametros Invalidos!” >> ${logbkp}
msg=”`date ‘+%d/%m/%y – %H:%M:%S -’` Parametros Invalidos!”
msg_erro
exit 1
fi

cd ${adibkp}

echo “`date ‘+%d/%m/%y – %H:%M:%S -’` Gerando dump do banco …” >> ${logbkp}

mysqldump -u ${usebkp} -p${senbkp} –add-locks –add-drop-table –all-databases –flush-logs –disable-keys –result-file=${arqbkp}.${sem} 2>> ${logbkp}

if [ ${?} -eq 0 ]
then
echo “`date ‘+%d/%m/%y – %H:%M:%S -’` Dump Gerado!” >> ${logbkp}
else
echo “`date ‘+%d/%m/%y – %H:%M:%S -’` Erro na realizacao do Backup!” >> ${logbkp}
msg=”`date ‘+%d/%m/%y – %H:%M:%S -’` Erro na realizacao do Backup!”
msg_erro
exit 1
fi

echo “`date ‘+%d/%m/%y – %H:%M:%S -’` Compactando arquivo do dump …” >> ${logbkp}

gzip -f ${arqbkp}.${sem}

if [ ${?} -eq 0 ]
then
echo “`date ‘+%d/%m/%y – %H:%M:%S -’` Arquivo Compactado!” >> ${logbkp}
else
echo “`date ‘+%d/%m/%y – %H:%M:%S -’` Erro na compactacao!” >> ${logbkp}
msg=”`date ‘+%d/%m/%y – %H:%M:%S -’` Erro na compactacao!!”
msg_erro
exit 1
fi

echo “`date ‘+%d/%m/%y – %H:%M:%S -’` FIM DA ROTINA DE BACKUP …” >> ${logbkp}

exit

Postgresql

#!/bin/bash
DATE=`date +”%Y-%m-%d”`
HOSTNAME=`hostname`
DIR=/var/bkpdb
d=rtdb
su postgres -c “pg_dump $d | gzip -c > $DIR/$d.$HOSTNAME.$DATE.out.gz”

Caso de uso – Colivre

A Colivre utiliza o Bacula para fazer o backup de cerca de 8 servidores espalhados pelo globo. A política adotada é de cópias Full todos os domingos e cópias diferencias de segunda a sábado.

Num teste de restore realizado semanalmente, foram restaurados cerca de 8 GB em 2 min. isso porque os servidores estavam na mesma rede. Já o restore de um servidor remoto com o mesmo tamanho de arquivo levou cerca de 10 min.

Os arquivos ( volumes ) são gravados em 03 storages ( partições ) diferentes, com a reciclagem eles ocupam menos de 40% dos discos.

Alcançamos esse nível de gerenciamento de backup com muito estudo, paciência e análise. Levando cerca de 15 dias, periodo de 20/12 a 03/01, para deixar a rotina redonda, só é preciso monitorar diariamente os logs e de vez em quando fazer uma intervenção.

O Bacula tem se mostrado uma ferramenta madura, escalável, segura e confiável tranquilizando minhas poucas noites de sono.

Leituras Obrigatórias

* Bacula Main Reference Guide PDF e HTML
* Console and Operators Guide PDF e HTML
* Problem Resolution Guide PDF e HTML
* Utility Programs PDF e HTML

Post to Twitter Tweet This Post



Chamada de Trabalhos FLISOL 2010 – Salvador/BA

15 de Março de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

FLISOL_2010

Nós da comunidade de Software Livre Bahia convidamos a todos para enviarem suas propostas de palestras para o FLISOL 2010, as propostas devem ser encaminhadas até o dia 03 de abril de 2010 para flisol2010@gmail.com com as seguintes informações:


* Título da palestra:

* Nome do palestrante:

* Público Alvo:

* Resumo:

* Mini-Currículo:

Maiores Informações:

Flisol Brasil

Flisol Salvador

Post to Twitter Tweet This Post



Feliz Dia da Mulher

8 de Março de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

Post to Twitter Tweet This Post



Cron-apt – Otimizando a atualização dos servidores Debian

4 de Março de 2010, 0:00, por Software Livre Brasil - 0sem comentários ainda

A atualização dos servidores pode tornar-se uma tarefa chata quando você tem repetir está mesma ação diversas vezes. Para automatizar está tarefa uso o script cron-apt. Como o nome já diz ele agenda a execução do apt-get ou aptitude para atualizar os pacotes de seu sistema

Segue aqui um pequeno how-to para implantação desta ferramenta que tem sido uma mão na roda no meu dia a dia.

NOTA: A atualização de pacotes automatizada não é recomendada para as versões testing e unstable do Debian. Mesmo na versão stable use por sua conta e risco.

Instale o pacote cron-apt

sudo aptitude install cron-apt

Edite o arquivo /etc/cron-apt/config descomentando as seguintes linhas:

APTCOMMAND=/usr/bin/aptitude

MAIL=”/var/log/cron-apt/mail”

Agora descomente e edite as seguintes linhas deste mesmo arquivo

MAILTO=”INFORME SEU EMAIL AQUI”

De
MAILON=”error”

Para
MAILON=”always”

De
SYSLOGON=”upgrade”

Para
SYSLOGON=”always”

De
DEBUG=”output”

Para
DEBUG=”always”

Por padrão ele apenas baixa os pacotes sem instalá-los usando a opção dist-upgrade. Aqui mostro como mudar está ação que não é muito interessante para servidores pois a opção dist-upgrade pode apagar pacotes importantes.

Edite o arquivo /etc/cron-apt/actions.d/3-download alterando a seguinte linha

De
dist-upgrade -d -y -o APT::Get::Show-Upgraded=true

Para
safe-upgrade -y -o APT::Get::Show-Upgraded=true

O cron-apt está agendado para ser executado às 04 da manhã todos os dias. Para mudar este agendamento edite a seguinte linha no arquivo /etc/cron.d/cron-apt

0 4 * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt

Eu por exemplo agendo as minhas atualizações para as 23 horas. Então minha configuração fica da seguinte forma:

0 23 * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt


Como informei anteriormente tenha muito cuidado ao usar ferramentas automatizas na gestão dos seus sistemas. Por isso recomendo fortemente a configuração do envio de emails, assim você poderá acompanhar de forma segura todas as ações realizadas por está ferramenta.

Fonte

Post to Twitter Tweet This Post



Tags deste artigo: linux security free software segurança hardening hacking sysadmin