Cluster

50
Cluster Versão 1.0.0

description

Centro de Difusão de Tecnologia e Conhecimento

Transcript of Cluster

ClusterVersão 1.0.0

Sumário

I Sobre essa Apostila 3

II Informações Básicas 5

III GNU Free Documentation License 10

IV Cluster 19

1 O que é Cluster 20

2 Plano de ensino 212.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.2 Público Alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.3 Pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.4 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.6 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.7 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.8 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.9 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3 Lição 1 - Introdução 243.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.2 Um pouco de história . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.3 Tipos de cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.4 Balanceamento de Carga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.5 Porcessamento Distribuído . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.5.1 Lição 2 - Alta disponibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.6 Alta disponibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.7 Disponibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.8 Redundância . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.9 Falha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.10 Erro e Defeito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.11 Failover e Failback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.11.1 Lição 3 - Uma solução para a Alta Disponibilidade . . . . . . . . . . . . . . . 283.12 Uma solução para alta disponibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . 28

1

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

3.13 RAID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.14 DRBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.15 Consistência de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.16 Heartbeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.17 MON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.17.1 Lição 4 - Configurando a rede . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.18 Procurando pelas ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.19 Configurando a rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.19.1 Lição 5 - Compilando o kernel . . . . . . . . . . . . . . . . . . . . . . . . . . 333.20 O kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.21 Compilando o kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.22 Instalando o novo kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.22.1 Lição 6 - Instalação e configuração do DRBD . . . . . . . . . . . . . . . . . . 353.23 DRBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.24 Instalando os pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.25 Instalando o DRBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.26 Configurando o DRBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.27 Entendendo o drbd.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.28 Utilizando o DRBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.29 Interpretando o /proc/drbd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.30 Finalizando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.30.1 Lição 7 - Instalação e configuração do Heartbeat . . . . . . . . . . . . . . . . 423.31 Heartbeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.32 Instalando os pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.33 Instalando o Heartbeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.34 Configurando o Heartbeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.35 Configurando o ha.cf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.36 Configurando o haresources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.37 Configurando o authkeys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.38 Iniciando o Heartbeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.38.1 Lição 8 - Instalação e configuração do MON . . . . . . . . . . . . . . . . . . 463.39 MON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.40 Instalando os pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.41 Instalando o MON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.42 Configurando o MON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.43 Heartbeat.alert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2

Parte I

Sobre essa Apostila

3

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Conteúdo

O conteúdo dessa apostila é fruto da compilação de diversos materiais livres publicados na in-ternet, disponíveis em diversos sites ou originalmente produzido no CDTC (http://www.cdtc.org.br.)

O formato original deste material bem como sua atualização está disponível dentro da licençaGNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seção demesmo nome, tendo inclusive uma versão traduzida (não oficial).

A revisão e alteração vem sendo realizada pelo CDTC ([email protected]) desde outubrode 2006. Críticas e sugestões construtivas serão bem-vindas a qualquer hora.

Autores

A autoria deste é de responsabilidade de Frederico Oliveira de Paula ([email protected]).

O texto original faz parte do projeto Centro de Difusão de Tecnologia e Conhecimento quevêm sendo realizado pelo ITI (Instituto Nacional de Tecnologia da Informação) em conjunto comoutros parceiros institucionais, e com as universidades federais brasileiras que tem produzido eutilizado Software Livre apoiando inclusive a comunidade Free Software junto a outras entidadesno país.

Informações adicionais podem ser obtidas através do email [email protected], ou dahome page da entidade, através da URL http://www.cdtc.org.br.

Garantias

O material contido nesta apostila é isento de garantias e o seu uso é de inteira responsabi-lidade do usuário/leitor. Os autores, bem como o ITI e seus parceiros, não se responsabilizamdireta ou indiretamente por qualquer prejuízo oriundo da utilização do material aqui contido.

Licença

Copyright ©2006, Instituto Nacional de Tecnologia da Informação ([email protected]) .

Permission is granted to copy, distribute and/or modify this document under the termsof the GNU Free Documentation License, Version 1.1 or any later version published bythe Free Software Foundation; with the Invariant Chapter being SOBRE ESSA APOS-TILA. A copy of the license is included in the section entitled GNU Free DocumentationLicense.

4

Parte II

Informações Básicas

5

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Sobre o CDTC

Objetivo Geral

O Projeto CDTC visa a promoção e o desenvolvimento de ações que incentivem a dissemina-ção de soluções que utilizem padrões abertos e não proprietários de tecnologia, em proveito dodesenvolvimento social, cultural, político, tecnológico e econômico da sociedade brasileira.

Objetivo Específico

Auxiliar o Governo Federal na implantação do plano nacional de software não-proprietário ede código fonte aberto, identificando e mobilizando grupos de formadores de opinião dentre osservidores públicos e agentes políticos da União Federal, estimulando e incentivando o mercadonacional a adotar novos modelos de negócio da tecnologia da informação e de novos negóciosde comunicação com base em software não-proprietário e de código fonte aberto, oferecendotreinamento específico para técnicos, profissionais de suporte e funcionários públicos usuários,criando grupos de funcionários públicos que irão treinar outros funcionários públicos e atuar comoincentivadores e defensores dos produtos de software não proprietários e código fonte aberto, ofe-recendo conteúdo técnico on-line para serviços de suporte, ferramentas para desenvolvimento deprodutos de software não proprietários e do seu código fonte livre, articulando redes de terceiros(dentro e fora do governo) fornecedoras de educação, pesquisa, desenvolvimento e teste de pro-dutos de software livre.

Guia do aluno

Neste guia, você terá reunidas uma série de informações importantes para que você comeceseu curso. São elas:

• Licenças para cópia de material disponível;

• Os 10 mandamentos do aluno de Educação a Distância;

• Como participar dos foruns e da wikipédia;

• Primeiros passos.

É muito importante que você entre em contato com TODAS estas informações, seguindo oroteiro acima.

Licença

Copyright ©2006, Instituto Nacional de Tecnologia da Informação ([email protected]).

6

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

É dada permissão para copiar, distribuir e/ou modificar este documento sob os termosda Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posteriorpúblicada pela Free Software Foundation; com o Capitulo Invariante SOBRE ESSAAPOSTILA. Uma cópia da licença está inclusa na seção entitulada "Licença de Docu-mentação Livre GNU".

Os 10 mandamentos do aluno de educação online

• 1. Acesso à Internet: ter endereço eletrônico, um provedor e um equipamento adequado épré-requisito para a participação nos cursos a distância;

• 2. Habilidade e disposição para operar programas: ter conhecimentos básicos de Informá-tica é necessário para poder executar as tarefas;

• 3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distân-cia conta muitos pontos, pois irá colaborar para o processo ensino-aprendizagem pessoal,dos colegas e dos professores;

• 4. Comportamentos compatíveis com a etiqueta: mostrar-se interessado em conhecer seuscolegas de turma respeitando-os e se fazendo ser respeitado pelos mesmos;

• 5. Organização pessoal: planejar e organizar tudo é fundamental para facilitar a sua revisãoe a sua recuperação de materiais;

• 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações erealizá-las em tempo real;

• 7. Curiosidade e abertura para inovações: aceitar novas idéias e inovar sempre;

• 8. Flexibilidade e adaptação: requisitos necessário à mudança tecnológica, aprendizagense descobertas;

• 9. Objetividade em sua comunicação: comunicar-se de forma clara, breve e transparente éponto - chave na comunicação pela Internet;

• 10. Responsabilidade: ser responsável por seu próprio aprendizado. O ambiente virtual nãocontrola a sua dedicação, mas reflete os resultados do seu esforço e da sua colaboração.

Como participar dos fóruns e Wikipédia

Você tem um problema e precisa de ajuda?

Podemos te ajudar de 2 formas:

A primeira é o uso dos fóruns de notícias e de dúvidas gerais que se distinguem pelo uso:

. O fórum de notícias tem por objetivo disponibilizar um meio de acesso rápido a informaçõesque sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas a

7

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

todos participantes. Assim, se o monitor ou algum outro participante tiver uma informação queinteresse ao grupo, favor postá-la aqui.Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico docurso. É recomendado que você faça uso do Fórum de dúvidas gerais que lhe dá recursos maisefetivos para esta prática.

. O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativopara solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadasa todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podemajudar.Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com aformalização ou a gramática. Responda! E não se esqueça de que antes de abrir um novo tópicoé recomendável ver se a sua pergunta já foi feita por outro participante.

A segunda forma se dá pelas Wikis:

. Uma wiki é uma página web que pode ser editada colaborativamente, ou seja, qualquer par-ticipante pode inserir, editar, apagar textos. As versões antigas vão sendo arquivadas e podemser recuperadas a qualquer momento que um dos participantes o desejar. Assim, ela oferece umótimo suporte a processos de aprendizagem colaborativa. A maior wiki na web é o site "Wikipé-dia", uma experiência grandiosa de construção de uma enciclopédia de forma colaborativa, porpessoas de todas as partes do mundo. Acesse-a em português pelos links:

• Página principal da Wiki - http://pt.wikipedia.org/wiki/

Agradecemos antecipadamente a sua colaboração com a aprendizagem do grupo!

Primeiros Passos

Para uma melhor aprendizagem é recomendável que você siga os seguintes passos:

• Ler o Plano de Ensino e entender a que seu curso se dispõe a ensinar;

• Ler a Ambientação do Moodle para aprender a navegar neste ambiente e se utilizar dasferramentas básicas do mesmo;

• Entrar nas lições seguindo a seqüência descrita no Plano de Ensino;

• Qualquer dúvida, reporte ao Fórum de Dúvidas Gerais.

Perfil do Tutor

Segue-se uma descrição do tutor ideal, baseada no feedback de alunos e de tutores.

O tutor ideal é um modelo de excelência: é consistente, justo e profissional nos respectivosvalores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita asidéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar.

8

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

A classificação por um tutor desta natureza proporciona o melhor feedback possível, é crucial, e,para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem.’ Este tutorou instrutor:

• fornece explicações claras acerca do que ele espera e do estilo de classificação que iráutilizar;

• gosta que lhe façam perguntas adicionais;

• identifica as nossas falhas, mas corrige-as amavelmente’, diz um estudante, ’e explica por-que motivo a classificação foi ou não foi atribuída’;

• tece comentários completos e construtivos, mas de forma agradável (em contraste com umreparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, deameaça e de nervossismo’)

• dá uma ajuda complementar para encorajar um estudante em dificuldade;

• esclarece pontos que não foram entendidos, ou corretamente aprendidos anteriormente;

• ajuda o estudante a alcançar os seus objetivos;

• é flexível quando necessário;

• mostra um interesse genuíno em motivar os alunos (mesmo os principiantes e, por isso,talvez numa fase menos interessante para o tutor);

• escreve todas as correções de forma legível e com um nível de pormenorização adequado;

• acima de tudo, devolve os trabalhos rapidamente;

9

Parte III

GNU Free Documentation License

10

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

(Traduzido pelo João S. O. Bueno através do CIPSGA em 2001)Esta é uma tradução não oficial da Licença de Documentação Livre GNU em Português Brasi-

leiro. Ela não é publicada pela Free Software Foundation, e não se aplica legalmente a distribuiçãode textos que usem a GFDL - apenas o texto original em Inglês da GNU FDL faz isso. Entretanto,nós esperamos que esta tradução ajude falantes de português a entenderem melhor a GFDL.

This is an unofficial translation of the GNU General Documentation License into Brazilian Por-tuguese. It was not published by the Free Software Foundation, and does not legally state thedistribution terms for software that uses the GFDL–only the original English text of the GFDL doesthat. However, we hope that this translation will help Portuguese speakers understand the GFDLbetter.

Licença de Documentação Livre GNU Versão 1.1, Março de 2000

Copyright (C) 2000 Free Software Foundation, Inc.59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

É permitido a qualquer um copiar e distribuir cópias exatas deste documento de licença, masnão é permitido alterá-lo.

INTRODUÇÃO

O propósito desta Licença é deixar um manual, livro-texto ou outro documento escrito "livre"nosentido de liberdade: assegurar a qualquer um a efetiva liberdade de copiá-lo ou redistribui-lo,com ou sem modificações, comercialmente ou não. Secundariamente, esta Licença mantémpara o autor e editor uma forma de ter crédito por seu trabalho, sem ser considerado responsávelpelas modificações feitas por terceiros.

Esta Licença é um tipo de "copyleft"("direitos revertidos"), o que significa que derivações dodocumento precisam ser livres no mesmo sentido. Ela complementa a GNU Licença Pública Ge-ral (GNU GPL), que é um copyleft para software livre.

Nós fizemos esta Licença para que seja usada em manuais de software livre, por que softwarelivre precisa de documentação livre: um programa livre deve ser acompanhado de manuais queprovenham as mesmas liberdades que o software possui. Mas esta Licença não está restrita amanuais de software; ela pode ser usada para qualquer trabalho em texto, independentementedo assunto ou se ele é publicado como um livro impresso. Nós recomendamos esta Licença prin-cipalmente para trabalhos cujo propósito seja de introdução ou referência.

APLICABILIDADE E DEFINIÇÕES

Esta Licença se aplica a qualquer manual ou outro texto que contenha uma nota colocada pelodetentor dos direitos autorais dizendo que ele pode ser distribuído sob os termos desta Licença.O "Documento"abaixo se refere a qualquer manual ou texto. Qualquer pessoa do público é um

11

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

licenciado e é referida como "você".

Uma "Versão Modificada"do Documento se refere a qualquer trabalho contendo o documentoou uma parte dele, quer copiada exatamente, quer com modificações e/ou traduzida em outralíngua.

Uma "Seção Secundária"é um apêndice ou uma seção inicial do Documento que trata ex-clusivamente da relação dos editores ou dos autores do Documento com o assunto geral doDocumento (ou assuntos relacionados) e não contém nada que poderia ser incluído diretamentenesse assunto geral (Por exemplo, se o Documento é em parte um livro texto de matemática, aSeção Secundária pode não explicar nada de matemática).

Essa relação poderia ser uma questão de ligação histórica com o assunto, ou matérias relaci-onadas, ou de posições legais, comerciais, filosóficas, éticas ou políticas relacionadas ao mesmo.

As "Seções Invariantes"são certas Seções Secundárias cujos títulos são designados, comosendo de Seções Invariantes, na nota que diz que o Documento é publicado sob esta Licença.

Os "Textos de Capa"são certos trechos curtos de texto que são listados, como Textos de CapaFrontal ou Textos da Quarta Capa, na nota que diz que o texto é publicado sob esta Licença.

Uma cópia "Transparente"do Documento significa uma cópia que pode ser lida automatica-mente, representada num formato cuja especificação esteja disponível ao público geral, cujosconteúdos possam ser vistos e editados diretamente e sem mecanismos especiais com editoresde texto genéricos ou (para imagens compostas de pixels) programas de pintura genéricos ou(para desenhos) por algum editor de desenhos grandemente difundido, e que seja passível deservir como entrada a formatadores de texto ou para tradução automática para uma variedadede formatos que sirvam de entrada para formatadores de texto. Uma cópia feita em um formatode arquivo outrossim Transparente cuja constituição tenha sido projetada para atrapalhar ou de-sencorajar modificações subsequentes pelos leitores não é Transparente. Uma cópia que não é"Transparente"é chamada de "Opaca".

Exemplos de formatos que podem ser usados para cópias Transparentes incluem ASCII sim-ples sem marcações, formato de entrada do Texinfo, formato de entrada do LaTex, SGML ou XMLusando uma DTD disponibilizada publicamente, e HTML simples, compatível com os padrões, eprojetado para ser modificado por pessoas. Formatos opacos incluem PostScript, PDF, formatosproprietários que podem ser lidos e editados apenas com processadores de texto proprietários,SGML ou XML para os quais a DTD e/ou ferramentas de processamento e edição não estejamdisponíveis para o público, e HTML gerado automaticamente por alguns editores de texto comfinalidade apenas de saída.

A "Página do Título"significa, para um livro impresso, a página do título propriamente dita,mais quaisquer páginas subsequentes quantas forem necessárias para conter, de forma legível,o material que esta Licença requer que apareça na página do título. Para trabalhos que nãotenham uma página do título, "Página do Título"significa o texto próximo da aparição mais proe-minente do título do trabalho, precedendo o início do corpo do texto.

12

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

FAZENDO CÓPIAS EXATAS

Você pode copiar e distribuir o Documento em qualquer meio, de forma comercial ou nãocomercial, desde que esta Licença, as notas de copyright, e a nota de licença dizendo que estaLicença se aplica ao documento estejam reproduzidas em todas as cópias, e que você não acres-cente nenhuma outra condição, quaisquer que sejam, às desta Licença.

Você não pode usar medidas técnicas para obstruir ou controlar a leitura ou confecção decópias subsequentes das cópias que você fizer ou distribuir. Entretanto, você pode aceitar com-pensação em troca de cópias. Se você distribuir uma quantidade grande o suficiente de cópias,você também precisa respeitar as condições da seção 3.

Você também pode emprestar cópias, sob as mesmas condições colocadas acima, e tambémpode exibir cópias publicamente.

FAZENDO CÓPIAS EM QUANTIDADE

Se você publicar cópias do Documento em número maior que 100, e a nota de licença doDocumento obrigar Textos de Capa, você precisará incluir as cópias em capas que tragam, clarae legivelmente, todos esses Textos de Capa: Textos de Capa da Frente na capa da frente, eTextos da Quarta Capa na capa de trás. Ambas as capas também precisam identificar clara elegivelmente você como o editor dessas cópias. A capa da frente precisa apresentar o título com-pleto com todas as palavras do título igualmente proeminentes e visíveis. Você pode adicionaroutros materiais às capas. Fazer cópias com modificações limitadas às capas, tanto quanto estaspreservem o título do documento e satisfaçam a essas condições, pode ser tratado como cópiaexata em outros aspectos.

Se os textos requeridos em qualquer das capas for muito volumoso para caber de formalegível, você deve colocar os primeiros (tantos quantos couberem de forma razoável) na capaverdadeira, e continuar os outros nas páginas adjacentes.

Se você publicar ou distribuir cópias Opacas do Documento em número maior que 100, vocêprecisa ou incluir uma cópia Transparente que possa ser lida automaticamente com cada cópiaOpaca, ou informar, em ou com, cada cópia Opaca a localização de uma cópia Transparentecompleta do Documento acessível publicamente em uma rede de computadores, à qual o públicousuário de redes tenha acesso a download gratuito e anônimo utilizando padrões públicos deprotocolos de rede. Se você utilizar o segundo método, você precisará tomar cuidados razoavel-mente prudentes, quando iniciar a distribuição de cópias Opacas em quantidade, para assegurarque esta cópia Transparente vai permanecer acessível desta forma na localização especificadapor pelo menos um ano depois da última vez em que você distribuir uma cópia Opaca (direta-mente ou através de seus agentes ou distribuidores) daquela edição para o público.

É pedido, mas não é obrigatório, que você contate os autores do Documento bem antes deredistribuir qualquer grande número de cópias, para lhes dar uma oportunidade de prover vocêcom uma versão atualizada do Documento.

13

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

MODIFICAÇÕES

Você pode copiar e distribuir uma Versão Modificada do Documento sob as condições das se-ções 2 e 3 acima, desde que você publique a Versão Modificada estritamente sob esta Licença,com a Versão Modificada tomando o papel do Documento, de forma a licenciar a distribuiçãoe modificação da Versão Modificada para quem quer que possua uma cópia da mesma. Alémdisso, você precisa fazer o seguinte na versão modificada:

A. Usar na Página de Título (e nas capas, se houver alguma) um título distinto daquele do Do-cumento, e daqueles de versões anteriores (que deveriam, se houvesse algum, estarem listadosna seção "Histórico do Documento"). Você pode usar o mesmo título de uma versão anterior seo editor original daquela versão lhe der permissão;

B. Listar na Página de Título, como autores, uma ou mais das pessoas ou entidades responsá-veis pela autoria das modificações na Versão Modificada, conjuntamente com pelo menos cincodos autores principais do Documento (todos os seus autores principais, se ele tiver menos quecinco);

C. Colocar na Página de Título o nome do editor da Versão Modificada, como o editor;

D. Preservar todas as notas de copyright do Documento;

E. Adicionar uma nota de copyright apropriada para suas próprias modificações adjacente àsoutras notas de copyright;

F. Incluir, imediatamente depois das notas de copyright, uma nota de licença dando ao públicoo direito de usar a Versão Modificada sob os termos desta Licença, na forma mostrada no tópicoabaixo;

G. Preservar nessa nota de licença as listas completas das Seções Invariantes e os Textos deCapa requeridos dados na nota de licença do Documento;

H. Incluir uma cópia inalterada desta Licença;

I. Preservar a seção entitulada "Histórico", e seu título, e adicionar à mesma um item dizendopelo menos o título, ano, novos autores e editor da Versão Modificada como dados na Página deTítulo. Se não houver uma sessão denominada "Histórico"no Documento, criar uma dizendo otítulo, ano, autores, e editor do Documento como dados em sua Página de Título, então adicionarum item descrevendo a Versão Modificada, tal como descrito na sentença anterior;

J. Preservar o endereço de rede, se algum, dado no Documento para acesso público a umacópia Transparente do Documento, e da mesma forma, as localizações de rede dadas no Docu-mento para as versões anteriores em que ele foi baseado. Elas podem ser colocadas na seção"Histórico". Você pode omitir uma localização na rede para um trabalho que tenha sido publicadopelo menos quatro anos antes do Documento, ou se o editor original da versão a que ela se refirader sua permissão;

K. Em qualquer seção entitulada "Agradecimentos"ou "Dedicatórias", preservar o título da

14

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

seção e preservar a seção em toda substância e fim de cada um dos agradecimentos de contri-buidores e/ou dedicatórias dados;

L. Preservar todas as Seções Invariantes do Documento, inalteradas em seus textos ou emseus títulos. Números de seção ou equivalentes não são considerados parte dos títulos da seção;

M. Apagar qualquer seção entitulada "Endossos". Tal sessão não pode ser incluída na VersãoModificada;

N. Não reentitular qualquer seção existente com o título "Endossos"ou com qualquer outrotítulo dado a uma Seção Invariante.

Se a Versão Modificada incluir novas seções iniciais ou apêndices que se qualifiquem comoSeções Secundárias e não contenham nenhum material copiado do Documento, você pode optarpor designar alguma ou todas aquelas seções como invariantes. Para fazer isso, adicione seustítulos à lista de Seções Invariantes na nota de licença da Versão Modificada. Esses títulos preci-sam ser diferentes de qualquer outro título de seção.

Você pode adicionar uma seção entitulada "Endossos", desde que ela não contenha qual-quer coisa além de endossos da sua Versão Modificada por várias pessoas ou entidades - porexemplo, declarações de revisores ou de que o texto foi aprovado por uma organização como adefinição oficial de um padrão.

Você pode adicionar uma passagem de até cinco palavras como um Texto de Capa da Frente, e uma passagem de até 25 palavras como um Texto de Quarta Capa, ao final da lista de Textosde Capa na Versão Modificada. Somente uma passagem de Texto da Capa da Frente e uma deTexto da Quarta Capa podem ser adicionados por (ou por acordos feitos por) qualquer entidade.Se o Documento já incluir um texto de capa para a mesma capa, adicionado previamente porvocê ou por acordo feito com alguma entidade para a qual você esteja agindo, você não podeadicionar um outro; mas você pode trocar o antigo, com permissão explícita do editor anterior queadicionou a passagem antiga.

O(s) autor(es) e editor(es) do Documento não dão permissão por esta Licença para que seusnomes sejam usados para publicidade ou para assegurar ou implicar endossamento de qualquerVersão Modificada.

COMBINANDO DOCUMENTOS

Você pode combinar o Documento com outros documentos publicados sob esta Licença, sobos termos definidos na seção 4 acima para versões modificadas, desde que você inclua na com-binação todas as Seções Invariantes de todos os documentos originais, sem modificações, e listetodas elas como Seções Invariantes de seu trabalho combinado em sua nota de licença.

O trabalho combinado precisa conter apenas uma cópia desta Licença, e Seções InvariantesIdênticas com multiplas ocorrências podem ser substituídas por apenas uma cópia. Se houvermúltiplas Seções Invariantes com o mesmo nome mas com conteúdos distintos, faça o título de

15

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

cada seção único adicionando ao final do mesmo, em parênteses, o nome do autor ou editororigianl daquela seção, se for conhecido, ou um número que seja único. Faça o mesmo ajustenos títulos de seção na lista de Seções Invariantes nota de licença do trabalho combinado.

Na combinação, você precisa combinar quaisquer seções entituladas "Histórico"dos diver-sos documentos originais, formando uma seção entitulada "Histórico"; da mesma forma combinequaisquer seções entituladas "Agradecimentos", ou "Dedicatórias". Você precisa apagar todas asseções entituladas como "Endosso".

COLETÂNEAS DE DOCUMENTOS

Você pode fazer uma coletânea consitindo do Documento e outros documentos publicadossob esta Licença, e substituir as cópias individuais desta Licença nos vários documentos comuma única cópia incluida na coletânea, desde que você siga as regras desta Licença para cópiaexata de cada um dos Documentos em todos os outros aspectos.

Você pode extrair um único documento de tal coletânea, e distribuí-lo individualmente sobesta Licença, desde que você insira uma cópia desta Licença no documento extraído, e siga estaLicença em todos os outros aspectos relacionados à cópia exata daquele documento.

AGREGAÇÃO COM TRABALHOS INDEPENDENTES

Uma compilação do Documento ou derivados dele com outros trabalhos ou documentos se-parados e independentes, em um volume ou mídia de distribuição, não conta como uma Ver-são Modificada do Documento, desde que nenhum copyright de compilação seja reclamado pelacompilação. Tal compilação é chamada um "agregado", e esta Licença não se aplica aos outrostrabalhos auto-contidos compilados junto com o Documento, só por conta de terem sido assimcompilados, e eles não são trabalhos derivados do Documento.

Se o requerido para o Texto de Capa na seção 3 for aplicável a essas cópias do Documento,então, se o Documento constituir menos de um quarto de todo o agregado, os Textos de Capado Documento podem ser colocados em capas adjacentes ao Documento dentro do agregado.Senão eles precisarão aparecer nas capas de todo o agregado.

TRADUÇÃO

Tradução é considerada como um tipo de modificação, então você pode distribuir traduçõesdo Documento sob os termos da seção 4. A substituição de Seções Invariantes por traduçõesrequer uma permissão especial dos detentores do copyright das mesmas, mas você pode incluirtraduções de algumas ou de todas as Seções Invariantes em adição às versões orignais dessasSeções Invariantes. Você pode incluir uma tradução desta Licença desde que você também in-clua a versão original em Inglês desta Licença. No caso de discordância entre a tradução e a

16

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

versão original em Inglês desta Licença, a versão original em Inglês prevalecerá.

TÉRMINO

Você não pode copiar, modificar, sublicenciar, ou distribuir o Documento exceto como expres-samente especificado sob esta Licença. Qualquer outra tentativa de copiar, modificar, sublicen-ciar, ou distribuir o Documento é nula, e resultará automaticamente no término de seus direitossob esta Licença. Entretanto, terceiros que tenham recebido cópias, ou direitos de você sob estaLicença não terão suas licenças terminadas, tanto quanto esses terceiros permaneçam em totalacordo com esta Licença.

REVISÕES FUTURAS DESTA LICENÇA

A Free Software Foundation pode publicar novas versões revisadas da Licença de Documen-tação Livre GNU de tempos em tempos. Tais novas versões serão similares em espirito à versãopresente, mas podem diferir em detalhes ao abordarem novos porblemas e preocupações. Vejahttp://www.gnu.org/copyleft/.

A cada versão da Licença é dado um número de versão distinto. Se o Documento especificarque uma versão particular desta Licença "ou qualquer versão posterior"se aplica ao mesmo, vocêtem a opção de seguir os termos e condições daquela versão específica, ou de qualquer versãoposterior que tenha sido publicada (não como rascunho) pela Free Software Foundation. Se oDocumento não especificar um número de Versão desta Licença, você pode escolher qualquerversão já publicada (não como rascunho) pela Free Software Foundation.

ADENDO: Como usar esta Licença para seus documentos

Para usar esta Licença num documento que você escreveu, inclua uma cópia desta Licençano documento e ponha as seguintes notas de copyright e licenças logo após a página de título:

Copyright (c) ANO SEU NOME.É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos da Licençade Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior publicada pela Free Soft-ware Foundation; com as Seções Invariantes sendo LISTE SEUS TÍTULOS, com os Textos daCapa da Frente sendo LISTE, e com os Textos da Quarta-Capa sendo LISTE. Uma cópia da li-cença está inclusa na seção entitulada "Licença de Documentação Livre GNU".

Se você não tiver nenhuma Seção Invariante, escreva "sem Seções Invariantes"ao invés dedizer quais são invariantes. Se você não tiver Textos de Capa da Frente, escreva "sem Textos deCapa da Frente"ao invés de "com os Textos de Capa da Frente sendo LISTE"; o mesmo para osTextos da Quarta Capa.

Se o seu documento contiver exemplos não triviais de código de programas, nós recomenda-mos a publicação desses exemplos em paralelo sob a sua escolha de licença de software livre,

17

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

tal como a GNU General Public License, para permitir o seu uso em software livre.

18

Parte IV

Cluster

19

Capítulo 1

O que é Cluster

Um cluster é um sistema formado por um conjunto de computadores (nós) que trabalham emconjunto como se fossem apenas uma grande máquina. Este tipo de implementação utiliza-sede um tipo especial de sistema operacional classificado como sistema distribuido. É construídomuitas vezes a partir de computadores convencionais (desktops), sendo que estes vários compu-tadores são ligados em rede e comunicam-se através do sistema de forma que trabalhem comose fosse uma única máquina de grande porte.

Para que o aluno realize este curso de maneira satisfatória é necessário que tenha ao menosconhecimento intermediário sobre o ambiente GNU/Linux.

Ao final deste curso o aluno terá conhecimento suficiente para instalar, configurar e resolverproblemas com relação a clusters de Alta disponibilidade.

O curso, com base na distribuição Debian, tem duas semanas, o conteúdo do curso estarávisível somente a partir da data de início. Para começar o curso você deve ler o Guia do aluno aseguir.

20

Capítulo 2

Plano de ensino

2.1 Objetivo

Qualificar técnicos para a construção de clusters de alta disponibilidade utilizando a solução:Linux+DRBD+Heartbeat+MON.

2.2 Público Alvo

Técnicos que desejem montar clusters de alta disponibilidade.

2.3 Pré-requisitos

Os usuários deverão ser, necessariamente, indicados por empresas públicas e ter conheci-mento intermediário acerca do Ambiente Linux e redes de computadores.

2.4 Descrição

O curso será realizado na modalidade Educação a Distância e utilizará a Plataforma Moodlecomo ferramenta de aprendizagem. O curso tem duração de duas semanas e possui um conjuntode atividades (lições, fóruns, glossários, questionários e outros) que deverão ser executadas deacordo com as instruções fornecidas. O material didático está disponível on-line de acordo comas datas pré-estabelecidas em cada tópico.

2.5 Metodologia

O curso está dividido da seguinte maneira:

2.6 Cronograma

• Descrição das atividades

• Semana 1

21

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• Introdução,

• Conceitos básicos,

• Configuração da rede,

• Compilação do kernel,

• Instalação do DRBD.

• Semana 2

• Instalação do Heartbeat,

• Intalação do MON,

• Avaliação de aprendizagem,

• Avaliação do curso.

Como mostrado na tabela acima, a cada semana será disponibilizado um conjunto de módulos.É recomendável que o participante siga as datas estabelecidas.As lições contém o contéudo principal. Elas poderão ser acessadas quantas vezes forem neces-sárias, desde que esteja dentro da semana programada. Ao final de uma lição, você receberáuma nota de acordo com o seu desempenho. Responda com atenção às perguntas de cada lição,pois elas serão consideradas na sua nota final. Caso sua nota numa determinada lição for menordo que 6.0, sugerimos que você faça novamente esta lição.Ao final do curso será disponibilizada a avaliação referente ao curso. Tanto as notas das liçõesquanto a da avaliação serão consideradas para a nota final. Todos os módulos ficarão visíveispara que possam ser consultados durante a avaliação final.Aconselhamos a leitura da "Ambientação do Moodle"para que você conheça a plataforma de En-sino a Distância, evitando dificuldades advindas do "desconhecimento"sobre a mesma.Os instrutores estarão a sua disposição ao longo de todo curso. Qualquer dúvida deverá serenviada ao fórum. Diariamente os monitores darão respostas e esclarecimentos.

2.7 Programa

Semana 1:

• * Introdução; * Conceitos básicos; * Configuração da rede; * Compilação do kernel; * Insta-lação do DRBD.

Semana 2:

• * Instalação do Heartbeat; * Intalação do MON.

2.8 Avaliação

Toda a avaliação será feita on-line.Aspectos a serem considerados na avaliação:

• Iniciativa e autonomia no processo de aprendizagem e de produção de conhecimento;

22

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• Capacidade de pesquisa e abordagem criativa na solução dos problemas apresentados.

Instrumentos de avaliação:

• Participação ativa nas atividades programadas.

• Avaliação ao final do curso.

• O participante fará várias avaliações referente ao conteúdo do curso. Para a aprovação eobtenção do certificado o participante deverá obter nota final maior ou igual a 6.0 de acordocom a fórmula abaixo:

• Nota Final = ((ML x 7) + (AF x 3)) / 10 = Média aritmética das lições

• AF = Avaliações

2.9 Bibliografia

• http://pt.wikipedia.org

• http://www.linux-ha.org

• http://www.drbd.org

• http://www.kernel.org/software/mon/

• http://ha.linuxchix.org.br/

• http://www.br.debian.org/doc/

23

Capítulo 3

Lição 1 - Introdução

3.1 Introdução

Um cluster é um sistema formado por um conjunto de computadores (nós) que trabalham emconjunto como se fossem apenas uma grande máquina. Este tipo de implementação utiliza-sede um tipo especial de sistema operacional classificado como sistema distribuido. É construídomuitas vezes a partir de computadores convencionais (desktops), sendo que estes vários compu-tadores são ligados em rede e comunicam-se através do sistema de forma que trabalhem comose fosse uma única máquina de grande porte.

3.2 Um pouco de história

A idéia inicial que conduz ao cluster foi desenvolvida na década de 1960 pela IBM comouma forma de interligar grandes mainframes,visando obter uma solução comercialmente viávelde paralelismo. Nesta época o sistema HASP (Houston Automatic Spooling Priority) da IBM eseu sucessor, JES (Job Entry System) proviam uma maneira de distribuir tarefas nos mainframesinterligados. A IBM ainda hoje suporta o cluster de mainframes através do Parallel Sysplex Sys-tem que permite ao hardware, sistema operacional, middleware, e o software de gerenciamentodo sistema prover uma melhora dramática na performance e custo ao permitir que usuários dagrandes mainframes continuem utilizando suas aplicações existentes.

Entretanto, o cluster ganhou força até que três tendências convergiram nos anos 1980: mi-croprocessadores de alta performance, redes de alta velocidade, e ferramentas padronizadaspara computação distribuída de alto desempenho. Uma quarta tendência possível é a crescentenecessidade de poder de processamento para aplicações científicas e comerciais unida ao altocusto e a baixa acessibilidade dos tradicionais dos supercomputadores.

No final de 1993, Donald Becker e Thomas Sterling iniciaram um esboço de um sistema deprocessamento distribuído, construído a partir de hardware convencional como uma medida decombate aos custos dos supercomputadores. No início de 1994, trabalhando no CESDIS, como patrocínio do projeto HTPCC/ESS, nasce o primeiro cluster e, conseqüentemente, o projetoBeowulf.

24

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

O protótipo inicial era um cluster de 16 processadores DX4 ligados por dois canais Ethernetacoplados (Ethernet Bolding). A máquina foi um sucesso instantâneo, e esta idéia rapidamentese espalhou pelos meios acadêmicos e pela NASA e outras comunidades de pesquisa.

3.3 Tipos de cluster

Existem basicamente três tipos de cluster:

Cluster de alta disponibilidade - Um cluster de alta disponibilidade visa a manter os serviçosprestados por um sistema a outro mesmo que esse venha a falhar internamente. Aí está implícitoo conceito de mascaramento de falhas, através de redundância ou replicação. Um determinadoserviço, que se quer altamente disponível, é colocado por trás de uma camada de abstração, quepermita mudanças em seus mecanismos internos mantendo intacta a interação com elementosexternos. Este tipo de implementação é usado principalmente em aplicações críticas onde o ser-viço não pode ficar indisponível em momento algum, mesmo em caso de falha de hardware.

Para temos uma idéia mais concreta pense numa grande loja virtual, imagine qual seria oprejuízo se o site ficasse indisponível por 10 minutos!!! Clusters de alta disponibilidade visama resolver este tipo de problema. A idéia básica por trás dessa implementação é que caso umnó venha a falhar outro assuma no mesmo momento sem que seja percebido pelos usuários doserviço.

3.4 Balanceamento de Carga

Cluster de balanceamento de carga - Essa implementação permite a distribuição das requisi-ções de recursos para todas as máquinas que fazem parte do cluster. Este tipo de implementaçãoé muito comum em servidores web e funciona da seguinte maneira: uma máquina é responsá-vel por distribuir as requisições entre os diversos nós, cada nó faz o seu trabalho e manda umaresposta, o sistema que fez a requisição vê tudo isso como apenas uma máquina.

3.5 Porcessamento Distribuído

Cluster de processamento distribuído - Esse tipo de cluster tem como objetivo dividir todatarefa computacional em diversas tarefas pequenas que podem ser realizadas por diversos pcsao mesmo tempo. A idéia é mais ou menos parecida com a do cluster de balanceamento de carga.Essa implementação é muito utilizada em cálculo de problemas matemáticos e renderização deimagens.

25

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

3.5.1 Lição 2 - Alta disponibilidade

3.6 Alta disponibilidade

Cada vez mais o homem depende de máquinas e de diversos sistemas computacionais. Al-guns desses sistemas não podem ficar insdisponíveis por menor que seja o intervalo de tempo.

Podemos pensar, por exemplo, num banco. É totalmente inaceitável que o sistema de caixaseletrônicos de um banco fique indisponível por um tempo menor que seja, isso pode causargrande prejuízo a instituição.

Uma loja virtual (submarino, mercadolivre, bestbuy) é um sistema crítico e que tem que ficaro tempo todo disponível, a simples queda de um servidor de banco de dados pode causar pre-juízo devido a interrupção nas vendas.

Para garantir que o sistema esteja sempre, ou a maior parte do tempo, disponível são neces-sárias diversas atitudes quando da implementação desse sistema. Várias podem ser as causasdas falhas, tanto pode ser um problema de hardware como pode ser um problema de software,por isso deve haver a redundância de hardware e de software.

A alta disponibilidade tem por objetivo manter um sistema que provém algum tipo de serviçoatravés de uma rede, mesmo que este passe por problemas de falhas de hardware, de manun-teção, de fornecimento de energia, atualização de softwares. Para manter um sistema seguindoessa política são necessárias ações de manutenção e administração, não basta apenas instalare configurar para que tudo funcione corretamente, deve-se trabalhar ao máximo para fazer comque o tempo que um serviço que fica no ar seja o maior possível.

3.7 Disponibilidade

Disponibilidade é a probabilidade de um sistema estar funcional e pronto para uso em umdetermindado instante. Quanto mais disponível for um sistema, maior será a probabilidade deestar funcional.A disponibilidade pode ser dividida em três tipos:

• Disponibildade básica - é a disponibilidade de computadores comuns, máquina desta classeestão disponíveis 99

• Alta disponibilidade - é a disponibilidade de sistemas montados com redundância em to-dos os pontos prováveis de falha, esse tipo de implementação deve ser feita de maneira atorná-lo capaz de detectar, corrigir e esconder falhas. A tabela a seguir mostra o nível dedisponibilidade e o tempo que o sistema permanece indisponível por unidade de tempo:

26

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Disponibilidade (%) Indisponibilidade/ano Indisponibilidade/mês95 18 dias 6: 00: 00 1 dia 12: 00: 0096 14 dias 14: 24: 00 1 dia 4: 48: 0097 10 dias 22: 48: 00 0 dias 21: 36: 0098 7 dias 7: 12: 00 0 dias 14: 24: 0099 3 dias 15: 36: 00 0 dias 7: 12: 0099,9 0 dias 8: 45: 35,99 0 dias 00: 43: 11,9999,99 0 dias 00: 52: 33,60 0 dias 00: 04: 19,2099,999 0 dias 00: 05: 15,36

• Disponibilidade contínua - nessa implementação o sistema ficaria disponível 100

3.8 Redundância

Para manter a disponibilidade de um serviço é essencial que haja redundância em todos aspartes para que sejam diminuidos os pontos de falha, conhecidos como SPOF (Single Point ofFailure). Quanto maior a redundância implementada menor a probabilidade de interrupções. Afigura abaixo ilustra um cluster de alta disponibilidade projetado para prover um serviço de formaininterrupta.

Note que na figura há redundância em todos os pontos: os servidores estão replicados, todosos dados estão replicados (RAID/Shared Storage), a energia, os switches, tudo é construído deforma a manter o sistema "em pé"sob qualquer condição.

27

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

3.9 Falha

Um dos objetivos de implementar um sistema de alta disponibilidade é tornar esse sistemaimune a falhas. Falha é um problema ocorrido devido ao mau funcionamento do hardware. Paratodo tipo de falha existe uma solução, a queda de energia pode ser tratada, por exemplo, como uso de no-breaks; um switch queimado pode acabar com a comunicação do sistema com osclientes, para resolver esse problema pode-se usar dois switches.

Resumindo, todos os SPOFs podem ser tratados de modo a tornar o sistema imune a falhas(problemas com respeito ao hardware), esse tipo de implementação geralmente encarece a cons-trução do sistema, mas torna-o mais seguro e livre de problemas.

3.10 Erro e Defeito

Um problema com o hardware que compõe um sistema (falha), pode causar uma distorçãodurante a transferência dos dados, como por exemplo, a troca de um bit de 0 para 1. Este tipo deproblema é denomindado erro.

Esse erro pode ser propagado durante a execução de alguma tarefa causando um defeito quepode acarretar o travamento de parte do sistema ou geração de mensagens de erro, situaçõesque podem ser percebidas pelos usuários e que devem ser evitadas.

3.11 Failover e Failback

A ação de uma máquina assumir o serviço de outra é chamada de failover. É desejado queesse procedimento seja feito de forma automática, se tiver que ser feito de forma manual podeter alguns problemas quanto à disponibilidade do serviço. Um failover manual exige que alguémmonitore o serviço e em caso de problema execute o failover, esse procedimento pode levar al-gum tempo, o que não é aceitável em sistemas críticos.

O procedimento inverso ao failover é o failback. Logo após a realização de um failover, cabeao administrador do sistema reparar todos os problemas e tornar a máquina novamente disponí-vel. Assim que a máquina está novamente disponível pode-se fazer com que esta volte a forneceros serviços, isso pode ser feito de maneira manual ou automática.

3.11.1 Lição 3 - Uma solução para a Alta Disponibilidade

3.12 Uma solução para alta disponibilidade

A visão deste curso é mais em cima dos procedimentos referentes aos softwares que com-põem um cluster, não serão abordados profundamente aspectos referentes ao hardware.

O ambiente idealizado durante o decorrer do curso será o de um servidor web que deve permacerdisponível o maior tempo possível, sem que haja queda nos serviços prestados. Os clientes seconectarão ao servidor web por um ip que será o ip do cluster, no cluster cada nó (para finalidadespráticas chamaremos os computadores de nós ou nodos) terá o seu próprio ip interno que não

28

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

poderá ser visto pelos clientes. Um nó será o primário e ficará com o ip do cluster disponibilizandoos serviços, caso esse nó venha a falhar, os serviços serão disponibilizados por outro nó e estepassará a atender pelo ip do cluster. Pode parecer um pouco confuso agora, porém ficará maisclaro adiante.A configuração do servidor será mais ou menos como na imagem abaixo:

• Os dois computadores são ligados cada um a um no-break para evitar que a queda de ener-gia acarrete o desligamento da máquina. Note que estão ligados em no-breaks diferentes,pois se estivessem ligados no mesmo equipamento uma simples queima de circuito destecausaria indisponibilidade total do serviço;

• entre eles há uma conexão dedicada via cabo cross-over para a comunicação, mais tardeveremos qual a finalidade dessa conexão;

• o uso de dois switches é uma boa prática, assim como no caso do no-break, se os doisservidores estivessem ligados no mesmo equipamento, a falha deste acarretaria a indispo-nibilidade do sistema;

• há uma redundância dos dados através de um sistema de RAID, para que os dados deum nó sejam os mesmos do outro, essa RAID será feita através da rede interna e serãoutilizados os próprios HDs das máquinas para armazenar os dados.

29

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

3.13 RAID

RAID (Redundant Array of Independent Disks ou Arranjo Redundante de Discos Independen-tes) é um arranjo de dois ou mais discos que trabalham realizando uma tarefa com o mesmo fim.Existem vários níveis de RAID, a usada no nosso sistema será a RAID 1.RAID 1 consiste no espelhamento de dados, tudo que for gravado em um disco será gravadoigualmente no outro, essa é uma opção de alta disponibilidade para o armazenamento de dados.No nosso caso será implementado RAID por software, o DRBD (Distributed Replicated BlockDevice ou Dispositivo de Bloco Replicado Distribuído) será o responsável por tal procedimento.

3.14 DRBD

O DRBD é um módulo do kernel do Linux e mais alguns scripts responsáveis por espelhardados gravados em disco. O DRBD trabalha com dispositivos de bloco, cada um destes temum estatuto que pode ser primário ou secundário. Tudo que for gravado no dispositivo primárioserá enviado para ser gravado também no dispositivo secundário. O DRBD cria um link entreum dispositivo virtual criado (/dev/drbd*, de alto nível) e uma partição local do disco (/dev/hda*de baixo nível). Tudo é "gravado"no dispositivo de alto nível do dispositivo com estado primário,os dados são passados para o dispositivo de nível mais baixo e para os dispositivos secundáriosque realizam a mesma tarefa.

Resumindo, um programa escreve alguma coisa no /dev/drbd* do nó primário do cluster, issoserá gravado então no /dev/hda* e passado para o nó secundário para ser gravado da mesma ma-neira. No caso de falha do nodo primário, o dispositivo que era secundário passa a ser primário.Assim que o nó que caiu voltar, pode-se reestabelecer ou não o antigo estado das máquinas (Pri-mário / Secundário), mas é necessária a sincronização dos dados, pois podem ter sido gravadasinformações no disco e para manter a consistência dos dados é necessário essa sincronização.

3.15 Consistência de dados

A consistência dos dados é um fator muito importante e por isso é aconselhável utilizar umsistema de arquivos com suporte a journaling, no nosso caso utilizaremos ext3. A técnica de jour-

30

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

naling consiste na criação de um log antes que alguma coisa seja gravada no disco, no caso dealgum problema como o desligamento inesperado da máquina não é necessária uma verificaçãode todo o sistema de arquivos, com o log pode-se saber quais arquivos podem ter sido afetados.

A não utilização de um sistema de arquivos com journaling, implicará num trabalho extra, toda vezque ocorrer um transição de estados entre os nós será necessária uma checagem da consistênciado sistema de arquivos utilizando o fcsk, isso pode não ser muito agradável e prático.

3.16 Heartbeat

Utilizaremos o programa Heartbeat para verificar a comunicação entre os nodos do cluster.A função do Heartbeat é trocar sinais entre as máquinas para verificar se determinada máquinaestá sozinha ou não. Caso o Heartbeat do nó secundário envie um sinal para o nó primário e nãoobtenha resposta, ele vai considerar que está sozinho no cluster e passará a prestar os serviçosque eram prestados por aquela.

3.17 MON

O último utilitário para a montagem do cluster será o MON. Este software é responsável pormonitorar a rede interna do cluster. Caso o MON verifique que um certo computador está sozinhona rede ele dá um shutdown no Heartbeat e dessa maneira o outro nó assume o serviço.Para a montagem do nosso cluster utilizaremos então a solução: DRBD+Heartbeat+MON+Apache(servidor web).

3.17.1 Lição 4 - Configurando a rede

3.18 Procurando pelas ferramentas

Tudo que for feito nessa lição deve ser repetido nos dois nós do cluster. O primeiro passo paraconfigurar a rede no cluster é verificar se possui a ferramenta para configuração da rede que serámuito útil no decorrer do curso, para isso abrimos o terminal e damos o seguinte comando:user@: $ dpkg -l iproute

Se esse pacote não estiver instalado no sistema, instale-o de preferência com a ferramenta APT.Logado como root:debian:/home/user# apt-get updatedebian:/home/user# apt-get install iproute

É só aguardar o sistema baixar e instalar o pacote.(Isso vale no que é a distribuição base para este curso, fica a cargo do aluno saber como se efe-tua tal procedimento na sua distribuição, nada impede também que seja perguntado nos fóruns)Geralmente as distribuições já vem com essa ferramenta. Agora podemos dar o comando abaixopara verificar o estado atual das interfaces de rede:user@: $/sbin/ifconfig

Aparecerá algo como:

31

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:23363 errors:0 dropped:0 overruns:0 frame:0TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:100RX bytes:13479541 (12.8 MiB) TX bytes:20262643 (19.3 MiB)Interrupt:9

lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0UP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:230172 errors:0 dropped:0 overruns:0 frame:0TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:22685256 (21.6 MiB) TX bytes:22685256 (21.6 MiB)

As interfaces eth0 e lo estão ativas, a eth0 é utilizada para se comunicar com a rede, a lo (lo-opback) é utilizada para que o computador responda a si mesmo. No nosso caso utilizaremos ainterface Ethernet (eth) para a comunicação entre os nodos.

Para a melhor compreensão vamos definir como user@: um usuário qualquer do sistemae o usuário logado como root, note sempre o diretório onde estão sendo executados oscomandos.

3.19 Configurando a rede

Para executar os passos a seguir é necessário estar logado como super-usuário:user@: $ suPassword:

Cada nodo do cluster terá um ip fixo, esse ip não será visto pelos clientes que requisitarão os ser-viços, será apenas para a comunicação entre os nodos, existirá um ip que será o ip do cluster masisso será definido num outro momento. Devemos editar então o arquivo /etc/network/interfaces,utilize o editor de sua preferência.debian:/home/user# nano /etc/network/intefaces

Adicione as seguintes linhas ao final do arquivo:auto eth0:0iface eth0:0 inet staticaddress 10.0.0.1netmask 255.255.255.0network 10.0.0.0broacast 10.0.0.255

32

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Para levantar essa rede dê o comando:debian:/home/user# ifup eth0:0

Salve e feche o arquivo. Para nos certificarmos de que tudo ocorreu de maneira correta po-demos verificar as interfaces através do comando ifconfig, devem aparecer então as informaçõesrelativas a interface eth0:0.

eth0:0 Encapsulamento do Link: Ethernet Endereço de HWaddr 08:00:46:7A:02:B0inet end.: 10.0.0.1 Bcast:10.0.0.255 Masc:255.255.255.0UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1IRQ:209 Endereço de E/S:0x8800

Esse será então o nodo primário do cluster, o mesmo procedimento deve ser feito no nodo secun-dário, a única diferença é o ip, o primário responderá pelo ip 10.0.0.1 e o secundário por 10.0.0.2(apenas mude a linha address do arquivo interfaces).Feito isso, a rede interna do cluster estará configurada, agora pode-se usar ferramentas como ossh para realizar as tarefas nos dois nodos ao invés de sentar em cada máquina e realizar asmesmas tarefas.

3.19.1 Lição 5 - Compilando o kernel

3.20 O kernel

O kernel é o núcleo do sistema, ele representa a camada mais baixa de interface com o Hard-ware, sendo responsável por gerenciar os recursos do Sistema operacional como um todo. É nokernel que estão definidas funções para operação com periféricos (mouse, discos, impressoras,interface serial/interface paralela), gerenciamento de memória, entre outros. Resumidamente,o kernel é um conjunto de programas que fornece para os programas de usuário (aplicativos)uma interface para utilizar os recursos do sistema. O kernel do Linux é um kernel monolíticocarregador de módulos, ao contrário dos núcleos monolíticos padrão, os drivers de dispositivossão facilmente configurados como módulos, e são carregados/descarregados enquanto o sistemacorre.

Para o funcionamento do aplicativo DRBD é altamente recomendável uma compilação do ker-nel, como já foi dito anteriormente o DRBD é formado por um módulo do kernel e alguns scripts.Apesar de demorada a compilação é um processo razoavelmente fácil de ser realizado.Atenção, o kernel não é o sistema operacional em si, por isso um novo kernel não fará com quevocê perca os seus programas, arquivos e etc.

3.21 Compilando o kernel

Para compilar o kernel precisamos antes instalar alguns pacotes, utilizaremos novamente aferramenta APT.debian:/home/user# apt-get updatedebian:/home/user# apt-get install libdb3-dev libncurses5-dev docbook-utils fakeroot dpatch

33

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

kernel-package

Depois de instalados todos esses pacotes baixamos os fontes do kernel, utilizaremos o 2.6.15.debian:/home/user# apt-get install linux-source-2.6.15

Feito isso, haverá agora um pacote chamado linux-source-2.6.15.tar.bz2 no diretório /usr/src. Váaté esse diretório e descompacte o pacote.debian:/home/user# cd /usr/srcdebian:/usr/src# tar xjf /usr/src/linux-source-2.6.15.tar.bz2

Feito isso será então criado automaticamente o diretório /usr/src/linux-source-2.6.15. Entre nessediretório e copie o seu config, isso é altamente recomendado se você já possui um kernel funcio-nando perfeitamente.debian:/usr/src# cd linux-source-2.6.15debian:/usr/src/linux-source-2.6.15# cp /boot/config-_kernel_atual .config

Você também pode configurar o kernel manualmente com o comando:debian:/usr/src/linux-source-2.6.15# make menuconfig

O kernel deve ter a opção de carregar módulos configurados.Vamos agora a compilação em si.debian:/usr/src/linux-source-2.6.15# make-kpkg –rootcmd fakeroot –revision custom01 –append-to-version -cluster –initrd binary-arch

Note que antes da cada comando existem dois -"e não apenas um!Cada uma dos opções do comando make-kpkg tem um significado:

• –rootcmd - fornece meios de ganhar o acesso de super usuário necessário para construirum pacote .deb com o kernel;

• –revision - troca o número de revisão do Debian;

• –append-to-version - adiciona a palavra ao nome do kernel que você está compilando, nonosso caso o kernel será o 2.6.15-cluster;

• –initrd - indica que junto com o kernel deve ser criado um arquivo initrd que contém todosos módulos para carregar o sistema;

• binary-arch - produz pacotes separados kernel_headers e kernel_image.

Para saber mais sobre o comando make-kpkg leia o manual deste.debian:/usr/src/linux-source-2.6.15# man make-kpkg

O procedimento de compilação vai levar um bom tempo dependendo da máquina, aproveite essetempo para dar um pesquisada na internet sobre o assunto, procure por Clusters de alta disponi-bilidade ou High Availability Clusters ou entre no site http://www.linux-ha.org.

34

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

3.22 Instalando o novo kernel

Depois de um bom tempo compilando o kernel serão criados então dois pacotes .deb paraserem instalados (linux-image-2.6.15-cluster_custom01_i386.deb e linux-headers-2.6.15-cluster_custom01_i386.deb), esses pacotes estarão no diretório /usr/src. Se tudo ocorreu bem durantea compilação basta instalar o pacote image.debian:/usr/src/linux-source-2.6.15# cd ..debian:/usr/src# dpkg -i linux-image-2.6.15-cluster_custom01_i386.deb

Agora você tem disponível um novo kernel, o 2.6.15-cluster, para acessá-lo temos primeiro quedizer ao gerenciador de boot para carregá-lo na inicialização. No GRUB:debian:/usr/src#update-grub

Na próxima vez que o sistema for inicializado haverá na tela de opções de sistemas algo como"Debian GNU/Linux, kernel 2.6.15-cluster", basta selecionar para inicializar o sistema com o novokernel instalado.No LILO:debian:/usr/src# nano /etc/lilo.conf

Adicione o novo kernel ao arquivo lilo.confimage=/boot/vmlinuz-2.6.15-clusterlabel=Linux-2.6.15-clusterroot=/dev/hd_partição_do_sistemaread-only

Salve, feche o arquivo e reinstale o LILO com o comando:debian:/usr/src# lilo

Na próxima vez que o sistema for inicializado escolha a opção referente ao novo kernel parainicializá-lo.

3.22.1 Lição 6 - Instalação e configuração do DRBD

3.23 DRBD

Como já foi dito anteriomente o DRBD (Distributed Replicated Block Device) é um módulo dokernel do Linux e mais alguns scripts responsáveis por espelhar dados gravados em disco. Nonosso cluster a única função deste programa é replicar os dados, tudo que for escrito em umadeterminada pasta do nodo principal será replicada no nodo secundário de forma automática.Sem esse programa se um nodo ficasse fora do ar, na hora que voltasse poderia haver a incom-patibilidade de dados pois poderiam ter sido gravadas informações no outro nodo durante esseintervalo de tempo. A figura abaixo ilustra o funcionamento do DRBD.

3.24 Instalando os pré-requisitos

Depois de um longo tempo compilando o kernel, vamos à instalação do DRBD.O DRBD poderia ser instalado através da ferramenta APT, mas para ajudar também quem não

35

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

utiliza a distribuição Debian ou alguma outra derivada desta, vamos compilar e instalar atravésdo pacote baixado da intenet. Baixe o pacote do endereço http://oss.linbit.com/drbd/ , aparecerãovárias opções, mas a abordada aqui será a 0.7.18 por isso escolha o pacote drbd-0.7.18.tag.gz .Para a instalação do DRBD existem alguns programas que são pré-requisitos, esses serão insta-lados pelo APT pois a instalação de cada pacote na mão tornaria o curso muito extenso, comoeu disse anteriormente, nada impede que perguntas sejam feitas no fórum. Os pacotes são:

• libc6.1;

• module-assistant.

Para instalar essas dependências damos então o comando:debian: # apt-get install module-assistent libc6.1

3.25 Instalando o DRBD

Finalmente vamos instalar o DRBD, no diretório onde foi baixado o programa dê o comandopara descompactar:debian:/usr/src# tar zxvf drbd-0.7.18.tar.gz

Será criada então uma pasta chamada drbd-0.7.18, entre nela para fazer a compilação do pro-grama.debian:/usr/src# cd drbd-0.7.18debian:/usr/src/drbd-0.7.18# cd drbddebian:/usr/src/drbd-0.7.18/drbd# make clean ; make KDIR=/diretorio/onde/estão/as/fontesCC=gcc-3.x

Algumas coisas tem que ser notadas nesse último comando, a diretiva KDIR serve para indicaronde estão os fontes do seu kernel, no nosso caso eles devem estar em /lib/modules/2.6.15-cluster/build; outro ponto importante é a diretiva CC, esta serve para indicar qual compiladordeve compilar o programa, este deve ser o mesmo usado na compilação do kernel, no meucaso foi o gcc-3.3. Levando em conta essas considerações o comando seria make clean ; makeKDIR=/lib/modules/2.6.15-cluster/build CC=gcc-3.3 .Se tudo ocorrer corretamente durante a compilação basta instalar.

debian:/usr/src/drbd-0.7.18/drbd# cd ..debian:/usr/src/drbd-0.7.18/# make install

3.26 Configurando o DRBD

Se tudo ocorreu conforme o esperado durante a instalação então vamos à configuração. Comojá foi dito anteriormente o funcionamento do DRBD é feito em cima de um dispositivo virtual dealto nível e um dispositivo de baixo nível, devemos criar o dispositivo de alto nível enquanto odispositivo de baixo nível será uma partição onde os dados serão gravados. Para criar um dispo-sitivo de alto nível:

36

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

debian: # mknod /dev/drbd0 b 147 0

O comando mknod serve para criar arquivos especiais de bloco ou caracteres, este tipo de ar-quivo é utilizado para comunicação com o sistema operacional e não para a gravação de dados,esta será realizada na partição do disco rígido. O parâmetro /dev/drbd0 indica o nome e ondeserá criado o arquivo; o parâmetro b indica que o dispositivo é um arquivo especial de bloco combuffer; 147 e 0 indicam o maior e o menor número do dispositivo. Para mais informações sobremknod e o parâmetros é só consultar o manual: "man mknod".O dispositivo de bloco deve ser criado nos dois nodos do cluster. Para cada partição a serespelhada deve ser criado um dispositivo (mknod /dev/drbd1 b 147 1, mknod /dev/drbd2 b147 2, ... ), o DRBD consegue lidar com até cinco partições.O arquivo de configuração do DRBD é o drbd.conf, nele ficam todos o parâmetros para a confi-guração do programa.Vamos agora configurar o DRBD.debian: #nano /etc/drbd.conf

O drbd.conf fica mais ou menos assim:resource drbd0protocol B;incon-degr-cmd "halt -f";diskon-io-error detach;

syncerrate 10M;group 1;

on 1device /dev/drbd0;disk /dev/hda3;address 10.0.0.1:7789;meta-disk internal;

on 2device /dev/drbd0;disk /dev/hda3;address 10.0.0.2:7789;meta-disk internal;

3.27 Entendendo o drbd.conf

resource drbd0protocol B;incon-degr-cmd "halt -f";

37

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

diskon-io-error detach;

syncerrate 10M;group 1;

on 1device /dev/drbd0;disk /dev/hda3;address 10.0.0.1:7789;meta-disk internal;

on 2device /dev/drbd0;disk /dev/hda3;address 10.0.0.2:7789;meta-disk internal;

• resource - seção referente a um dispositivo a ser espelhado;

• protocol - o protocolo usado pelo DRBD é para controlar como os dados serão escritos nodispositivo secundário. Existem três protocolos: A - assim que o dado for escrito no discoe enviado pela rede a operação de escria é considerada como realizada; B - assim que ooutro novo mandar um sinal dizendo que recebeu o dado enviado a operação de escrita éconsiderada como realizada; C - assim que o outro nodo confirmou a escrita do dado nodisco, a operação de escrita é considerada como feita. Cabe a cada um decidir o protocolaa ser usado, o A é o mais leve, já o B e o C consumem muitos recursos no que diz respeitoa rede e podem congestioná-la se a conexão entre os nodos não for dedicada;

• incon-degr-cmd - executa o comando dado como parâmetro (no nosso caso halt -f) caso onodo entre em modo degradado e a replicação dos dados fique inconsistente , opção a serutilizada caso a consitência dos dados seja mais importante que a disponibilidade;

• disk - esta seção contém os parâmetros relativos ao disco;

• on-io-error - se o dispositivo de nível mais baixo reportar um erro então uma ação é exe-cutada, no nosso caso detach, que abandona o dispositivo de nível mais baixo e entra nomodo disk less (sem disco);

• syncer - esta seção é utilizada para descrever os parâmetros do daemon de sincronizaçãodo dispositivo;

• rate - usado para limitar a banda que deve ser usada para a sincronização que aconteceem background;

• group - a resincronização de todos os dispositivos de um grupo ocorre em paralelo, vocêdeve evitar que a sincronização de dispositivos que tem dispositivos de baixo nível em ummesmo disco sincronizem em paralelo;

38

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• on - esta seção contém os parâmetros referentes a um determinado nó, o valor deste parâ-metro deve ser o hostname da máquina, para ver esse valor damos o comando hostnameno terminal. No caso do drbd.conf acima o nodo primário tem hostname 1 e o secundário 2;

• device - é o dispositivo de alto nível criado anteriormente;

• disk - a partição onde serão gravados os arquivos;

• address - o endereço ip do nodo e a porta de comunicação utilizada;

• meta-disk - local onde serão gravados os meta-dados, internal quer dizer que será namesma partição onde serão gravados os dados, você pode fazer uma partição só paraos meta-dados.

Mais informações sobre o drbd.conf podem ser encontradas em http://www.drbd.org/fileadmin/drbd/doc/0.7.0/en/drbd.conf.html.

3.28 Utilizando o DRBD

Depois que você configurou o arquivo drbd.conf e copiou para os dois nodos o DRBD já podeser inicializado para isso damos o comando:debian: # /etc/init.d/drbd start

Isso deve ser feito nos dois nodos, para ver o status do DRBD podemos dar o comando:debian: # cat /proc/drbd

Aparecerá algo como:

version: 0.7.0 svn $Rev: 1442 $ (api:74/proto:74)0: cs:Connected st:Secondary/Secondary ld:Inconsistentns:0 nr:0 dw:0 dr:0 al:0 bm:1 lo:0 pe:0 ua:0 ap:0

Como pode ser notado a conexão é entre secundário e secundário e os dados estão incon-sistentes, para incializar a sincronização dos nodos e definir qual será o nodo primário devemosentão dar o comando no nodo primário:debian: # drbdadm – –do-what-I-say primary allAparecerá algo como:

drbd0: Resync started as SyncSource (need to sync 5000 KB [1250 bits set]).version: 0.7.0 svn $Rev: 1442 $ (api:74/proto:74)

0: cs:SyncSource st:Primary/Secondary ld:Consistentns:9276 nr:0 dw:0 dr:9404 al:0 bm:2 lo:0 pe:915 ua:32 ap:0

[=========>..........] sync'ed: 50.0% (4380/5000)Kfinish: 0:00:05 speed: 620 (620) K/sec

Essa saída significa que o DRBD está sincronizando os dados entre os nodos. O processo desincronização pode demorar um pouco, a mudança do valor rate da seção syncer pode ajudar aaumentar a velocidade.

39

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Vamos testar agora um pouquinho do DRBD.Primeiramente com o DRBD inicializado e sincronizado vamos montar a partição em um localdefinido, devemos escolher uma pasta que será o ponto de montagem, algo como /mnt/dados.debian: # mkdir /mnt/dados (essa pasta deve existir nos dois nodos)debian: # mount /dev/drbd0 /mnt/dados

Note que o dispositivo a ser montado é o /dev/drbd0 e não a partição onde os dados serãogravados (/dev/hda3), o drbd0 será tratado como se fosse a partição original (hda3), tudo serágravado nesse dispositivo. Vamos listar agora esse novo diretório, provavelmente ele estará va-zio.debian: # ls /mnt/dados

Vamos criar um arquivo qualquer:debian: # cd /mnt/dadosdebian:/mnt/dados# touch teste.txt

Vamos listar o diretório novamente para verificar se o arquivo foi realmente criado:debian:/mnt/dados# ls teste.txt

Agora vamos desmontar o dispositivo e parar o DRBD:debian:/mnt/dados# umount /dev/drbd0debian:/mnt/dados# /etc/init.d/drbd stop

Vamos tornar o nodo secundário em primário, montar o dispositivo e verificar que o arquivo quefoi criado no outro nodo está devidamente replicado:debian: # /etc/init.d/drbd startdebian: # drbdadm – –do-what-I-say primary alldebian: # mount /dev/drbd /mnt/dadosdebian: # ls /mnt/dados teste.txt

Uma coisa importante a ser notada é que obviamente os dados do dispositivo drbd0 não po-dem ser acessados se este não estiver montado, por esse motivo é impossível acessar os dadosno nodo secundário pois o dispositivo não estará montado neste, montar o /dev/drbd0 no nodosecundário enquanto o mesmo estiver montado no primário pode acarretar em corrompimento dosistema de arquivos, coisa que não é muito desejada (não monte nem no modo readonly).

3.29 Interpretando o /proc/drbd

Quando você executa o comando:debian: # cat /proc/drbd

Aparece uma espécie de log.version: 0.7.0 svn $Rev: 1442 $ (api:74/proto:74)0: cs:Connected st:Secondary/Secondary ld:Inconsistentns:0 nr:0 dw:0 dr:0 al:0 bm:1 lo:0 pe:0 ua:0 ap:0

Esse log tem vários parâmetros:

40

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

• cs - conection state (estado da conexão) - esse parâmetro pode assumir os valores:

1. Unconfigured (desconfigurado) - o dispositivo espera por configuração;

2. StandAlone (estado de espera) - não está tentando conectar a um nó, pedidos deentrada e saída são passados apenas localmente;

3. Unconnected (desconectado) - estado transitório;

4. WFConnection - um dispositivo espera por configuração do outro lado;

5. WFReportParams - estado transitório, enquanto espera pelo primeiro pacote na novaconexção TCP;

6. Connected (conectado) - tudo está ocorrendo com deveria;

7. WFBitMap S, T - estado transitório enquanto começa a sincronização;

8. SyncSource - sincronização em progresso, o nó tem os dados certos;

9. SyncTarget - sincronização em progresso, o nó tem dados inconsistentes;

10. PausedSyncS,T - a sincronização do dispisitivo foi interrompida enquanto o dispositivode maior prioridade estava resincronizando;

11. SkippedSyncS,T - isso nuca deve ser visto, é apenas para desenvolvedores.

• st - state (estado), Local/Remote (Local/Remoto) - esse parâmetro pode assumir os valores:

1. Primary (primário) - o nodo ativo, o meio de acessar o dispositivo;

2. Secundary (secundário) - o nodo passivo, não acessa o dispositivo, apenas espera osdados para serem espelhados;

3. Unknown (desconhecido) - sem função alguma;

• Id - local data consistency (consistência dos dados locais) - parâmetro que mostra a consis-tência dos dados locais, Consistent (consistente) ou Inconsistent (inconsistente).

• ns - network send (enviado pela rede);

• nr - network receive (recebido pela rede);

• dw - disk write (escrito no disco);

• dr - disk read (lido do disco);

• al - activity log updates (atualizações do registro de atividade);

• bm - bitmap updates (atualizações de bitmap);

• lo - reference count on local device (contagem de referência no dispositivo local);

• pe - pending (pendente);

• ua - unack’d, ainda esperando por ack;

• ap - application requests expecting io-completion (requisições da aplicação esperando porfinalização de IO (entrada e saída)).

41

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

3.30 Finalizando

Antes de terminar adicione ao fstab o /dev/drbd0 para ser montado automaticamente, issofuncionará principalmente com o heartbeat.debian: # nano /etc/fstabAdicione a linha: /dev/drbd0 /mnt/dados ext3 defaults,noauto 0 0

Obs.: O espaço entre os parâmetros é uma tabulação, por isso essa linha deve ser digitadaassim: /dev/drbd0-> pressione TAB ->/mnt/dados-> pressione TAB ->...; isso pode parecer óbviopara algumas pessoas, mas para outras não.Finalmente o DRBD está todo configurado e pronto para ser utilizado, mas este sozinho não temtanta utilidade pois o mesmo não é capaz, por exemplo, de inicializar o serviço drbd nodo secun-dário em caso de queda do primário (para isso utilizaremos o heartbeat).O site do DRBD tem bastante informação e de qualidade, com alguns conteúdos em português,para acessar o mesmo: http://www.drbd.org/.

3.30.1 Lição 7 - Instalação e configuração do Heartbeat

3.31 Heartbeat

Agora que já temos o DRBD instalado nas duas máquinas e totalmente funcional, temos quefazer com que o cluster seja capaz de se auto-ajustar em caso de falha, ou seja, se o nodo pri-mário vier a falhar o secundário tem de assumir todas as suas funções, inclusive a replicação dosdados que, como já foi dito anteriormente, o DRBD não é capaz de realizar esse failover sozinho.

Heartbeat significa batimento cardíaco, a função do programa Heartbeat é trocar pulsos entreos nodos para dizer que estes ainda estão vivos. Seguindo o nosso exemplo, o Heartbeat trocapulsos (heartbeats) entre os nodos através da interface ethernet dedicada entre esses dois nós,geralmente é recomendado que haja dois canais de comunicação entre os nodos, um serial eum ethernet, para caso um destes venha a falhar o outro permita a monitoração pelo Heartbeat.O grande problema de existir apenas uma interface de comunicação é que caso uma placa derede, por exemplo, queime, ocorreria o que chamamos de Split Brain Syndrome (Síndrome deCérebro Dividido), essa situação é totalmente indesejada. Se essa infeliz falha ocorrer enquantode um lado o nodo secundário acha que o primário caiu e assume todos os serviços, do outro, onodo primário percebe que o secundário caiu mas mesmo assim continua a disponibilizar os ser-viços, isso causará uma confusão enorme principalmente se houver uma base de dados e essafor atualizada nesse intervalo de tempo. Observando então esse problema notamos que não énada recomendável testar o sistema retirando o cabo de rede ou disabilitando qualquer que sejaa interface de comunicação.

3.32 Instalando os pré-requisitos

O Heartbeat também poderia ser instalado através da ferramenta APT, mas pelo mesmomotivo do DRBD instalaremos a partir de pacotes. Baixe o pacote do endereço http://linux-ha.org/download/index.html , aparecerão várias opções, mas a abordada aqui será a 1.2.4 porisso escolha o pacote heartbeat-1.2.4.tar.gz .Para a instalação do Heartbeat existem alguns programas que são pré-requisitos, esses serão

42

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

instalados pelo APT pois a instalação de cada pacote na mão tornaria o curso muito extenso,como eu disse anteriormente, nada impede que perguntas sejam feitas no fórum. Os pacotessão:

• iproute;

• adduser;

• libc6.1;

• libc6;

• libglib1.2;

• libnet1;

• libpils0;

• libstonith0;

• libatm1.

Algumas dessa ferramentas já devem estar instaladas como o iproute e adduser. Para instalaressas dependências damos então o comando:debian: # apt-get install iproute adduser libc6.1 libc6 libglib1.2 libnet1 ibpils0 libstonith0libatm1

Os que não forem usuários podem ter alguns problemas, mas nada que um pouco de esforçoe algumas perguntasno fórum não resolvam.

3.33 Instalando o Heartbeat

Vamos instalar então o Heartbeat. No diretório onde foi baixado o programa dê o comandopara descompactar:debian:/usr/src# tar zxvf heartbeat-1.2.4.tar.gz

Será criada então uma pasta chamada heartbeat-1.2.4, entre nela para fazer a compilação doprograma.debian:/usr/src# cd heartbeat-1.2.4debian:/usr/src/heartbeat-1.2.4# make clean ; make CC=gcc-3.xdebian:/usr/src/heartbeat-1.2.4# make install

Para evitar problemas, vamos utilizar o mesmo compilador do kernel e do DRBD. Em geral, ainstalação do Heartbeat não cria muitos problemas.Depois de ter instalado num dos nós é só instalar no outro, os usuários podem fazer uma coisamais prática ainda, criar um pacote para instalar na outra máquina sem ter que recompilar. Paracriar o pacote damos o comando:debian:/usr/src/heartbeat-1.2.4# dpkg-buildpackage -us -uc -b

Serão criados vários pacotes .deb, basta copiá-los para o outro nodo e instalar com o comando:debian:/usr/src/heartbeat-1.2.4# dpkg -i pacote_a_instalar.deb

43

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

3.34 Configurando o Heartbeat

Agora que o Heartbeat foi compilado e instalado falta apenas configurar os três scripts deconfiguração: ha.cf, haresources e authkeys.Antes de tudo devemos criar um grupo chamado haclient e um usuário hacluster.debian: # addgroup haclientdebian: # adduser hacluster

Agora vá no diretório com os fontes e entre no diretório doc onde existem exemplos dos arquivosde configuração, você deve copiá-los para /etc/ha.d, crie essa pasta se ela não existir.

debian: # cd /usr/src/heartbeat-1.2.4debian:/usr/src/heartbeat-1.2.4# cd docdebian:/usr/src/heartbeat-1.2.4/doc# cp ha.cf haresources authkeys /etc/ha.d/

3.35 Configurando o ha.cf

O primeiro arquivo a ser configurado é o ha.cf, nele ficam as configurações gerais que dizemrespeito ao Heartbeat.#Define o arquivo de debug, útil em algumas situações debugfile /var/log/ha-debug #Define oarquivo com os logs, muito útil para verificar o funcionamento do programa logfile /var/log/ha-log#Define o tempo entre os heartbeats em 2 segundos keepalive 2 #Um nodo é declarado mortoapós 30 segundos deadtime 30 #Tempo antes de enviar um warning de late heartbeat (heartbeatatrasado) para o arquivo de log warntime 10 #Como algumas redes demoram a funcionar após areinicialização, esse parâmetro deve ser definido para tratar essa situação (deve ser pelo menos odobro do deadtime) initdead 60 #Configuração da rede mcast eth0:0 255.0.0.0 694 1 0 #Se essaopção estiver ativada, supondo que o nodo primário fique fora do ar, na hora que ele voltar todosos serviços deixarão o nodo secundário e voltarão para o primário autofailback on #Os nodos quefazem parte do cluster, a opção "uname -n"no terminal exibe o nome do nodo node 1 node 2Copie este arquivo para o outro nodo, o mesmo deve ser idêntico nos dois nodos.Mais informações sobre a configuração do ha.cf: http://www.linux-ha.org/ha.cf

3.36 Configurando o haresources

O haresources é o arquivo responsável por levantar os serviços a serem monitorados, nonosso caso o DRBD e o apache, este foi definido como o nosso servidor web.Antes de mais nada vamos instalar o apache:debian: # apt-get install apacheNão será abordado o uso do apache neste curso pois o objetivo não é ensinar a montar um servi-dor e sim um sistema de alta disponibilidade. Para testar se o apache foi instalado corretamentesimplismente abra um browser qualquer (Firefox, Epiphany, Mozilla ...) e na barra de endereçosdigite "http://localhost", se tudo estiver certo aparecerá uma página de apresentação do apache.Depois que o apache for instalado ele geralmente é incializado, faça com que ele pare pois oHeartbeat é que deve inicializar todos os programas a serem monitorados.debian: # /etc/init.d/apache stop

44

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

Agora finalmente vamos configurar o haresources.debian: # nano /etc/ha.d/haresources/

Basta adicionar a linha:1 IPaddr::10.0.0.100 drbddisk Filesystem::/dev/drbd0::/mnt/dados::ext3 apache

Essa linha diz ao Heartbeat qual o nodo (1), o ip do cluster (10.0.0.100) e os programas a sereminicializados (drbddisk e apache).Obs1.: O ip do cluster é o ip pelo qual o servidor será acessado, não deve ser definido em ne-nhum outro local, nem no /etc/network/interfaces.Obs2.: O drbddisk fica no diretório /etc/ha.d/resource.d/drbddisk, ele é responsável por incializar o DRBD e todos os procedimentos correlatos.Obs3.: Alguns parâmetros foram passados no que diz respeito ao sistema de arquivos, essesparâmetros foram passados para o drbddisk, atitude muito recomendada.

Copie este arquivo para o outro nodo, o mesmo deve ser idêntico nos dois nodos.Mais informações sobre a configuração do haresources: http://www.linux-ha.org/haresources. Co-pie este arquivo para o outro nodo, o mesmo deve ser idêntico nos dois nodos.

3.37 Configurando o authkeys

O último arquivo a ser configurado é o authkeys, nele ficam as informações que dizem respeitoà autenticação. Podem ser escolhidos três métodos de autenticação:

• sha1 - se você quer o método mais seguro sem se importar com o consumo da CPU, utilizeesse método;

• md5 - se a rede não é segura mas você quer economizar recursos da CPU, utilize essemétodo;

• crc - se o heartbeat está sendo executado em uma rede segura use este método, é o queexige menos recursos.

Para configurar este arquivo:debian: # nano /etc/ha.d/authkeys

Para crc adicione as linhas:auth 22 crc

Para md5:auth 11 md5 uma_chave_que_você_desejar

Para sha1:auth 1 1 sha1 uma_chave_que_você_desejar

Devemos agora mudar a permissão do arquivo para 600:

45

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

debian: # chmod 600 /etc/ha.d/authkeys

Copie este arquivo para o outro nodo do cluster.

3.38 Iniciando o Heartbeat

Depois de todo esse trabalho, todos os scripts configurados, vamos iniciar o Heartbeat:debian1: # /etc/init.d/heartbeat start

Para acompanhar os logs da inicialização:debian1: # cat /var/log/ha-logÉ muito importante acompanhar os logs de inicialização pois eles dizem os erros que podem estaracontecendo.Executando o comando ifconfig podemos ver que a interface que foi definida para ser o ip docluster está levantada:debian1: # ifconfigeth0:0 Encapsulamento do Link: Ethernet Endereço de HW 00:11:C8:86:AF:F4inet end.: 10.0.0.100 Bcast:10.0.0.255 Masc:255.255.255.0UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1IRQ:193 Endereço de E/S:0x8800

Pronto, agora você tem um servidor web de alta disponibilidade quase completo, para testar oservidor basta digitar o ip do cluster na barra de endereços de qualquer navegador e se tudoestiver correto aparecerá a página inicial do apache.Lembre-se que para testar a disponibilidade do sistema não é nada recomendável retirar o cabode rede, tente algo como finalizar o heartbeat, desligar uma das máquinas ou qualquer outracoisa do tipo.

3.38.1 Lição 8 - Instalação e configuração do MON

3.39 MON

O último software para a configuração do cluster é o monitor MON, ele tem a função deverificar os serviços e o estado da rede e tomar uma atitude no caso de problemas, no nossocaso a atitude será o desligamento do Heartbeat. Uma situação que o MON agiria seria se, porexemplo, a placa de rede que comunica o nodo primário à rede externa queimasse ou por algummotivo parasse de responder à rede externa, nessa situação o MON derrubaria o Heartbeat, comisso na outra máquina o Heartbeat seria levantado e o serviço continuaria disponível.O mon trabalha com alguns scripts, os monitores e os alertas, os monitores tem como funçãomonitorar um dado serviço, os alertas executam alguma ação quando são devidamente invocadospelos monitores.

3.40 Instalando os pré-requisitos

O MON pode ser baixado em ftp://ftp.kernel.org/pub/software/admin/mon/, a versão utilizadaserá a 0.99.2, escolha então o pacote mon-0.99.2.tar.gz. Antes de mais nada vamos intalar os

46

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

pré-requisitos:

• libgcc1;

• libmon-perl;

• libtime-hires-perl;

• libtime-period-perl;

• perl;

• fping.

Agora é só intalar:debian: # apt-get install libgcc1 libmon-perl libtime-hires-perl libtime-period-perl perl fping

3.41 Instalando o MON

O primeiro passo para a instalação do programa é descompactar o arquivo baixado:debian:/usr/src# tar zxvf mon-0.99.2.tar.gzVamos criar um diretório para o MON:debian:/usr/src# mkdir /etc/ha.d/monAgora devemos copiar os arquivos do mon para esse diretório:debian:/usr/src# cp -r /etc/ha.d/mon/ /usr/src/mon-0.99.2Vamos agora editar o arquivo /etc/services:debian:/usr/src# cd /etc debian:/etc# nano servicesDevemos adicionar as seguintes linhas no arquivo:mon 2583/tcp mon 2583/udp

3.42 Configurando o MON

O último passo para terminar a instalação do MON é a configuração, para tal devemos editaro arquivo mon.cf. Um exemplo deste arquivo pode ser encontrado no diretório etc do diretório domon (/etc/ha.d/mon/etc/exemple.cf), ele deve ficar parecido com esse:

cfbasedir = /etc/ha.d/mon/etcalertdir = /etc/ha.d/mon/alert.dmondir = /etc/ha.d/mon/mon.dmaxprocs = 20histlength = 100historicfile = /var/log/mon.lograndstart = 60s

hostgroup cluster 1.0.0.1 1.0.0.2 192.168.1.198watch clusterservice fpinginterval 1mmonitor fping.monitor -a

47

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

period wd Mon-Frialert mail.alert root@localhostalert heartbeat.alertalertevery 1hperiod wd Sat-Sunalert heartbeat.alertalert mail.alert host@localhost

Depois de configurado este arquivo, basta iniciar o MON::/etc/ha.d/mon# ./mon -f -c /etc/ha.d/mon/mon.cf -b

3.43 Heartbeat.alert

Como pôde ser visto no arquivo de configuração exemplo do MON, em caso de erro algunsalertas são chamados, entre eles o heartbeat.alert. A única função do script heartbeat.alert édesligar o Heartbeat em caso de falha, o conteúdo desse script é:

#!/usr/bin/perl## Shutdown heartbeat# derived from Jim Trocki’s alert.template## Jim Trocki, [email protected]# Sandro Poppi, [email protected]## Copyright (C) 1998, Jim Trocki# 2001, Sandro Poppi## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA#use Getopt::Std;getopts ("s:g:h:t:l:u");

#

48

CDTC Centro de Difusão de Tecnologia e Conhecimento Brasil/DF

# the first line is summary information, adequate to send to a pager# or email subject line### the following lines normally contain more detailed information,# but this is monitor-dependent## see the "Alert Programs"section in mon(1) for an explanation# of the options that are passed to the monitor script.#$summary=<STDIN>;chomp $summary;

$t = localtime($opt_t);($wday,$mon,$day,$tm) = split (/\s+/, $t);

print «EOF;

Alert for group $opt_g, service $opt_sEOF

print "This alert was sent because service was restored\n"if ($opt_u);

print «EOF;This happened on $wday $mon $day $tmSummary information: $summaryArguments passed to this script: @ARGVDetailed information follows:

EOF

# shutdown heartbeatsystem ("/etc/init.d/heartbeat stop");

49