Na semana passada (11 de dezembro), os serviços da OpenAI, como o ChatGPT e o Sora, sofreram uma queda de 4 horas e 10 minutos, afetando inúmeros usuários. Agora, a OpenAI divulgou um relatório detalhado sobre a falha do ChatGPT.
Em resumo, a causa raiz da falha foi uma pequena alteração que teve consequências graves. Os engenheiros ficaram bloqueados do acesso ao painel de controle no momento crítico, impossibilitando a resolução rápida do problema. Diante da falha, os engenheiros da OpenAI rapidamente implementaram diversas ações de reparo, incluindo a redução do tamanho do cluster, o bloqueio do acesso à API de gerenciamento do Kubernetes e o aumento dos recursos do servidor da API do Kubernetes. Após várias tentativas, os engenheiros conseguiram recuperar o acesso a parte do painel de controle do Kubernetes e tomaram medidas para redirecionar o tráfego para clusters saudáveis, resultando na recuperação completa do sistema.
O incidente ocorreu às 15h12, horário padrão do Pacífico, quando os engenheiros implantaram um novo serviço de telemetria para coletar métricas do painel de controle do Kubernetes (K8S). No entanto, devido a uma configuração acidentalmente muito ampla, cada nó em cada cluster executava simultaneamente operações intensivas de recursos na API do K8S. Isso rapidamente causou a falha dos servidores da API, deixando a maioria dos clusters do plano de dados do K8S sem serviço.
É importante notar que, embora o plano de dados do K8S possa teoricamente funcionar independentemente do painel de controle, a funcionalidade do DNS depende do painel de controle, impedindo a comunicação entre os serviços. Com a sobrecarga das operações da API, o mecanismo de descoberta de serviços foi comprometido, causando a paralisação completa do serviço. Embora o problema tenha sido identificado em 3 minutos, a incapacidade dos engenheiros de acessar o painel de controle para reverter o serviço criou uma situação de "loop infinito". A falha do painel de controle impediu a remoção do serviço com problemas, impossibilitando a recuperação.
Os engenheiros da OpenAI então começaram a explorar diferentes métodos para recuperar o cluster. Eles tentaram reduzir o tamanho do cluster para diminuir a carga da API do K8S e bloquear o acesso à API de gerenciamento do K8S para que os servidores pudessem se recuperar. Além disso, eles aumentaram a configuração de recursos do servidor da API do K8S para melhor lidar com as solicitações. Após uma série de esforços, os engenheiros finalmente recuperaram o controle do painel de controle do K8S, podendo remover o serviço com falha e restaurar gradualmente o cluster.
Durante esse período, os engenheiros também redirecionaram o tráfego para clusters saudáveis já recuperados ou novos, para reduzir a carga em outros clusters. No entanto, como muitos serviços tentavam se recuperar simultaneamente, isso causou saturação dos recursos, exigindo intervenção manual adicional, e a recuperação de alguns clusters levou mais tempo. Com este incidente, a OpenAI espera aprender com a experiência para evitar ser "trancada" novamente em situações semelhantes no futuro.
Detalhes do relatório: https://status.openai.com/incidents/ctrsv3lwd797
Destaques:
🔧 Causa da falha: Uma pequena alteração no serviço de telemetria causou sobrecarga na API do K8S, levando à paralisação do serviço.
🚪 Dificuldade dos engenheiros: A falha do painel de controle impediu o acesso dos engenheiros, impossibilitando o tratamento do problema.
⏳ Processo de recuperação: Através da redução do tamanho do cluster e do aumento de recursos, o serviço foi finalmente restaurado.