Mas hein?

Dos mais de 50 servidores aqui na empresa, três rodam windows: Domain Controller, Exchange e BES. Todos já aqui instalados e rodando quando cheguei.

Mas ai me envolvi no projeto de virtualização de servidores e começou minha dor de cabeça. Vale dizer que não uso Windows pessoalmente desde 1998, mas em 2001 fiz todos os cursos da certificação MCSE, sem nunca ter feito as provas. Afinal tenho até vergonha de admitir que fiz os cursos. uhauhauhauh

Agora eu quero ver

Como a esposa já tinha dito no blog dela, ela foi para Montreal passar uma semana estudando francês (e passeando, lógico) enquanto eu mantenho as coisas aqui funcionando. Na teoria.

Verdade seja dita, nunca fiquei uma semana sozinho em casa. Antes de me casar, mesmo quando meus pais iam viajar sempre tinha uma empregada que ia pra preparar as refeições, lavar a roupa, limpar a casa e arrumar a zona que eu fazia. Depois de casar (e já são quase 6 anos agora) eu nunca mais fiquei sozinho em casa. Quem acompanha o blog sabe que tenho experiência em me virar sozinho fora de casa, como no mês que passei em Nova York, mas não é a mesma coisa.

Eu, programador

O título oficial no trabalho é “Senior Systems Administrator” e tenho gasto mais de 80% do meu tempo nesse primeiro mês automatizando coisas.

Fato: Eu sou preguiçoso pra cacete e odeio trabalho repetitivo. Logo, automatizar é preciso. As coisas que automatizei eu raramente precisaria fazer eu mesmo, já que tem o pessoal mais júnior pra fazer. Porém se eles estiverem fazendo esse trabalho chato e tedioso, outras coisas chatas e tediosas iam sobrar pra mim. E projeto, que é legal, vai ficando pra depois. Entenderam onde quero chegar? 😛

Frase do dia

‘Ahh, the words “Should not” “Exchange” “Microsoft” and “Registry” in once sentence… 🙂 ‘ – Meu colega de trabalho em resposta a um email dizendo que uma mudança no registry deve resolver nosso problema com o Microsoft Exchange

Não reinvente a roda você também

Preâmbulo:

Recentemente coloquei no ar o FollowUpTime, que como já disse em outros posts é um sistema de monitoração para redes e servidores.

Como podem imaginar, um bocado de linhas de código está envolvida num sistema assim e a conta só do engine principal passa das 90 mil linhas. Isso sem incluir templates, javascripts, etc.

O sistema é composto de duas partes: Uma que roda num servidor principal gerenciando a maior parte das tarefas e as “probes”. As probes são pequenos scripts que recebem instruções sobre hosts a serem testados e respondem para o servidor principal com o tempo de resposta, um OK ou um FAIL. Simples assim.

São essas probes que temos espalhados por vários cantos do planeta.

Porém quando recebi a probe dos desenvolvedores me vi com um pequeno, mas incoveniente problema. Os desenvolvedores realmente optaram pelo princípio KISS. Eles me entregaram uma excelente probe que fazia o que era necessário. E nada mais. Eu tinha nas mãos um daemon que rodava em foreground e jogava mensagens para stdout e stderr e nada mais.

Eu não me demorei e ataquei o problema da forma errada, pensando como um programador e não como um administrador Unix. E acabei reinventado a roda.

Introdução – O problema

Quando percebi o que eu tinha nas mãos logo pensei nos problemas que eu precisava resolver:

  • Preciso iniciar o daemon sempre que der boot na máquina
  • Preciso ser capaz de rodar em daemon em background, ou vai me zoar a seqüencia de boot
  • Posso precisar parar/reiniciar/iniciar manualmente este daemon
  • Se o processo morrer eu tenho que ser notificado e que, de preferência, ele seja reiniciado automaticamente
  • E sim, esse processo não deve rodar como root

Já velhaco de Linux logo pensei num script para ser colocado em /etc/init.d/ que ia resolver boa parte dos meus problemas. Com uma combinação bonita de bash scripting, várias ferramentas e comandos Linux que só se conhece depois de muito tempo de casa (como nohup, pidof, &) e gambiarras na crontab eu consegui. Consegui reinventar a roda. Não vou entrar em detalhes da solução que fiz, pois apesar de 100% funcional não era nem de perto tão bonita quanto:

A solução – Daemontools

Nosso caro amigo D.J.B, autor do famoso Qmail também já passou por um problema parecido com o meu, mas ao invés de criar um solução simples para resolver um problema pontual ele foi mais longe. Ele criou uma solução global que atende o problema dele, o meu e provavelmente também o seu.

Na página oficial do daemontools tem uma tabela, que traduzo abaixo, comparando a ferramenta dele com outras abordagens (incluindo a minha, que utilizava init.d):

<td width="86" align="center" bgcolor="#2300dc">
  <strong><em><span style="font-family: Verdana; color: #ffffff;">inittab</span></em></strong>
</td>

<td width="86" align="center" bgcolor="#2300dc">
  <strong><em><span style="font-family: Verdana; color: #ffffff;">ttys</span></em></strong>
</td>

<td width="86" align="center" bgcolor="#2300dc">
  <strong><em><span style="font-family: Verdana; color: #ffffff;">init.d</span></em></strong>
</td>

<td width="86" align="center" bgcolor="#2300dc">
  <strong><em><span style="font-family: Verdana; color: #ffffff;">rc.local</span></em></strong>
</td>

<td style="border-right: 1px solid #000000;" width="86" align="center" bgcolor="#2300dc">
  <strong><em><span style="font-family: Verdana; color: #ffffff;">/service</span></em></strong>
</td>
<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Sim</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Sim</span>
</td>
<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Sim</span>
</td>
<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Sim</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Sim</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Sim</span>
</td>
<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Sim</span>
</td>
<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Sim</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Sim</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Sim</span>
</td>
<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Não</span>
</td>

<td style="border: 1px solid #000000;" align="center">
  <span style="font-family: Verdana;">Sim</span>
</td>
Funcionalidade
Fácil instalação e remoção de serviços
Simples startup inicial
Reinicializações confiáveis
Sinalização simples e confiável
Estado de processo limpo
Portabilidade

Dá para perceber que o cara pensou em tudo e não tem porquê reinventar a roda. Vamos utilizar o daemontools!

Lembrete: FollowUpTime

Pra quem já conhece, fica o lembrete. Mas para quem ainda não conhece, o FollowUpTime é um serviço de monitoramento de sites online.

Temos servidores em 3 continentes – a saber: America do Norte, America do Sul e Europa – e além de sites (aka HTTP) também conseguimos monitorar diversos outros protocolos. Além de no plano Golden ter a possibilidade de monitorar serviços customizados.

Dê um pulo no site e cadastre-se. O plano Bronze é gratuito e em menos de 5 minutos você já vai ter o site da sua empresa, seu site pessoal ou blog monitorado.

Novas fotos de comida

Para ver todas fotos de comida visite o meu álbum no gallery da esposa.

Hoje resolvi fazer um café da manhã parecido com o que foi servido num evento do antigo emprego:

[

](http://www.photos.sustenido.mus.br/main.php?g2_view=core.DownloadItem&g2_itemId=271&g2_serialNumber=2)Ovos mexidos, batatas fritas e feijão adocicado

Ainda preciso fazer um post sobre isso, mas compramos uma máquina de fazer pão. Já faz uns dois meses que só temos pão caseiro aqui. E vou dizer que ter a casa cheirando pão quente duas ou três vezes por semana não é nada mal.

Backup LMV via rede (GOA)

Isso é um artigo GOA – Gambiarra Oriented Architecture – Siga sob seu próprio risco.

A situação é a seguinte: Você tem uma partição LVM que precisa ser backupeada ASAP em outro servidor na rede. Você tem pouco espaço disponível e precisa disso para ontem. Nào tema!

O pré-requisito é que seu volume group deve ter de espaço livre o mesmo ou mais do que o uso real da partição.

VMware: iSCSI vs NFS

iSCSI é uma das grandes tendências do mercado. É indiscutível a enorme quantidade de aplicação e usos que podemos usar a tecnologia. Eu mesmo já comentei dele aqui quando fiz um lab usando iSCSI exportado do ZFS.

Mas a questão é uns dois meses atrás numa palestra técnica da HP sobre as novas linhas de servidores x86 e storages deles o engenheiro comentou, por alto, que ele havia – naquela semana – trabalhado em um cliente que tinha colocado em produção 16 blade servers em cima de um EVA 4400 onde os ESXi tinham disco local, mas as imagens da VMs eram compatilhadas na rede via NFS,  à partir de um blade server, mas esse com fiber channel ligado no storage.

 

Another Geek Blog

A geeky blog about technology and more.