Janelas de manutenção: o que se faz sob carga em vez delas
A maior parte do trabalho planeado em infraestrutura redundante acontece enquanto ela serve. As alterações que precisam de uma janela são desenhadas, delimitadas e acordadas consigo primeiro.
Neste artigo 5 secções
- Controladores duplos, fabrics duplos, pares de switches e live migration existem para que firmware, hardware e configuração possam ser alterados enquanto a plataforma continua a servir.
- A disciplina está na verificação antes da alteração: um caminho de reserva só conta depois de ter sido visto a transportar a carga.
- Algumas alterações merecem mesmo uma janela. Uma janela bem desenhada nomeia o componente, o mecanismo, o impacto visível esperado e uma duração delimitada, e o momento é acordado consigo.
Dois tipos de trabalho planeado
O trabalho planeado divide-se em dois grupos. O primeiro é absorvido pelo desenho: um controlador de storage a receber firmware novo, um leaf switch a ser substituído, um host de hypervisor a ir abaixo para memória, um par de firewalls a aplicar uma atualização. O segundo altera algo que naquele momento não tem par: um cutover de plataforma, a sincronização final de uma migração de storage, uma alteração de esquema irreversível. O primeiro grupo faz-se sob carga. O segundo recebe uma janela, e a janela é desenhada em vez de meramente anunciada.
O que o desenho absorve
Um array HPE 3PAR tem dois nós controladores a servir os mesmos volumes, com cada host ligado através de dois fabrics Brocade independentes. O firmware entra num nó de cada vez. Enquanto esse reinicia, a camada de multipath dos hosts mantém o I/O a fluir pelos caminhos sobreviventes, e o nó volta a juntar-se antes de o segundo ser tocado. O mesmo padrão aplica-se em cada camada que foi construída em pares. Os leaves Cisco Nexus 9000 são instalados em pares, com cada host em bond para ambos, para que um switch possa receber um upgrade ou uma substituição enquanto o outro link transporta o tráfego. Os hosts de hypervisor são esvaziados por live migration antes de lhes ser feito o que quer que seja, e as máquinas virtuais voltam depois. Os edge routers mantêm sessões com mais do que um carrier, e uma sessão é drenada antes de o seu router ser tocado.
Nada disto é invulgar num datacenter sério. O que importa é se os pares são exercitados. Um par que existe no diagrama mas não transportou produção é uma suposição, e o momento para descobrir que era uma suposição não é durante a alteração.
Verifique o par antes de tocar no principal
A disciplina útil é a verificação que acontece antes da alteração. Antes de um controlador ir abaixo, pergunta-se a cada host ligado quantos caminhos ativos mantém para o array. Um host que reporte um único caminho é corrigido primeiro, porque para esse host a janela chegaria sem ser convidada. Antes de se tocar num switch, lê-se o bond em cada host para confirmar que ambos os membros estão up e a passar tráfego, e confirma-se que o segundo switch está a encaminhar e não apenas ligado à corrente. Antes de se drenar um host, confirma-se que o destino da migração tem margem para o que vem.
# on each attached host, before controller work: every LUN should show two or more active paths
$ multipath -ll | grep -c 'active ready'
# before switch work: both bond members up and passing traffic
$ grep -E 'Slave Interface|MII Status' /proc/net/bonding/bond0Depois faz-se a alteração, e as mesmas leituras são feitas de novo à medida que o par se volta a juntar. O resultado é trabalho planeado que não o interrompe, o que é diferente de trabalho planeado que não é comunicado: a alteração está no nosso registo e, onde toca na sua plataforma, na sua caixa de entrada, com o mecanismo declarado.
As alterações que merecem uma janela
Uma janela é a resposta certa quando um passo é irreversível, quando o componente por natureza não tem par naquele momento, ou quando o procedimento do fabricante exige que o serviço seja parado. O cutover de plataforma é o caso comum: no momento em que o tráfego passa do ambiente antigo para o novo, há um intervalo, habitualmente delimitado pela propagação do DNS ou pela mudança de um VIP, em que o serviço está em trânsito.
Uma janela bem desenhada reconhece-se. Nomeia o componente e o mecanismo, para que saiba o que está a mudar e porque não pode ser feito sob carga. Declara o impacto visível para o cliente separadamente da duração da operação: uma operação de duas horas pode ter um impacto visível de minutos, e o aviso diz qual é qual. Tem um ponto de decisão e um rollback que foi ensaiado, não apenas descrito. É acordada consigo: se uma alteração pode tocar no seu tráfego, acordamos primeiro consigo o momento. E termina com um relatório que compara o real com o anunciado.
| Alteração | Como é feita | O que vê |
|---|---|---|
| Firmware do controlador de storage | Um nó de cada vez. Os hosts ficam nos caminhos sobreviventes | Um aviso. O seu serviço é transportado pelo caminho do par durante todo o processo |
| Substituição de leaf switch | Um membro do par. Os hosts ficam no outro membro do bond | Um aviso. O seu serviço é transportado pelo link do par durante todo o processo |
| Manutenção de host de hypervisor | Guests movidos por live migration para fora, e depois de volta | Um aviso. Os seus guests continuam a correr |
| Cutover de plataforma | Uma janela desenhada, delimitada pela mudança de DNS ou de VIP | Um momento acordado, um impacto nomeado, um relatório depois |
Como ler um aviso de manutenção
Três perguntas dizem-lhe a maior parte do que precisa sobre o desenho por baixo de qualquer plataforma, a nossa incluída: qual é o componente, porque não pode ser feito sob carga, e qual é o impacto visível esperado face à duração da operação. Um aviso que responde às três é um plano. Escrevemos os nossos para lhes responder.
Respostas diretas
O downtime agendado para manutenção é normal no hosting?+
O trabalho planeado é normal. O downtime visível para a maior parte dele não é necessário em infraestrutura construída em pares. Firmware de controladores, substituição de switches e manutenção de hosts fazem-se sob carga. As janelas ficam reservadas para os passos que alteram algo sem par.
Quando é que uma janela de manutenção continua a ser a decisão certa?+
Quando um passo é irreversível, quando o componente não tem par naquele momento, ou quando um procedimento do fabricante exige que o serviço seja parado. Os cutovers de plataforma e a sincronização final de uma migração de storage são casos típicos.
O que deve dizer-me um aviso de manutenção?+
O componente, o mecanismo, porque não pode ser feito sob carga, o impacto visível para o cliente declarado separadamente da duração da operação, o rollback, e o momento acordado. Depois, o real face ao anunciado.
Como sabem que o caminho redundante vai transportar a carga antes de confiarem nele?+
É lido antes da alteração, do ponto de vista do host: contagem de caminhos ativos para o array, estado dos membros do bond para os switches, margem no destino da migração. Um host com um único caminho é corrigido antes de o trabalho começar.
Está a planear uma alteração que normalmente precisaria de uma janela?
Fale com um engenheiro sobre fazê-la sob carga.
Fale com um engenheiroChegou ao fim.
Ponha a leitura em prática
O que executa?
Fale-nos da carga de trabalho, do tráfego e dos requisitos de recuperação. Comece pelo configurador de servidores ou discuta os detalhes com um engenheiro.
Escrito pelos engenheiros que constroem e operam a infraestrutura que descreve.Fale com um engenheiro
