Quando o uso de disco em um cluster do Alibaba Cloud Elasticsearch ultrapassa 85%, o Elasticsearch restringe automaticamente o acesso de gravação para proteger a integridade dos dados. Este tópico explica a causa raiz, como restaurar rapidamente o acesso de gravação e como evitar a recorrência do problema.
Aviso: Este tópico pode conter informações sobre produtos de terceiros. Tais informações servem apenas como referência. A Alibaba Cloud não oferece nenhuma garantia, expressa ou implícita, quanto ao desempenho e à confiabilidade de produtos de terceiros, nem sobre possíveis impactos de operações nesses produtos.
Sintomas
Falha nas solicitações de gravação com a mensagem:
FORBIDDEN/12/index read-only / allow delete (api)-
O status de saúde do cluster está vermelho. Execute
GET /_cat/nodes?vpara verificar se os nós retornaram ao cluster. ExecuteGET /_cat/allocation?vpara verificar a alocação de shards.NotaSaúde vermelha do cluster indica que os shards primários estão indisponíveis. Os dados podem estar em risco.
O Kibana retorna
internal server errorao criar pipelines de ingestão ou registrar BeatsO monitoramento do cluster ou do Kibana mostra uso de disco próximo de 100%
Causa raiz
Limiares de uso de disco
O Elasticsearch monitora continuamente o uso de disco e aplica três limiares de marca d'água:
85% — marca d'água baixa: O Elasticsearch interrompe a alocação de novos shards neste nó.
90% — marca d'água alta: O Elasticsearch realoca shards existentes para nós com mais espaço livre em disco.
95% — estágio de inundação: O Elasticsearch define o atributo
read_only_allow_deleteem todos os índices, bloqueando todas as operações de gravação.
Além dos limiares de marca d'água de disco, as condições a seguir também podem causar falhas de gravação ou alertas. Investigue essas causas em conjunto:
Limite de contagem de shards atingido
Por padrão, cada nó de dados em um cluster do Elasticsearch suporta até 1.000 shards. Verifique o limite atual executando GET /_cluster/settings?include_defaults=true&flat_settings=true e verificando o parâmetro cluster.max_shards_per_node. Quando a contagem de shards excede o limite, o Logstash não consegue gravar logs e a criação de novos índices é impedida.
Como solução temporária, execute o comando a seguir para aumentar o limite de shards:
PUT /_cluster/settings
{
"transient": {
"cluster": {
"max_shards_per_node": 2000
}
}
}
Certifique-se de adicionar um espaço após PUT no comando.
Para uma solução definitiva, limpe índices expirados ou não utilizados, ou adicione mais nós de dados ao cluster.
Políticas de ciclo de vida de índices de sistema
Se o uso de disco oscilar frequentemente sem políticas personalizadas de Gerenciamento de Ciclo de Vida de Índices (ILM) configuradas, a flutuação pode decorrer das políticas de ciclo de vida padrão dos índices de sistema, como .monitoring-es-* e .monitoring-kibana-*. Esses índices são criados automaticamente todos os dias, e os antigos são excluídos automaticamente. Esse comportamento é normal.
Impacto da correlação de recursos
O alto uso de disco pode vir acompanhado de alto uso de memória JVM (por exemplo, atingindo 90%) e anomalias nos nós, o que pode impedir a conexão do Kibana. Nesse caso, aumente tanto a capacidade de disco quanto os recursos de memória. Se o cluster não estiver saudável, ative as alterações forçadas durante a atualização de configuração. Realize a operação fora do horário de pico de negócios para evitar interrupções de serviço causadas por reinicializações de nós.
Correção rápida (10–15 minutos)
-
Exclua índices antigos ou não utilizados para liberar espaço em disco.
AvisoDados excluídos não podem ser restaurados. Para preservar os dados, considere aumentar a capacidade de armazenamento.
curl -u <username>:<password> -XDELETE http://<host>:<port>/<index-name><host>é o endpoint interno ou público do seu cluster. Configure a lista de permissões de acesso antes de executar este comando.Caso o cluster não responda, acione uma reinicialização forçada e execute este comando durante o processo.
-
Remova o bloqueio de somente leitura. Liberar espaço em disco não remove automaticamente o bloqueio de gravação. Elimine-o definindo
index.blocks.read_only_allow_deletecomonull:PUT /_all/_settings { "index.blocks.read_only_allow_delete": null } Verifique a saúde do cluster. Se o status ainda estiver vermelho, execute
GET /_cat/allocation?vpara verificar se há shards não atribuídos.Se permanecerem shards não atribuídos, execute
GET /_cluster/allocation/explainpara identificar a causa. Se a saída mostrar tentativas de alocação esgotadas (como na captura de tela abaixo), executePOST /_cluster/reroute?retry_failed=true.
Caso o status de saúde do cluster continue vermelho após todas as etapas de recuperação, entre em contato com o suporte técnico da Alibaba Cloud.
Perguntas frequentes
Por que o console do Elasticsearch mostra status normal do cluster, mas ainda recebo alertas de uso de disco?
Um status de cluster normal no console indica apenas que o cluster está disponível no momento. No entanto, o uso de disco já pode ter atingido o limiar de alerta (por exemplo, 91%). Embora o alto uso de disco não tenha acionado imediatamente o modo read_only, ele está se aproximando da marca d'água crítica — aos 95%, o modo de somente leitura forçado é ativado, e as operações de gravação podem ser bloqueadas a qualquer momento.
Recomendamos verificar imediatamente o uso real de disco na página Cluster Monitoring e tomar uma das seguintes medidas para eliminar o risco:
Aumente a capacidade do disco.
Limpe índices não utilizados ou expirados.
Prevenção
Ative o monitoramento de uso de disco e configure alertas para disparar quando o uso exceder 80%. Direcione os alertas para sua equipe de operações, permitindo que ajam antes que o estágio de inundação seja atingido. Para instruções de configuração, consulte Configurar monitoramento e alertas.