Use o Index Lifecycle Management (ILM) para mover índices automaticamente pelas fases hot, warm, cold e delete em um cluster hot-warm e reduzir custos de armazenamento. Disponível no Elasticsearch 6.6.0 e versões posteriores.
|
Fase |
Descrição |
|
hot |
Gerencia gravações em tempo real para dados de séries temporais. A API de rollover cria um novo índice quando o atual atinge uma contagem de documentos, tamanho ou idade especificados. |
|
warm |
O índice torna-se somente leitura e atende apenas a consultas. |
|
cold |
O índice não recebe mais atualizações e é consultado com pouca frequência. A velocidade da consulta pode diminuir. |
|
delete |
O índice é excluído permanentemente. |
Aplique uma política de ILM a um índice de duas maneiras:
Aplique a política a um modelo de índice. A política abrange todos os índices sob o alias. O exemplo a seguir usa esse método.
Aplique a política a um único índice. A política afeta apenas o índice atual. Novos índices criados por rollover não são afetados.
O cenário hot-warm a seguir demonstra esse ciclo de vida:
Grave dados em tempo real. Quando o índice atinge um limiar, o rollover cria um novo índice.
Após o rollover, o índice antigo permanece na fase hot por 30 minutos e depois entra na fase warm.
Após a conclusão do merge e do shrink, o índice entra na fase cold 1 hora após o rollover.
Os dados movem-se para nós warm. O índice é excluído 2 horas após o rollover.
Procedimento
-
Etapa 1: Criar um cluster hot-warm e verificar atributos
Defina os atributos dos nós hot e warm durante a criação do cluster.
-
Etapa 2: Configurar uma política de ILM
Defina uma política de ILM e aplique-a aos índices sob um alias.
-
Etapa 3: Verificar a distribuição de dados
Verifique se os shards do índice na fase cold residem em nós warm.
-
Etapa 4: Atualizar uma política de ILM
Atualize uma política existente.
-
Etapa 5: Alternar uma política de ILM
Alterne entre diferentes políticas para um rollover.
Etapa 1: Criar um cluster hot-warm e verificar atributos
Um cluster hot-warm contém nós hot para gravações em tempo real e nós warm para dados históricos.
|
Tipo de nó |
Requisitos de dados |
Desempenho de leitura/gravação |
Especificações |
Requisitos de armazenamento |
|
Nó hot (hot) |
Dados recentes, como logs dos últimos 2 dias. |
Alto |
Alta (por exemplo, 32 núcleos, 64 GB). |
Recomenda-se discos cloud SSD. |
|
Nó warm (warm) |
Dados históricos, como logs com mais de 2 dias. |
Baixo |
Baixa (por exemplo, 8 núcleos, 32 GB). |
Recomenda-se Ultra disks. Use o OpenStore para armazenamento serverless de grandes conjuntos de dados cold. |
No Alibaba Cloud Elasticsearch, os nós warm têm um valorbox_typedefinido comowarm(não cold), correspondendo à camada warm no Elasticsearch nativo.
Ao criar um cluster do Alibaba Cloud Elasticsearch, ative os nós warm para criar um cluster hot-warm.
-
Após a ativação dos nós warm, o sistema adiciona o parâmetro
-Enode.attr.box_typeaos argumentos de inicialização do nó:Nós hot:
-Enode.attr.box_type=hotNós warm:
-Enode.attr.box_type=warm
Os nós de dados são designados como nós hot somente após a ativação dos nós warm.
Faça login no console Kibana do cluster. Consulte Conectar-se a um cluster Elasticsearch usando o Kibana.
No painel de navegação à esquerda, clique em Dev Tools.
-
No Console, execute o seguinte comando para verificar os atributos do nó.
GET _cat/nodeattrs?v&h=host,attr,valueSe a resposta listar nós hot e warm, o cluster suporta a arquitetura hot-warm.
Etapa 2: Configurar uma política de ILM
-
No console Kibana, execute o seguinte comando para definir uma política de ILM.
PUT /_ilm/policy/game-policy { "policy": { "phases": { "hot": { "actions": { "rollover": { "max_size": "1GB", "max_age": "1d", "max_docs": 1000 } } }, "warm": { "min_age": "30m", "actions": { "forcemerge": { "max_num_segments":1 }, "shrink": { "number_of_shards":1 } } }, "cold": { "min_age": "1h", "actions": { "allocate": { "require": { "box_type": "warm" } } } }, "delete": { "min_age": "2h", "actions": { "delete": {} } } } } }Parâmetro
Descrição
hot
Um rollover é acionado quando qualquer condição é atendida: o índice atinge 1 GB (
max_size), excede um dia (max_age) ou contém 1.000 documentos (max_docs). O índice antigo aguarda 30 minutos antes de entrar na fase warm.warm
O índice é reduzido para um shard e passa por force-merge para um segmento. Ele entra na fase cold 1 hora após o rollover.
cold
O índice move-se para um nó warm. Ele entra na fase delete 2 horas após o rollover.
delete
O índice é excluído.
Não é possível alterar os nomes das políticas após a criação. Também é possível criar políticas no console Kibana, mas a interface limita as unidades de tempo a horas. Use a API para unidades mais granulares, como segundos.
-
Crie um modelo de índice que direcione novos índices para nós hot.
PUT _template/gamestabes_template { "index_patterns" : ["gamestabes-*"], "settings": { "index.number_of_shards": 5, "index.number_of_replicas": 1, "index.routing.allocation.require.box_type":"hot", "index.lifecycle.name": "game-policy", "index.lifecycle.rollover_alias": "gamestabes" } }Parâmetro
Descrição
index.routing.allocation.require.box_type
Tipo de nó para alocação do índice.
index.lifecycle.name
Nome da política de ILM a ser aplicada.
index.lifecycle.rollover_alias
Alias usado para rollover.
-
Crie o índice inicial com um número de sequência.
PUT gamestabes-000001 { "aliases": { "gamestabes":{ "is_write_index": true } } }Também é possível criar um índice baseado em tempo com date math.
-
Grave dados pelo alias. O índice sofre rollover quando atende às condições da política e a próxima verificação de ILM é executada.
PUT gamestabes/_doc/1 { "EU_Sales" : 3.58, "Genre" : "Platform", "Global_Sales" : 40.24, "JP_Sales" : 6.81, "Name" : "Super Mario Bros.", "Other_Sales" : 0.77, "Platform" : "NES", "Publisher" : "Nintendo", "Year_of_Release" : "1985", "na_Sales" : 29.08 }Por padrão, o ILM verifica os índices que correspondem aos critérios da política a cada 10 minutos. Modifique o intervalo de verificação usando o parâmetro
indices.lifecycle.poll_interval. -
(Opcional) Visualize o status do ciclo de vida do índice no Kibana.
No painel de navegação à esquerda, clique em Management.
Na seção Elasticsearch, clique em Index Management.
Clique na lista suspensa Lifecycle phase e selecione uma fase do ciclo de vida para filtrar os índices.
Clique no nome de um índice filtrado para visualizar sua configuração detalhada.
Etapa 3: Verificar a distribuição de dados
Depois que um índice entra na fase cold, verifique se seus shards residem em nós warm.
No console Kibana, localize o índice que entrou na fase cold.
-
Execute o seguinte comando para verificar a distribuição de shards. Substitua
shrink-gamestabes-000012pelo nome do seu índice.GET _cat/shards/shrink-gamestabes-000012Se o nó do shard tiver
box_typedefinido comowarm, o índice reside em um nó warm.
Etapa 4: Atualizar uma política de ILM
-
Execute o seguinte comando para atualizar a
game-policy. Este exemplo altera a duração da fase delete:PUT /_ilm/policy/game-policy { "policy": { "phases": { "hot": { "actions": { "rollover": { "max_size": "1GB", "max_age": "1d", "max_docs": 1000 } } }, "warm": { "min_age": "30m", "actions": { "forcemerge": { "max_num_segments":1 }, "shrink": { "number_of_shards":1 } } }, "cold": { "min_age": "1h", "actions": { "allocate": { "require": { "box_type": "warm" } } } }, "delete": { "min_age": "3h", "actions": { "delete": {} } } } } } -
Visualize a versão atualizada da política.
No painel de navegação à esquerda, clique em Management.
Na seção Elasticsearch, clique em Index Lifecycle Policies.
Verifique o número da versão da política. Ele incrementa a cada atualização. Os índices ativos mantêm a versão antiga até o próximo rollover.
Etapa 5: Alternar uma política de ILM
-
Crie uma nova política.
PUT /_ilm/policy/game-new { "policy": { "phases": { "hot": { "actions": { "rollover": { "max_size": "3GB", "max_age": "1d", "max_docs": 1000 } } }, "warm": { "min_age": "30m", "actions": { "forcemerge": { "max_num_segments":1 }, "shrink": { "number_of_shards":1 } } }, "cold": { "min_age": "1h", "actions": { "allocate": { "require": { "box_type": "warm" } } } }, "delete": { "min_age": "2h", "actions": { "delete": {} } } } } } -
Aplique a nova política ao modelo.
PUT _template/gamestabes_template { "index_patterns" : ["gamestabes-*"], "settings": { "index.number_of_shards": 5, "index.number_of_replicas": 1, "index.routing.allocation.require.box_type":"hot", "index.lifecycle.name": "game-new", "index.lifecycle.rollover_alias": "gamestabes" } }
Perguntas frequentes
Como ajusto o intervalo de verificação do ILM?
Por padrão, o ILM verifica os índices em relação à política a cada 10 minutos. Os dados podem exceder o limiar entre as verificações. Por exemplo, um índice pode conter mais de 1.000 documentos antes que o rollover seja acionado, mesmo que max_docs seja 1.000.
Ajuste a frequência de verificação com o parâmetro indices.lifecycle.poll_interval:
Um intervalo menor aumenta a carga do nó. Defina esse valor com base na sua carga de trabalho.
PUT _cluster/settings
{
"transient": {
"indices.lifecycle.poll_interval":"1m"
}
}