New Post

Rss

Showing posts with label disponibilidade. Show all posts
Showing posts with label disponibilidade. Show all posts
Friday, May 11, 2012
no image

Supervisor: Aumentando a disponibilidade das suas aplicações Web

E se você pudesse controlar uma série de processos através de um comando? Ou de garantir que serviços “down” sejam reiniciados automaticamente? Ou ainda, agrupar seus serviços e poder reiniciá-los com um simples comando de terminal?

Supervisor aparece para facilitar muito a vida de quem precisa administrar servidores Web, e não tem muito tempo a perder com criação de rotinas, ou mesmo com trabalho manual.

A proposta do Supervisor é simples: permitir que usuários possam controlar e monitorar processos (e grupos de processos) em um sistema Unix-like.

Em suma, o Supervisor é um programa escrito em Python, capaz de iniciar, reiniciar e parar outros programas. Mas, o que me chamou mais a atenção, é que ele é capaz de reiniciar programas “crashados” automaticamente.

Isso é possível pois, por baixo dos panos, o Supervisor é um serviço que inicia todos os demais como subprocessos. Desse modo, é capaz de monitorar o estado dos mesmos, e numa eventual “queda”, reiniciar um determinado processo/serviço imediatamente.

Ou seja, funciona como uma ferramenta centralizadora e de monitoramento. E que ainda serve uma API para gerenciamento remoto, através de XML-RPC.

Para instalar, basta utilizar o pip:

Vamos gerar um arquivo de configuração básico:

$ echo_supervisord_conf > /etc/supervisord.conf

Vamos aproveitar que falamos recentemente sobre a instalação do Nginx, para demonstrar o princípio do Supervisor. Adicione as seguintes linhas ao arquivo /etc/supervisord.conf:

[program:nginx]command=/usr/local/nginx/sbin/nginx

Agora iniciamos o serviço do Supervisor:

E através do supervisorctl, vamos iniciar e parar o Nginx:

$ supervisorctl start allnginx: started $ ps aux | grep nginxroot 1863 0.0 0.1 (...) /usr/local/nginx/sbin/nginx $ supervisorctl stop nginxnginx: stopped

E agora, o “pulo do gato”. Com o Nginx iniciado via Supervisor, vamos fechá-lo através de um comando kill:

$ supervisorctl start nginxnginx: started $ killall nginx $ ps aux | grep nginxroot 1917 0.0 0.1 (...) /usr/local/nginx/sbin/nginx

Magia? Que nada! É a ferramenta garantindo que os nossos processos não fiquem “down”. Brandon Konkle e Senko Rasic possuem exemplos utilizando um cenário real com Django e Nginx.

Embora o Supervisor seja uma ferramenta espetacular, acredito que muitos profissionais já possuam intimidade com os seus servidores, bem como já tenham construído sets de scripts, e atalhos em geral. Isso, de fato, faz a gente questionar a utilidade dela.

A possibilidade de monitorar e garantir a disponibilidade dos processos foi o que mais me agradou. Se você tem “poderes administrativos” na sua hospedagem, talvez o Supervisor seja a ferramenta que faltava para você possa dormir mais tranquilo.

Tecnólogo em Análise e Desenvolvimento de Sistemas pelo Centro Universitário de Jaraguá do Sul (UNERJ), Técnico em Informática com ênfase em Sistemas de Informação pelo Centro Politécnico Geraldo Werninghaus (CEPEG). Desenvolvedor Web defensor dos padrões Web. Usuário Linux, apaixonado por Python e alucinado por Django. Escreve quando pode no http://www.klauslaube.com.br.

Veja perfil e 83 post(s)

Thursday, July 14, 2011
no image

Negócios x Infraestrutura de TI: em busca da alta disponibilidade

Em um texto anterior, onde também abordei o tema Negócios x Infraestrutura de TI, explorei um pouco o universo do crescimento de negócios e a inevitável e necessária expansão da TI. À medida que uma empresa cresce, seu ambiente de TI deve estar preparado para acompanhar as mudanças e as novas exigências impostas, permitindo que gestores possam aumentar ou adaptar sua capacidade diante das demandas apresentadas.

Existe uma frase que se encaixa perfeitamente no que quero passar neste novo texto: com o crescimento surgem novas responsabilidades. Se antes da expansão, a exigência principal era a obtenção de respostas mais rápidas, agora surgem outras exigências e uma delas é a alta disponibilidade.

Vamos entender de forma resumida o que é “alta disponibilidade”

O termo Alta Disponibilidade refere-se à capacidade de um sistema informático em utilizar mecanismos de detecção, recuperação e mascaramento de falhas com o objetivo de manter os serviços disponíveis o máximo de tempo possível. Considera-se que um sistema não está disponível quando um ou mais usuários não conseguem acesso total ou parcial a este sistema, sendo o tempo total de indisponibilidade conhecido pelo termo downtime.

A disponibilidade de um servidor é geralmente medida em “noves”, conforme segue abaixo:

um nove indica 90% a 98% de disponibilidade – em média até 36hrs/mês indisponíveldois noves indicam 99% de disponibilidade – em média até 7hrs/mês indisponível3 noves indicam 99,9% de disponibilidade – em média até 40 minutos/mês indisponível4 noves indicam 99,99% de disponibilidade – em média até 4 minutos/mês indisponível5 noves é considerada a disponibilidade definitiva de serviços – em média 25 seg/mês indisponível.

Um exemplo legal para entender bem estes “noves” são os serviços oferecidos por empresas de hospedagem. A grande maioria das que vi até hoje oferecem disponibilidade de 99,9%, ou seja, o servidor pode ficar fora do ar em média 40 minutos por mês – agora você já sabe quando meter bronca em seu host :)

Vale ressaltar que é considerada indisponibilidade toda e qualquer parada, incluindo manutenções, quedas de energia e outras operações que exijam a parada do equipamento.

Como alcançar a Alta Disponibilidade

Para não estender demais, vou falar apenas um dos requisitos para que seja possível alcançar a alta disponibilidade de serviços: a redundância.

Ter uma estrutura redundante significa reduzir ao máximo os chamados Pontos Únicos de Falha – SPOF (Single Point Of Failure). Os SPOF são recursos que, em caso de falha, provocam a indisponibilidade total dos serviços. Um exemplo claro de ponto único de falha no nosso dia-a-dia é a fonte de alimentação de energia de um desktop. Como geralmente desktops não possuem redundância neste ponto, se a fonte vier a queimar teremos a total indisponibilidade de nosso sistema, pois não conseguiremos nem sequer ligar a máquina.

Agora pensando em um ambiente complexo de TI, o ideal é sempre saber quais são os SPOF do mesmo, a fim de aplicar a devida redundância nestes pontos críticos. Alguns pontos que exigem redundância:

Alimentação de energia: utilizar fontes redundantes que se baseiam em módulos substituíveis, nobreaks de boa autonomia, geradores (dependendo do tamanho da empresa);Armazenamento: aplicar redundância de discos utilizando controladora RAID com suporte a hot-swap;Link de internet: se a empresa necessita de disponibilidade total para acesso a internet, considera-se a contratação de links redundantes;e outros

A incorporação da Alta Disponibilidade em um ambiente de TI exige um planejamento rigoroso e requer constante monitoramento e administração, além de soluções combinadas de hardware/software confiáveis como as apresentadas pela HP em sua linha de servidores HP Proliant – vale a pena conhecer!

Se você quiser saber mais sobre Alta Disponibilidade, leia este ótimo artigo – http://ha-mc.org/node/15 – que serviu de referência para este que você acabou de ler.