As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Armazenamento UltraWarm para Amazon OpenSearch Service
O UltraWarm oferece uma maneira econômica de armazenar grandes quantidades de dados somente leitura no Amazon OpenSearch Service. Os nós de dados padrão usam o armazenamento de atividade muito alta, o qual assume a forma de armazenamentos de instâncias ou volumes do Amazon EBS anexados a cada nó. O armazenamento de atividade muito alta fornece a performance mais rápida possível para indexar e pesquisar novos dados.
Em vez do armazenamento vinculado, os nós do UltraWarm usam o Amazon S3 e uma solução de armazenamento em cache sofisticada para melhorar a performance. Para os índices nos quais você não está gravando ativamente, consulta com menos frequência e para os quais não precisa da mesma performance, o UltraWarm oferece custos significativamente mais baixos por GiB de dados. Como os índices warm são somente leitura, a menos que você os retorne ao armazenamento quente, o UltraWarm é o mais adequado para dados imutáveis, como logs.
No OpenSearch, os índices warm se comportam como qualquer outro índice. É possível consultá-los usando as mesmas APIs ou usá-los para criar visualizações no OpenSearch Dashboards.
Pré-requisitos
O UltraWarm tem alguns pré-requisitos importantes:
-
O UltraWarm requer o OpenSearch ou o Elasticsearch 6.8 ou superior.
-
Para usar o armazenamento de alta atividade (warm), os domínios devem ter nós principais dedicados.
-
Ao usar um domínio multi-AZ com modo de espera, o número de nós mornos deve ser um múltiplo do número de zonas de disponibilidade que estão usadas.
-
Se o domínio usar um tipo de instância T2 ou T3 para os nós de dados, não será possível usar o armazenamento de alta atividade.
-
Se o índice usar aproximação de k-NN (
"index.knn":true), você poderá movê-lo da versão 2.17 e posteriores para o armazenamento morno. Os domínios nas versões anteriores à 2.17 podem ser atualizados para a versão 2.17 para usar essa funcionalidade, mas os índices KNN criados em versões anteriores à 2.x não podem migrar para o UltraWarm. -
Se o domínio usar controle de acesso refinado, os usuários deverão ser mapeados para a função
ultrawarm_managerno OpenSearch Dashboards para fazer chamadas de API UltraWarm.
nota
A função ultrawarm_manager pode não estar definida em alguns domínios pré-existentes do OpenSearch Service. Se você não vir a função no Dashboards, será necessário criá-la manualmente.
Configurar permissões
Se você habilitar o UltraWarm em um domínio preexistente do OpenSearch Service, a função ultrawarm_manager não poderá ser definida no domínio. Os usuários não administradores deverão ser mapeados nessa função para poderem gerenciar índices warm usando o controle de aceso detalhado. Para criar manualmente a função ultrawarm_manager, faça o seguinte:
-
No OpenSearch Dashboards, vá para Segurança e escolha Permissões.
-
Escolha Criar grupo de ações e configure os seguintes grupos:
Group name Permissões ultrawarm_cluster-
cluster:admin/ultrawarm/migration/list -
cluster:monitor/nodes/stats
ultrawarm_index_read-
indices:admin/ultrawarm/migration/get -
indices:admin/get
ultrawarm_index_write-
indices:admin/ultrawarm/migration/warm -
indices:admin/ultrawarm/migration/hot -
indices:monitor/stats -
indices:admin/ultrawarm/migration/cancel
-
-
Escolha Funções e, em seguida, Criar função.
-
Nomeie a função como ultrawarm_manager.
-
Para Permissões de cluster, selecione
ultrawarm_clusterecluster_monitor. -
Para Índice, digite
*. -
Para Permissões de índice, selecione
ultrawarm_index_read,ultrawarm_index_write, eindices_monitor. -
Escolha Criar.
-
Depois de criar a função, mapeie-a em qualquer função de usuário ou de backend que gerencie índices do UltraWarm.
Requisitos de armazenamento e considerações de performance do UltraWarm
Conforme abordado em Cálculo de requisitos de armazenamento, os dados no armazenamento de atividade muito alta incorrem em sobrecarga significativa: réplicas, espaço reservado do Linux e espaço reservado do OpenSearch Service. Por exemplo, um fragmento primário de 20 GiB com um fragmento de réplica requer aproximadamente 58 GiB de armazenamento de atividade muito alta.
Como ele usa o Amazon S3, o UltraWarm não incorre em nenhuma dessa sobrecarga. Ao calcular os requisitos de armazenamento UltraWarm, considere somente o tamanho dos fragmentos primários. A durabilidade dos dados no S3 elimina a necessidade de réplicas e o S3 abstrai qualquer consideração de sistema operacional ou de serviço. Esse mesmo fragmento de 20 GiB exige 20 GiB de armazenamento de alta atividade. Se você provisionar uma instância ultrawarm1.large.search, poderá usar todos os 20 TiB de seu armazenamento máximo para fragmentos primários. Consulte UltraWarm cotas de armazenamento para obter um resumo dos tipos de instância e a quantidade máxima de armazenamento que cada um pode atender.
Com o UltraWarm, ainda recomendamos um tamanho de fragmento máximo de 50 GiB. O número de núcleos de CPU e quantidade de RAM alocada para cada tipo de instância UltraWarm fornecem uma ideia do número de fragmentos que eles podem pesquisar simultaneamente. Observe que, embora apenas fragmentos primários sejam contabilizados para o armazenamento UltraWarm no S3, o OpenSearch Dashboards e _cat/indices ainda reportam o tamanho do índice do UltraWarm como o total de todos os fragmentos primários e réplicas.
Por exemplo, cada instância de ultrawarm1.medium.search tem dois núcleos de CPU e pode endereçar até 1,5 TiB de armazenamento no S3. Duas dessas instâncias têm uma combinação de 3 TiB de armazenamento, o que funcionará para aproximadamente 62 fragmentos se o tamanho de cada fragmento for 50 GiB. Se uma solicitação para o cluster pesquisar apenas quatro desses fragmentos, a performance poderá ser excelente. Se a solicitação for ampla e pesquisar todos os 62, os quatro núcleos da CPU poderão ter dificuldade para executar a operação. Monitore as métricas do UltraWarm WarmCPUUtilization e WarmJVMMemoryPressure para entender como as instâncias lidam com suas worloads.
Se as suas pesquisas forem amplas ou frequentes, considere deixar os índices no armazenamento quente. Assim como qualquer outra workload do OpenSearch, a etapa mais importante para determinar se o UltraWarm atende às suas necessidades é executar testes de cliente representativos usando um conjunto de dados realista.
Preços do UltraWarm
Com o armazenamento de alta atividade, você paga pelo que provisiona. Algumas instâncias exigem um volume do Amazon EBS vinculado, enquanto outras incluem um armazenamento de instâncias. Se esse armazenamento estiver vazio ou cheio, você pagará o mesmo preço.
Com o armazenamento UltraWarm, você paga pelo que usa. Uma instância ultrawarm1.large.search pode processar até 20 TiB de armazenamento no S3, mas se você armazenar apenas 1 TiB de dados, será cobrado somente por 1 TiB de dados. Como todos os outros tipos de nó, você também paga uma taxa por hora para cada nó UltraWarm. Para obter mais informações, consulte Preços do Amazon OpenSearch Service.
Ativação do UltraWarm
O console é a maneira mais simples de criar um domínio que usa o armazenamento de alta atividade. Ao criar o domínio, escolha Habilitar nós de dados mornos e o número de nós mornos desejados. O mesmo processo básico funciona em domínios existentes, desde que eles atendam aos pré-requisitos. Mesmo depois que o estado do domínio mudar de Processando para Ativo, o UltraWarm pode não estar disponível para uso por várias horas.
Ao usar um domínio multi-AZ com modo de espera, o número de nós mornos deve ser um múltiplo do número de zonas de disponibilidade. Para obter mais informações, consulte Multi-AZ com modo de espera.
Também é possível usar a AWS CLIWarmEnabled, WarmCount e WarmType em ClusterConfig.
nota
Os domínios oferecem suporte a um número máximo de nós de alta atividade. Para obter detalhes, consulte Cotas OpenSearch do Amazon Service.
Exemplo de comando da CLI
Os seguinte comando AWS CLI cria um domínio com três nós de dados, três nós principais dedicados, seis nos de alta atividade e controle de acesso refinado habilitado:
aws opensearch create-domain \ --domain-namemy-domain\ --engine-version Opensearch_1.0 \ --cluster-config InstanceCount=3,InstanceType=r6g.large.search,DedicatedMasterEnabled=true,DedicatedMasterType=r6g.large.search,DedicatedMasterCount=3,ZoneAwarenessEnabled=true,ZoneAwarenessConfig={AvailabilityZoneCount=3},WarmEnabled=true,WarmCount=6,WarmType=ultrawarm1.medium.search \ --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=11 \ --node-to-node-encryption-options Enabled=true \ --encryption-at-rest-options Enabled=true \ --domain-endpoint-options EnforceHTTPS=true,TLSSecurityPolicy=Policy-Min-TLS-1-2-2019-07 \ --advanced-security-options Enabled=true,InternalUserDatabaseEnabled=true,MasterUserOptions='{MasterUserName=master-user,MasterUserPassword=master-password}' \ --access-policies '{"Version": "2012-10-17", "Statement":[{"Effect":"Allow","Principal":{"AWS":["123456789012"]},"Action":["es:*"],"Resource":"arn:aws:es:us-west-1:123456789012:domain/my-domain/*"}]}' \ --regionus-east-1
Para obter mais informações, consulte a Referência de comandos da AWS CLI.
Exemplo de solicitação da API de configuração
A solicitação a seguir à API de configuração cria um domínio com três nós de dados, três nós principais dedicados e seis nós de alta atividade com o controle de acesso refinado habilitado e uma política de acesso restritiva:
POST https://es.us-east-2.amazonaws.com/2021-01-01/opensearch/domain { "ClusterConfig": { "InstanceCount": 3, "InstanceType": "r6g.large.search", "DedicatedMasterEnabled": true, "DedicatedMasterType": "r6g.large.search", "DedicatedMasterCount": 3, "ZoneAwarenessEnabled": true, "ZoneAwarenessConfig": { "AvailabilityZoneCount": 3 }, "WarmEnabled": true, "WarmCount": 6, "WarmType": "ultrawarm1.medium.search" }, "EBSOptions": { "EBSEnabled": true, "VolumeType": "gp2", "VolumeSize": 11 }, "EncryptionAtRestOptions": { "Enabled": true }, "NodeToNodeEncryptionOptions": { "Enabled": true }, "DomainEndpointOptions": { "EnforceHTTPS": true, "TLSSecurityPolicy": "Policy-Min-TLS-1-2-2019-07" }, "AdvancedSecurityOptions": { "Enabled": true, "InternalUserDatabaseEnabled": true, "MasterUserOptions": { "MasterUserName": "master-user", "MasterUserPassword": "master-password" } }, "EngineVersion": "Opensearch_1.0", "DomainName": "my-domain", "AccessPolicies": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"123456789012\"]},\"Action\":[\"es:*\"],\"Resource\":\"arn:aws:es:us-east-1:123456789012:domain/my-domain/*\"}]}" }
Para obter informações detalhadas, consulte Referência da API do Amazon OpenSearch Service.
Migração de índices para o armazenamento UltraWarm
Se você terminar de gravar em um índice e não precisar mais da performance de pesquisa mais rápida possível, migre-o de atividade muito alta para UltraWarm:
POST _ultrawarm/migration/my-index/_warm
Depois, verifique o status da migração:
GET _ultrawarm/migration/my-index/_status { "migration_status": { "index": "my-index", "state": "RUNNING_SHARD_RELOCATION", "migration_type": "HOT_TO_WARM", "shard_level_status": { "running": 0, "total": 5, "pending": 3, "failed": 0, "succeeded": 2 } } }
A integridade do índice deve ser verde para que seja possível executar uma migração. Se você migrar vários índices em sucessão rápida, poderá obter um resumo de todas as migrações em texto não criptografado, semelhante à API _cat:
GET _ultrawarm/migration/_status?v
index migration_type state
my-index HOT_TO_WARM RUNNING_SHARD_RELOCATION
O OpenSearch Service migra um índice de cada vez para o UltraWarm. É possível ter até 200 migrações na fila. Qualquer solicitação que exceda o limite será rejeitada. Para verificar o número de migrações atual, monitore a métrica HotToWarmMigrationQueueSize. Os índices permanecem disponíveis durante todo o processo de migração, sem tempo de inatividade.
O processo de migração tem os seguintes estados:
PENDING_INCREMENTAL_SNAPSHOT
RUNNING_INCREMENTAL_SNAPSHOT
FAILED_INCREMENTAL_SNAPSHOT
PENDING_FORCE_MERGE
RUNNING_FORCE_MERGE
FAILED_FORCE_MERGE
PENDING_FULL_SNAPSHOT
RUNNING_FULL_SNAPSHOT
FAILED_FULL_SNAPSHOT
PENDING_SHARD_RELOCATION
RUNNING_SHARD_RELOCATION
FINISHED_SHARD_RELOCATION
Como esses estados indicam, as migrações podem falhar durante os snapshots, as realocações de fragmentos ou as uniões de força. As falhas durante os snapshots ou as realocações de fragmentos geralmente ocorrem devido a falhas de nós ou a problemas de conectividade do S3. A falta de espaço em disco geralmente é a causa subjacente das falhas de união de força.
Após o término da migração, a mesma solicitação _status retornará um erro. Se você verificar o índice nesse momento, verá algumas configurações exclusivas dos índices mornos:
GETmy-index/_settings { "my-index": { "settings": { "index": { "refresh_interval": "-1", "auto_expand_replicas": "false", "provided_name": "my-index", "creation_date": "1599241458998", "unassigned": { "node_left": { "delayed_timeout": "5m" } }, "number_of_replicas": "1", "uuid": "GswyCdR0RSq0SJYmzsIpiw", "version": { "created": "7070099" }, "routing": { "allocation": { "require": { "box_type": "warm" } } }, "number_of_shards": "5", "merge": { "policy": { "max_merge_at_once_explicit": "50" } } } } } }
-
number_of_replicas, nesse caso, é o número de réplicas passivas, que não consomem espaço em disco. -
routing.allocation.require.box_typeespecifica que o índice deve usar nós de alta atividade em vez de nós de dados padrão. -
merge.policy.max_merge_at_once_explicitespecifica o número de segmentos a serem mesclados simultaneamente durante a migração.
Os índices no armazenamento morno são somente leitura, a menos que você os retorne ao armazenamento quente, o que torna o armazenamento UltraWarm mais adequado para dados imutáveis, como logs. Você pode consultar os índices e excluí-los, mas não pode adicionar, atualizar ou excluir documentos individuais. Se tentar, você poderá encontrar a seguinte mensagem de erro:
{
"error" : {
"root_cause" : [
{
"type" : "cluster_block_exception",
"reason" : "index [indexname] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block];"
}
],
"type" : "cluster_block_exception",
"reason" : "index [indexname] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block];"
},
"status" : 429
}
Automatização de migrações
Recomendamos usar Gerenciamento de estados de índices no Amazon OpenSearch Service para automatizar o processo de migração depois que um índice atinge uma determinada idade ou atende a outras condições. Consulte a política de exemplo que demonstra este fluxo de trabalho.
Ajuste de migrações
As migrações de índice para o armazenamento UltraWarm exigem uma mesclagem forçada. Cada índice do OpenSearch é composto por algum número de fragmentos, e cada fragmento é composto por algum número de segmentos de Lucene. A operação de forças mesclagem expurga documentos que foram marcados para exclusão e conserva espaço em disco. Por padrão, o UltraWarm mescla índices em um único segmento, exceto os índices kNN, nos quais um valor padrão de 20 é usado.
Você pode alterar esse valor para até 1.000 segmentos usando a configuração index.ultrawarm.migration.force_merge.max_num_segments. Valores mais altos aceleram o processo de migração, mas aumentam a latência de consulta para o índice de alta atividade após a conclusão da migração. Para alterar a configuração, faça a seguinte solicitação:
PUTmy-index/_settings { "index": { "ultrawarm": { "migration": { "force_merge": { "max_num_segments":1} } } } }
Para verificar a duração desse estágio do processo de migração, monitore a métrica HotToWarmMigrationForceMergeLatency.
Cancelamento de migrações
O UltraWarm lida com as migrações em sequência, em uma fila. Se uma migração estiver na fila, mas ainda não tiver sido iniciada, você poderá removê-la da fila usando a seguinte solicitação:
POST _ultrawarm/migration/_cancel/my-index
Se o domínio usa controle de acesso refinado, você precisará da permissão indices:admin/ultrawarm/migration/cancel para fazer essa solicitação.
Listagem de índices quentes e mornos
O UltraWarm adiciona duas opções adicionais, semelhantes a _all, para ajudar a gerenciar os índices quentes e mornos. Para obter uma lista de todos os índices mornos ou quentes, faça as seguintes solicitações:
GET _warm
GET _hot
Você pode usar essas opções em outras solicitações que especificam índices, como:
_cat/indices/_warm
_cluster/state/_all/_hot
Retorno de índices warm para o armazenamento quente
Se você precisar gravar em um índice novamente, migre-o de volta para o armazenamento de atividade muito alta:
POST _ultrawarm/migration/my-index/_hot
É possível ter até 10 migrações simultâneas de armazenamento morno para quente de uma só vez. O OpenSearch Service processa as solicitações de migração uma de cada vez, na ordem em que foram colocadas na fila. Para verificar o número atual, monitore a WarmToHotMigrationQueueSize métrica.
Após a conclusão da migração, verifique as configurações de índice para garantir que atendam às suas necessidades. Os índices retornam ao armazenamento quente com uma réplica.
Restauração de índices quentes de snapshots
Além do repositório padrão para snapshots automatizados, o UltraWarm adiciona um repositório secundário para índices mornos, cs-ultrawarm. Cada snapshot neste repositório contém apenas um índice. Se você excluir um índice de alta atividade, seu instantâneo permanecerá no repositório cs-ultrawarm por 14 dias, assim como qualquer outro snapshot automatizado.
Quando você restaura um snapshot de cs-ultrawarm, ele é restaurado no armazenamento de alta atividade (warm), não no armazenamento de atividade muito alta (hot). Os snapshots nos repositórios cs-automated e cs-automated-enc são restaurados no armazenamento de atividade muito alta.
Para restaurar um snapshot UltraWarm no armazenamento de alta atividade
-
Identifique o snapshot mais recente que contém o índice que você deseja restaurar:
GET _snapshot/cs-ultrawarm/_all?verbose=false { "snapshots": [{ "snapshot": "snapshot-name", "version": "1.0", "indices": [ "my-index" ] }] }nota
Por padrão, a operação
GET _snapshot/<repo>exibe informações detalhadas de dados, como hora de início, hora de término e duração de cada instantâneo em um repositório. A operaçãoGET _snapshot/<repo>recupera informações dos arquivos de cada instantâneo contido em um repositório. Se você não precisar do horário de início, horário de término e duração e precisar apenas do nome e das informações de índice de um snapshot, recomendamos usar o parâmetroverbose=falseao listar snapshots para minimizar o tempo de processamento e evitar o tempo limite. -
Se o índice já existir, exclua-o:
DELETEmy-indexSe não quiser excluir o índice, devolva-o ao armazenamento de atividade muito alta e reindexe-o
. -
Restaure o snapshot:
POST _snapshot/cs-ultrawarm/snapshot-name/_restoreO UltraWarm ignora todas as configurações de índice especificadas nesta solicitação de restauração, mas você pode especificar opções como
rename_patternerename_replacement. Para obter um resumo das opções de restauração de snapshots do OpenSearch, consulte a documentação do OpenSearch.
Snapshots manuais de índices mornos
Você pode obter snapshots manuais de índices mornos, mas não recomendamos fazer isso. O repositório cs-ultrawarm automatizado já contém um snapshot para cada índice de alta atividade, obtido durante a migração, sem custo adicional.
Por padrão, o OpenSearch Service não inclui índices warm em snapshots manuais. Por exemplo, a chamada a seguir inclui apenas índices quentes:
PUT _snapshot/my-repository/my-snapshot
Se você optar por obter snapshots manuais de índices mornos, diversas considerações importantes serão aplicáveis.
-
Você não pode misturar índices quentes e mornos. Por exemplo, a solicitação a seguir falha:
PUT _snapshot/my-repository/my-snapshot{ "indices": "warm-index-1,hot-index-1", "include_global_state": false }Se eles incluírem uma mistura de índices quentes e mornos, as instruções universais (
*) também falharão. -
Você só pode incluir um índice de alta atividade por snapshot. Por exemplo, a solicitação a seguir falha:
PUT _snapshot/my-repository/my-snapshot{ "indices": "warm-index-1,warm-index-2,other-warm-indices-*", "include_global_state": false }Esta solicitação é bem-sucedida:
PUT _snapshot/my-repository/my-snapshot{ "indices": "warm-index-1", "include_global_state": false } -
Os snapshots manuais são sempre restaurados para o armazenamento de atividade muito alta, mesmo que tenham originalmente incluído um índice de alta atividade.
Migração de índices mornos para o armazenamento frio
Se você tem dados no UltraWarm que você consulta com pouca frequência, considere migrá-los para o armazenamento de baixa atividade. O armazenamento de baixa atividade é destinado a dados que você acessa apenas ocasionalmente ou que não estão mais em uso ativo. Você não pode ler nem gravar em índices frios, mas pode migrá-los de volta para o armazenamento morno sem nenhum custo sempre que precisar consultá-los. Para obter instruções, consulte Migração de índices para o armazenamento frio.
Práticas recomendadas para índices KNN
-
O nível Ultrawarm/Frio está disponível para todos os tipos de mecanismos de índice KNN. Nós o recomendamos para índices KNN que usam o mecanismo Lucene e pesquisa vetorial otimizada para disco, o que não exige o carregamento total dos dados de gráfico na memória off-heap. Ao usá-lo com mecanismos nativos na memória, como FAISS e NMSLIB, você deve considerar o tamanho do gráfico de fragmentos que será pesquisado ativamente e provisionar adequadamente as instâncias UltraWarm, preferencialmente do tipo de instância
uw.large. Por exemplo, se os clientes tiverem duas instânciasuw.largeconfiguradas, cada uma terá aproximadamenteknn.memory.circuit_breaker.limit * 61GiB de memória off-heap disponível. Você terá a performance ideal se todas as suas consultas mornas visarem fragmentos cujo tamanho gráfico cumulativo não exceda a memória off-heap disponível. A latência será afetada se a memória disponível for menor que a necessária para carregar o gráfico devido a remoções e à espera até a memória off-heap ficar disponível. É por isso que não recomendamos o uso de instânciasuw.mediumpara casos de uso em que mecanismos na memória são usados ou casos de maior throughput de pesquisa, independentemente dos mecanismos. -
Os índices KNN que migrarem para o UltraWarm não serão mesclados à força em um único segmento. Isso evita qualquer impacto nos nós quentes e mornos que enfrentam problemas de OOM devido ao tamanho do gráfico se tornar grande demais para os mecanismos em memória. Devido ao aumento no número de segmentos por fragmento, isso pode resultar no consumo de mais espaço de cache local e permitir que menos índices migrem para a camada morna. Você pode escolher forçar a mesclagem de índices em um único segmento usando a configuração existente e substituindo-a antes de migrar os índices para a camada morna. Para obter mais informações, consulte Ajuste de migrações.
-
Se tiver um caso de uso em que os índices são pesquisados com pouca frequência e não atendem a uma workload sensível à latência, você poderá escolher migrar esses índices para a camada UltraWarm. Isso ajudará a reduzir a escala das instâncias de computação do nível quente e permitirá que a computação do nível UltraWarm processe a consulta nesses índices de baixa prioridade. Isso também pode ajudar a isolar os recursos consumidos por consultas de índices de baixa e alta prioridade de modo que não afetem um ao outro.
Desabilitar o UltraWarm
O console é a maneira mais simples de desabilitar o UltraWarm. Escolha o domínio, Ações, e Editar configuração do cluster. Desmarque Habilitar nós de dados mornos e escolha Salvar alterações. Você também pode usar a opção WarmEnabled na AWS CLI e na API de configuração.
Antes de desabilitar o UltraWarm, você deve excluir todos os índices de alta atividade