Proteção de Energia e UPS no Linux: Desligar Servidores com o NUT

Proteção de Energia e UPS no Linux: Desligar Servidores com o NUT

O Inimigo Silencioso: O Que Acontece Quando a Eletricidade Falha de Repente

Na administração de infraestruturas, passas semanas a proteger os teus servidores Linux contra ataques externos, a configurar regras no firewall e a ajustar índices na base de dados. No entanto, uma das causas mais comuns de perda catastrófica de dados não envolve nenhum hacker: basta uma trovoada mais forte mandar abaixo o quadro elétrico do escritório ou uma obra na rua cortar o cabo de energia do edifício.

Quando a eletricidade cai num piscar de olhos, os servidores não se desligam: sofrem uma paragem violenta.

Naquele milissegundo:

  1. Os Dados Pendentes em RAM Desaparecem: O Linux guarda gigabytes de alterações em memória volátil antes de as escrever no disco físico. Com o corte de corrente, esses dados evaporam-se no ar.
  2. Corrupção de Registos de Transação (WAL): Bases de dados relacionais como o PostgreSQL mantêm registos de escrita prévia (Write-Ahead Logs). Uma paragem forçada deixa blocos a meio, exigindo reparações demoradas no arranque seguinte.
  3. Danos no Controlador dos Discos SSD: Os controladores NVMe gerem tabelas internas complexas de tradução de blocos (FTL). Um corte súbito a meio de um ciclo de escrita pode inutilizar o disco de forma permanente.

O IMPACTO DE UM CORTE DE ENERGIA SEM PROTEÇÃO

  • Falha Geral na Rede Elétrica Pública
  • A Fonte do Servidor Desliga-se Instantaneamente!
  • DANOS IMEDIATOS:
  • Memória volátil com escritas pendentes: PERDIDA!
  • Transação na base de dados interrompida: Exige recuperação!
  • Tabela FTL do disco SSD corrompida: Risco de avaria física!

Ter uma UPS (Unidade de Alimentação Ininterrupta) ligada à tomada é apenas metade da solução. Uma bateria sem software inteligente apenas adia o desastre durante quinze minutos até a carga acabar.

Para cumprires os padrões de resiliência do nosso alojamento gerido, precisas de instalar o Network UPS Tools (NUT) para orquestrares o encerramento automático e gracioso de todos os teus servidores.

A Arquitetura do NUT: Uma Única Bateria Para Todo o Bastidor

Uma boa UPS de 1500VA ou 3000VA (como as da APC, Eaton ou CyberPower) consegue alimentar vários equipamentos no teu bastidor: o servidor principal de virtualização, o servidor de ficheiros NAS e o router de rede.

No entanto, a UPS física tem apenas uma porta de comunicação USB. Como é que os três servidores sabem a percentagem restante da bateria?

O Network UPS Tools (NUT) resolve isto com uma arquitetura distribuída de cliente e servidor:

ARQUITETURA DE REDE DO NETWORK UPS TOOLS (NUT)

  • Bateria UPS Física: (Cabo USB de Telemetria: percentagem de carga e estado)
  • SERVIDOR NUT / NÓ PRIMÁRIO (servidor01.interno)
  • Driver usbhid-ups: Lê os dados do hardware por USB
  • Daemon upsd: Transmite telemetria na porta 3493 da rede local
  • Monitor upsmon master: Coordena o encerramento geral
  • (Envia estado da bateria pela rede interna)
  • CLIENTE NUT (servidor02): Corre: upsmon slave • Desliga-se quando carga <20%
  • CLIENTE NUT (servidor03 - NAS): Corre: upsmon slave • Desliga-se quando carga <20%
  1. Driver de Hardware (usbhid-ups): Comunica diretamente com a UPS pelo cabo USB.
  2. Servidor de Rede (upsd): Partilha as métricas na porta TCP 3493 com as restantes máquinas da rede local.
  3. Agente de Monitorização (upsmon): Corre em todas as máquinas. Os nós secundários (slaves) desligam-se primeiro para aliviar a bateria; o nó primário (master) encerra por último e desliga a UPS.

Configurar o Servidor NUT no Teu Servidor Debian

No servidor fisicamente ligado à UPS pelo cabo USB, instala os pacotes oficiais no Debian:

sudo apt-get update
sudo apt-get install -y nut nut-client nut-server

1. Configurar o Driver da UPS

Edita o ficheiro /etc/nut/ups.conf:

# /etc/nut/ups.conf
maxretry = 3

[ups-bastidor]
    driver = usbhid-ups
    port = auto
    desc = "APC Smart-UPS 1500VA do Bastidor Principal"
    pollinterval = 5

Testa a ligação física executando sudo upsdrvctl start.

2. Ativar o Serviço de Rede (upsd)

Edita o /etc/nut/upsd.conf para escutar na rede local:

# /etc/nut/upsd.conf
LISTEN 127.0.0.1 3493
LISTEN 192.168.10.10 3493

Define as credenciais de acesso em /etc/nut/upsd.users:

# /etc/nut/upsd.users
[upsmon_master]
    password = ChaveSeguraMaster2026
    upsmon master

[upsmon_slave]
    password = ChavePartilhadaSlaves2026
    upsmon slave

3. Configurar o Daemon de Monitorização (upsmon)

Edita o /etc/nut/upsmon.conf:

# /etc/nut/upsmon.conf no Nó Primário
MONITOR ups-bastidor@localhost 1 upsmon_master ChaveSeguraMaster2026 master

MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
NOTIFYCMD /usr/local/bin/notificar-ups.sh
POLLFREQ 5
POLLFREQALERT 2
FINALDELAY 5

Define MODE=netserver em /etc/nut/nut.conf e reinicia os serviços através do systemd:

sudo systemctl restart nut-server nut-client

Podes consultar o estado da bateria com upsc ups-bastidor@localhost:

battery.charge: 100
battery.runtime: 2450
input.voltage: 230.2
ups.load: 24
ups.status: OL

O estado OL (On-Line) confirma que o servidor está a trabalhar normalmente com eletricidade da rede pública.

Configurar os Servidores Secundários na Rede Local

Nas restantes máquinas ligadas à mesma bateria, instalas apenas o agente de cliente:

sudo apt-get install -y nut-client

Ajustas o /etc/nut/nut.conf para MODE=netclient e configuras o /etc/nut/upsmon.conf:

# /etc/nut/upsmon.conf nos Nós Secundários
MONITOR ups-bastidor@192.168.10.10 1 upsmon_slave ChavePartilhadaSlaves2026 slave

SHUTDOWNCMD "/sbin/shutdown -h +0"
NOTIFYCMD /usr/local/bin/notificar-ups.sh

Ativa o serviço:

sudo systemctl enable --now nut-client

Se faltar a eletricidade, a UPS entra no modo OB (On Battery). Se a carga cair para o limiar de emergência, o nó primário emite a ordem de paragem forçada (FSD). Todos os servidores secundários fecham as suas aplicações e desligam-se de forma controlada.

SEQUÊNCIA DE ENCERRAMENTO COORDENADO

  • 00:00 - Falha de corrente! A UPS assume a carga a bateria (Status: OB).
  • 06:00 - A bateria atinge o nível crítico de segurança (Status: OB LB).
  • 06:01 - O Master emite a ordem de encerramento geral pela rede local.
  • 06:02 - Os servidores secundários fecham serviços e desligam-se.
  • 06:03 - O Master confirma que as outras máquinas já estão desligadas.
  • 06:04 - O Master grava caches no disco, fecha a base de dados e desliga-se.
  • 06:05 - A UPS corta a alimentação das tomadas. Zero perda de dados!

Desta forma, evitas qualquer corrupção em disco, cumprindo o princípio de anti-over-engineering.

Reinício Automático: Configurar o AC Power State na BIOS

Um sistema de proteção de energia só é perfeito se funcionar sem intervenção humana: não queres apenas que as máquinas se desliguem em segurança, mas também que arranquem sozinhas assim que a eletricidade voltar.

Para garantires isto:

  1. Entras nas definições da BIOS/UEFI da motherboard do servidor.
  2. Procuras a secção de gestão de energia (Power Management).
  3. Alteras o parâmetro AC Power Recovery (ou Restore on AC Power Loss) de Power Off para Power On.

Quando o NUT conclui o encerramento, manda a UPS cortar as tomadas. Quando a eletricidade pública regressar, a UPS volta a alimentar as saídas. A motherboard deteta a corrente nova e liga o servidor automaticamente sem ninguém ter de carregar em botões no datacenter. Tens mais scripts de apoio no GitHub.

Boas Práticas Operacionais: Testes de Bateria e Notificações

Nas rotinas regulares de manutenção desenhadas pela WebXtek, aplica estas recomendações fundamentais:

  1. Faz Testes de Carga Semestrais: As baterias de chumbo perdem capacidade química com o passar dos anos. Uma bateria que indica 100% no ecrã pode descarregar em 20 segundos se já estiver gasta. Dispara testes de calibração duas vezes por ano para confirmares a autonomia real.
  2. Cuidado com a Temperatura da Sala: Manter as UPS em locais quentes degrada as células de bateria muito mais depressa. Cada aumento de 8°C na temperatura ambiente reduz a vida útil da bateria para metade.
  3. Envia Notificações Automáticas: Liga o script de alerta do NUT para receberes um aviso no telemóvel no segundo exato em que a luz falhar:
    # Em /usr/local/bin/notificar-ups.sh
    curl -s -X POST -H 'Content-type: application/json' \
      --data "{\"text\":\"⚡ *Alerta de Energia em $(hostname)*: $NOTIFYTYPE - UPS: $UPSNAME\"}" \
      https://webhook.interna/alertas

Se a tua empresa precisa de desenhar soluções físicas de hardware e garantir a continuidade de negócio dos teus servidores locais, a nossa equipa de consultoria técnica apoia o desenho e implementação de infraestruturas resilientes.

Na prática, aplicas exatamente estes padrões operacionais em setores exigentes como especialistas em devops e arquitetura cloud e provedores de cloud computing e iaas. Quando alinhas a tua estrutura através de alojamento gerido para websites e aplicações e consultoria técnica antes de construir, transformas boas práticas técnicas numa vantagem competitiva real e mensurável para o teu negócio.

[+] [ INDEX_DIRECTORY ] 17 tópicos ▼
[ SYSTEM.FAQ ]

Perguntas Frequentes

O que acontece aos sistemas de ficheiros no Linux durante um corte súbito de energia?

Os dados pendentes que estavam na memória RAM volátil perdem-se antes de serem gravados no disco. As transações na base de dados em PostgreSQL ficam interrompidas e os controladores de discos SSD NVMe podem corromper as suas tabelas internas de mapeamento de memória flash.

Qual é a diferença entre ligar a UPS diretamente por USB e usar a rede com o NUT?

Ligar apenas o cabo USB permite controlar apenas uma máquina. O Network UPS Tools (NUT) cria uma arquitetura de cliente e servidor na rede local: o servidor lê a telemetria da bateria por USB e avisa todos os outros servidores Linux do bastidor por rede para se desligarem em simultâneo.

Qual é a diferença entre o modo master (primário) e o modo slave (secundário) no upsmon?

O nó secundário (slave) recebe o aviso de bateria fraca e desliga-se de imediato para poupar energia da UPS. O nó primário (master) aguarda que todos os secundários terminem a sua paragem, desliga a base de dados em segurança e ordena à própria UPS que corte a alimentação.

Como garantir que os servidores voltam a ligar sozinhos quando a eletricidade regressar?

O NUT envia um comando de corte programado à UPS antes de se desligar. A UPS corta a saída de corrente passado meio minuto. Na BIOS das motherboards dos servidores, configuras a opção AC Power Recovery para Power On, garantindo que as máquinas arrancam sozinhas assim que a eletricidade voltar.

> INICIAR_PROJETO

Precisa de um website que transmita confiança, apareça na pesquisa e dê mais força à sua presença digital? Comece a conversa aqui.