Monitoramento de servidores remotos com IPMI REDES Observador de máquinas O IPMI, Intelligent Platform Management Interface, permite o monitoramento do estado de servidores remotos, mesmo quando desligados. por Justin Penney O ambiente Linux oferece diversas técnicas para monitorar e gerenciar sistemas remotos, mas a administração remota convencional utiliza conexões com o sistema operacional da máquina remota. O que acontece quando a máquina a ser monitorada está desligada ou comprometida de alguma forma? A Intelligent Platform Management Interface (IPMI)[1] é uma interface para monitorar e controlar o hardware de computadores independentemente do sistema operacional. Quando o sistema está inativo, é possível usar o IPMI para ligar ou desligar o computador. O IPMI também oferece acesso a várias outras informações e configurações de hardware que podem não ser acessíveis a ferramentas-padrão de gerenciamento. A interface IPMI controla a energia, lê sensores ambientais e até redireciona o console do sistema através da rede. Essa tecnologia requer o suporte por parte do fabricante da placamãe ou do computador. A configuração inicial do IPMI costuma ser complexa e frustrante, mas o esforço é compensado na primeira vez em que o IPMI evita uma viagem do administrador ao datacenter. A especificação IPMI atual está na versão 2.0. As interfaces da versão 1.5 ainda são comuns, assim como controladores com uma mistura de recursos de ambas versões. Essas 62 versões mistas, comumente chamadas de IPMI v1.5/2.0, geralmente fornecem mecanismos criptografados de autenticação mais robustos, assim como o suporte a Serial Over LAN (SOL). BMC O sistema IPMI é baseado num componente de hardware conhecido como Baseboard Management Controller (BMC). O BMC recebe informações a partir de outros controladores periféricos, localizados no chassi, e serve como ponto de contato para a comunicação remota. Alguns computadores montados – ou os barebones – possuem essa funcionalidade IPMI embutida. Placas-mãe disponíveis no varejo normalmente têm um BMC IPMI por meio de um slot SO-DIMM, PCI ou cabo chato. O uso da interface LAN varia entre fabricantes. Alguns produtos oferecem uma porta LAN conectada diretamente ao BMC; outros usam uma porta LAN da placa-mãe. Um terceiro tipo utiliza uma porta da placa-mãe, mas intercepta a comunicação IPMI enquanto lida com o restante do tráfego de rede com o driver da LAN. Essa técnica, chamada de pass-through, exige a cooperação do driver da LAN, o que pode ou não ser uma dificuldade no Linux. Configuração inicial A configuração inicial de uma interface IPMI varia bastante entre fabricantes. Algumas são bem polidas, demandando pouco mais que especificar um IP, enquanto outras possuem vários componentes de firmware que precisam ser modificados (por flash) e configurados em múltiplos locais. O projeto OpenIPMI[2] oferece um driver IPMI para Linux que funciona com alguns BMCs. IPMItool O utilitário de linha de comando do Linux IPMItool permite a configuração e comunicação com sistemas equipados com IPMI. Várias das principais distribuições Linux incluem pacotes com esse utilitário e seu código-fonte está disponível no site do projeto[3]. A ferramenta fornece vários comandos para comunicação com a infra-estrutura IPMI (tabela 1). Após um BMC ser configurado localmente, pode-se usar o IPMItool para configurar a interface LAN (exemplo 1). O verdadeiro poder do IPMI está na interface LAN. Depois que ela for configurada, o BMC responderá a requisições remotas enquanto o sistema estiver recebendo energia (standby Exemplo 1: Informações da interface LAN 01 ipmitool -I open lan set <canal> ipaddr <IP> 02 ipmitool -I open lan set <canal> netmask <máscara> 03 ipmitool -I open lan set <canal> defgw <gateway padrão> http://www.linuxmagazine.com.br IPMI | REDES Tabela 1: Alguns comandos do IPMItool Comando Efeito sol activate Inicia uma sessão SOL. lan print Exibe informações da LAN. chassis status Exibe o estado da energia e do chassi. power Controle de energia (on, off, cycle, reset, diag). sensor Exibe informações do sensor ambiental. sensor get <nome do sensor> Obtém os valores do sensor informado. sel list Exibe o log de eventos do sistema. sel clear Limpa o log de eventos do sistema. mc info Exibe informações sobre o BMC. mc reset <warm ou cold> Reinicia o BMC. incluído). O BMC fornece o controle remoto de energia, dá acesso a configurações de BIOS, monitora sensores ambientais, acessa o console e, em alguns casos, suporta até KVM (teclado, vídeo e mouse) sobre IP. Alguns fabricantes suportam mídias virtuais que permitem a emulação de disquetes USB e leitores de CD; isso geralmente requer um utilitário – fornecido pelo fabricante – na máquina cliente, que pode ou não ser suportado no ambiente Linux. A interface LAN da versão 2.0 do IPMI é chamada de lanplus pelo ipmitool, enquanto a interface da versão 1.5 é referida apenas como lan. A maioria dos controladores de gerenciamento atuais suporta a especificação 2.0 e usa a interface lanplus. No caso de máquinas com BMCs mistos 1.5/2.0, caso a interface lanplus não retorne resposta, deve-se tentar a interface lan. Conexões com o BMC começam com a especificação da interface – lanplus, no caso –, o IP e o nome de usuário. Em nosso exemplo, a opção -a faz o ipmitool pedir a senha: operacional estejam configurados adequadamente. A configuração da BIOS deve conter uma seção intitulada remote console, serial console ou algo nessa linha e o manual do BMC especificará as configurações necessárias. Uma vez configurado, será possível ver todas as mensagens do POST; também é possível entrar na configuração da BIOS através do console SOL. É importante atentar à saída na tela, durante o POST, pois algumas teclas – principalmente [Del] e [F9] a [F12] – são atribuídas diferentemente. Se [Del] costuma ser usado para en- ipmitool -I lanplus -U ➥admin -a -H ➥192.168.2.1 chassis ➥power status Password: Chassis Power is off A máquina está desligada. Para ligá-la, basta o comando: Figura 1 Saída do POST da BIOS. ipmitool -I lanplus -U admin -a -H ➥192.168.2.1 chassis power on A tabela 1 e a documentação do IPMItool detalham outros comandos. Serial pela LAN O protocolo SOL oferece aos administradores o mesmo acesso a um computador que teriam por meio de um teclado e um monitor diretamente conectados à máquina. O SOL requer que a BIOS, o carregador de inicialização e o sistema trar na configuração da BIOS, talvez seja necessário pressionar [F4]. Esse tipo de mapeamento é informado, geralmente, nas linhas que contêm on remote keyboard (figura 1). O Grub precisa ser configurado para exibir a interface do SOL. A figura 2 mostra o arquivo /boot/grub/ grub.conf configurado para um console serial através da COM2. O acesso ao Grub pelo consolepadrão será permitido se for pressionada uma tecla, no intervalo de ipmitool -I lanplus -U ➥<usuário> -a -H <IP> Um teste simples para a interface é retornar o estado de energia da máquina: Linux Magazine #43 | Junho de 2008 Figura 2 A ttyS1 é especificada para o console do sistema. 63 REDES | IPMI Última etapa Figura 3 Grub sobre SOL. O último passo é configurar um getty para exibir um prompt de login pelo console serial. A maioria das distribuições Linux trazem o agetty, que é o mais comumente usado em consoles seriais. Iniciar um novo getty é simples; basta adicionar uma linha ao arquivo /etc/inittab: s0:2345:/sbin/agetty ttyS1 ➥ 57600 vt100 Para impedir o agetty de tentar detectar a linha no console serial, pode ser necessário acrescentar o argumento -L. Adicionar ttyS1 ao arquivo /etc/securetty permite que o Figura 4 As mensagens do kernel e do init são usuário root faça o login pelo exibidas por SOL. console serial. Esse arquivo dez segundos, em um teclado ligado especifica quais dispositivos terminais diretamente à máquina. Com um devem ser considerados seguros o monitor conectado diretamente à suficiente para login pelo root. máquina, a mensagem “Press any Executar init -q como root força key to continue” é exibida uma o init a recarregar sua configuração vez a cada segundo durante o pe- e iniciar um novo processo do agetríodo de espera. A figura 3 mostra ty. Nesse ponto, já deve ser possível um exemplo do Grub sobre a in- iniciar uma sessão SOL e acessar a máquina a qualquer momento: terface SOL. Quase toda a saída durante o processo de inicialização será exibida ipmitool -I lanplus -U admin -a -H no console-serial (figura 4) em vez ➥ 192.168.2.1 sol activate de no console padrão. Quando um monitor estiver conectado, serão mostradas apenas algumas mensagens e depois o console não responderá Se o sistema em questão não suporaté que os programas getty iniciem tar o IPMI, ainda é possível obter alos dispositivos normais de console, gumas das mesmas funcionalidades o que pode causar confusão e frus- por meio de outras ferramentas. Por tração ao tentar diagnosticar um exemplo, o controle de energia e o computador mal comportado. suporte ao console serial são possíveis Para evitar o redirecionamento com uso de hardware externo. Unidado console, basta retirar da linha des de energia controladas por rede, do kernel no Grub o termo console. como o PDU (unidade distribuidora Após a edição da linha do kernel, de energia) Switched Rack da APC pode-se iniciá-lo. ou o Sentry, da Server Technologies, Alternativa 64 permitem que seja ligado, desligado ou reiniciado qualquer dispositivo conectado a eles. Servidores de console serial, tais como os da Avocent e Open Gear, permitem o acesso ao console pela porta serial da placa-mãe. Sua configuração é semelhante àquela para o suporte a porta serial com IPMI. Algumas placas-mãe permitem também o redirecionamento da BIOS. Diferentemente do IPMI, as interfaces para esses dispositivos não seguem o padrão, impossibilitando o uso de instruções genéricas. Conclusões Como os processos de cada fabricante são diferentes, é preciso seguir suas instruções. Fazer a configuração inicial de uma implementação de IPMI pode ser um desafio; porém, esse trabalho, junto com o planejamento, pode economizar um tempo considerável em caso de falha. A possibilidade de visualizar os erros do POST ou dos estágios iniciais de carregamento do kernel pode ser fundamental na tarefa de diagnóstico de um servidor problemático. ■ Mais informações [1] Especificação da IPMI: http://download.intel. com/design/servers/ipmi/ IPMIv2_0rev1_0.pdf [2] OpenIPMI: http:// openipmi.sourceforge.net/ [3] IPMItool: htpp://ipmitool. sourceforge.net/ Sobre o autor Justin Penney começou a usar Linux por hobby em 1997 e agora projeta clusters computacionais de alta performance. http://www.linuxmagazine.com.br