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.
Tópicos
- Pré-requisitos
- Requisitos de armazenamento e considerações de performance do UltraWarm
- Preços do UltraWarm
- Ativação do UltraWarm
- Migração de índices para o armazenamento UltraWarm
- Automatização de migrações
- Ajuste de migrações
- Cancelamento de migrações
- Listagem de índices quentes e mornos
- Retorno de índices warm para o armazenamento quente
- Restauração de índices quentes de snapshots
- Snapshots manuais de índices mornos
- Migração de índices mornos para o armazenamento frio
- Desabilitar o UltraWarm
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 quentes deve ser um múltiplo do número de zonas de disponibilidade que estão sendo 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ê não pode movê-lo para o armazenamento de alta atividade. -
Se o domínio usar controle de acesso refinado, os usuários deverão ser mapeados para a função
ultrawarm_manager
no 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_cluster
ecluster_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 back-end 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 ter 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 UltraWarm e o número de nós de alta atividade 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 quentes deve ser um múltiplo do número de zonas de disponibilidade que estão sendo usadas. Para ter 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-name
my-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:
GET
my-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_type
especifica 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_explicit
especifica 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 segmento.
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:
PUT
my-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 na fila do armazenamento de alta atividade para o armazenamento de atividade muito alta por 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=false
ao listar snapshots para minimizar o tempo de processamento e evitar o tempo limite. -
Se o índice já existir, exclua-o:
DELETE
my-index
Se 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_pattern
erename_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.
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 UltraWarm 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