Para ajudar a proteger contra a perda de dados, o Elasticsearch possui vários recursos que permitem garantir a disponibilidade de dados, mesmo nas instâncias de falha de dados.
Algumas das maneiras pelas quais o Elasticsearch usa para fornecer a disponibilidade de dados incluem:
Este tutorial mostra como criar instantâneos de cluster, o que ajudará você a estar pronto, caso ocorra um evento irreversível de falha de dados.
Vamos começar.
O que é um instantâneo de elasticsearch?
Como mencionado, um instantâneo elástico é uma cópia de backup de um cluster Elasticsearch em execução. Este instantâneo pode ser de um cluster inteiro ou índices e fluxos de dados específicos em um cluster específico.
Como você aprenderá em breve, um plug -in repositório gerencia instantâneos de elasticsearch. Esses instantâneos são armazenados em vários locais de armazenamento definidos pelo plug -in. Isso inclui sistemas locais e sistemas remotos, como armazenamento GCP, Amazon EC2, Microsoft Azure e muito mais.
Como criar um repositório de instantâneos de pesquisa de pesquisa
Antes de mergulharmos na criação de instantâneos do Elasticsearch, precisamos criar um repositório de instantâneos porque muitos dos serviços do Elasticsearch usam a API Snapshot para executar essas tarefas.
Algumas das tarefas tratadas pela API Snapshot são:
Para criar um repositório de instantâneos, usamos o ponto final da API _SNAPSHOT, seguido pelo nome que queremos atribuir ao repositório de instantâneos. Considere a solicitação abaixo que cria um repositório chamado backup_repo
Put /_snapshot /backup_repoAqui está um comando curl para a solicitação acima:
Curl -xput "http: // localhost: 9200/_snapshot/backup_repo" -h 'content -type: application/json' -d '"type": "fs", "configurações": "location": "/" Home/raiz/backups "," Compress ": true 'Para passar no caminho do repositório instantâneo, você deve primeiro adicionar o caminho do sistema ou o diretório pai ao caminho.Entrada repositória no Elasticsearch.yml
O caminho.A entrada de repo deve ser semelhante a:
caminho.repo: ["/home/root/backups"]Você pode encontrar o arquivo de configuração do Elasticsearch localizado em/etc/elasticsearch/Elasticsearch.yml
OBSERVAÇÃO: Depois de adicionar o caminho.Repo, pode ser necessário reiniciar os clusters Elasticsearch. Além disso, os valores suportados para o caminho.O repositório pode variar muito, dependendo da plataforma que executa o Elasticsearch.
Como ver o repositório de instantâneos
Para confirmar a criação bem -sucedida do repositório de instantâneos, use a solicitação GET com o endpoint _SNAPSHOT como:
Get /_snapshot /backup_repoVocê também pode usar o seguinte comando curl:
Curl -xget "http: // localhost: 9200/_snapshot/backup_repo"Isso deve exibir informações sobre o repositório de backup, por exemplo:
Se você tiver mais de um repositório de instantâneos e não se lembra do nome, poderá omitir o nome do repo e chamar o endpoint _SNAPSHOT para listar todos os repositórios existentes.
Get/_SNAPSHOT ou CURL CURL -XGET http: // localhost: 9200/_snapshot
Como criar um instantâneo de elasticsearch
Criando um instantâneo de Elasticsearch para um repositório específico de instantâneo é tratado pela API Create Snapshot. A API requer o nome do repositório instantâneo e o nome do instantâneo.
OBSERVAÇÃO: Um único repositório de instantâneo pode ter mais de um instantâneo dos mesmos clusters, desde que tenham identidades/nomes únicos.
Considere a seguinte solicitação para adicionar um instantâneo chamado snapshot_2021 ao repositório backup_repo.
Put/_snapshot/backup_repo/snapshot_2021Para usar o CURL, use o comando:
Curl -xput “http: // localhost: 9200/_snapshot/backup_repo/snapshot_2021”O comando deve retornar uma resposta do Elasticsearch com 200 ok e aceito: true
Como não especifica quais fluxos de dados e índices você deseja ter backup, chamando a solicitação acima backups de todos os dados e o estado do cluster. Para especificar quais fluxos de dados e índices fazer backup, adicione isso ao corpo de solicitação.
Considere o seguinte solicitação que backups .Índice Kibana (um índice de sistema) e especifica qual usuário autorizou o instantâneo e o motivo.
Put/_snapshot/backup_repo/snapshot_2O comando Curl para isso é:
Curl -xput "http: // localhost: 9200/_snapshot/backup_repo/snapshot_2" -h 'content -type: Application/json' -d '"índices": ".kibana "," ignore_unavilable ": true," incluir_global_state ": true," metadata ": " Taken_by ":" elasticAdmin "," Taken_because ":" diariamente backup " ''O ignore_unavilable define um estado booleano que retorna um erro se algum fluxo de dados ou índices especificados no instantâneo estiverem ausentes ou fechados.
O parâmetro incluído_global_state salva o estado atual do cluster se verdadeiro. Algumas das informações de cluster salvas incluem:
OBSERVAÇÃO: Você pode especificar mais de um índices separados por vírgulas.
Um argumento comum usado com o endpoint _snapshot é wait_for_completion, um valor booleano que define se (true) ou não (false) a solicitação deve retornar imediatamente após a inicialização do instantâneo (padrão) ou aguardar uma conclusão de instantâneos.
Por exemplo:
Put/_snapshot/backup_repo/snapshot_3?espera_for_completion = trueO comando Curl é:
Curl -xput "http: // localhost: 9200/_snapshot/backup_repo/snapshot_3?wait_for_completion = true "-h 'content -type: Application/json' -d '" índices ":".kibana "," ignore_unavilable ": true," incluir_global_state ": false," metadata ": " Taken_by ":" elasticAdmin "," Taken_because ":" weekly backup " ''Quando você tiver o parâmetro wait_for_completion definido como true, você fornecerá uma saída semelhante à mostrada abaixo:
Como visualizar instantâneos
A API Get Snapshot lida com a funcionalidade View Snapshots.
Tudo o que você precisa passar na solicitação é o repositório instantâneo e o nome do instantâneo que você deseja ver os detalhes.
O instantâneo deve responder com detalhes sobre um instantâneo especificado. Esses detalhes incluem:
Por exemplo, para visualizar os detalhes sobre o snapshot_3 criado acima, use a solicitação mostrada abaixo:
Get/_snapshot/backup_repo/snapshot_3A solicitação deve retornar uma resposta com os detalhes do instantâneo como:
Você também pode personalizar o corpo da solicitação para obter detalhes específicos sobre um instantâneo. No entanto, não vamos analisar isso por agora.
Digamos que você queira visualizar informações sobre todos os instantâneos em um repositório específico de instantâneo; Nesse caso, você pode passar um curinga de asterisco na solicitação como:
Get/_snapshot/backup_repo/*O comando Curl para isso é:
Curl -xget “http: // localhost: 9200/_snapshot/backup_repo/*”A resposta é um despejo detalhado de todos os instantâneos nesse repositório como:
Os curingas são muito úteis para filtrar informações específicas sobre os instantâneos.
Como excluir um instantâneo
Excluir um instantâneo é muito simples: tudo o que você precisa fazer é usar a solicitação de exclusão como:
Delete/_snapshot/backup_repo/snapshot_2021/O comando Curl é:
Curl -xdelete “http: // localhost: 9200/_snapshot/backup_repo/snapshot_2021/”A resposta deve ser reconhecida: verdadeiro
Se o instantâneo não existir, você receberá um código de status 404 e um erro de instantânea que está ausente como:
Conclusão
Neste guia, discutimos como criar instantâneos de Elasticsearch usando a API Snapshot. O que você aprendeu deve ser suficiente para permitir que você crie um repositório de instantâneos, veja os repositórios de instantâneos, crie, visualize e exclua instantâneos. Embora haja personalizações que você possa fazer com a API, o conhecimento deste guia deve ser suficiente para você começar.
Obrigado pela leitura.