UltraWarm almacenamiento para Amazon OpenSearch Service - OpenSearch Servicio Amazon

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

UltraWarm almacenamiento para Amazon OpenSearch Service

UltraWarm proporciona una forma rentable de almacenar grandes cantidades de datos de solo lectura en Amazon OpenSearch Service. Los nodos de datos estándar utilizan almacenamiento "en caliente", que adopta la forma de almacenes de instancias o volúmenes de Amazon EBS asociados a cada nodo. El almacenamiento en caliente proporciona el rendimiento más rápido posible para indexar y buscar nuevos datos.

En lugar de almacenamiento adjunto, UltraWarm los nodos utilizan Amazon S3 y una sofisticada solución de almacenamiento en caché para mejorar el rendimiento. En el caso de los índices en los que no está escribiendo activamente, que consultan con menos frecuencia y que no necesitan el mismo rendimiento, UltraWarm ofrecen costes significativamente más bajos por GiB de datos. Dado que los índices calientes son de solo lectura, a menos que se devuelvan al almacenamiento activo, UltraWarm es ideal para datos inmutables, como los registros.

En OpenSearch, los índices cálidos se comportan igual que cualquier otro índice. Puede consultarlos mediante las mismas API o utilizarlos para crear visualizaciones en OpenSearch los paneles de control.

Requisitos previos

UltraWarm tiene algunos requisitos previos importantes:

  • UltraWarm requiere Elasticsearch 6.8 OpenSearch o superior.

  • Para utilizar el almacenamiento "warm", los dominios deben tener nodos maestros dedicados.

  • Cuando se utiliza una zona de disponibilidad múltiple con un dominio en espera, el número de nodos activos debe ser un múltiplo del número de zonas de disponibilidad que se estén utilizando.

  • Si su dominio utiliza un tipo de instancia T2 o T3 para los nodos de datos, no puede utilizar el almacenamiento templado.

  • Si su índice usa k-NN aproximado ("index.knn": true), no puede moverlo al almacenamiento en caliente.

  • Si el dominio usa un control de acceso detallado, los usuarios deben estar asignados a la ultrawarm_manager función en los OpenSearch paneles para poder realizar llamadas a la API. UltraWarm

nota

Es posible que la ultrawarm_manager función no esté definida en algunos dominios de servicio preexistentes. OpenSearch Si no ve el rol en el panel, debe crearlo de forma manual.

Configuración de permisos

Si lo habilita UltraWarm en un dominio de OpenSearch servicio preexistente, es posible que el ultrawarm_manager rol no esté definido en el dominio. Los usuarios que no sean administradores deben estar asignados a este rol para poder administrar índices templados en los dominios mediante un control de acceso detallado. Para crear el rol ultrawarm_manager de forma manual, siga estos pasos:

  1. En los OpenSearch paneles de control, vaya a Seguridad y elija Permisos.

  2. Seleccione Crear grupo de acciones y configure los siguientes grupos:

    Nombre del grupo Permisos
    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

  3. Seleccione Roles y, a continuación, Crear rol.

  4. Asigne al rol el nombre ultrawarm_manager.

  5. Para Permisos de clúster, seleccione ultrawarm_cluster y cluster_monitor.

  6. Para Índice, escriba *.

  7. Para Permisos de índice, seleccione ultrawarm_index_read, ultrawarm_index_write, y indices_monitor.

  8. Seleccione Crear.

  9. Después de crear el rol, asígnelo a cualquier rol de usuario o backend que UltraWarm administre los índices.

UltraWarm requisitos de almacenamiento y consideraciones de rendimiento

Como se explica en el Cálculo de requisitos de almacenamiento apartado anterior, los datos almacenados en caliente suponen una sobrecarga importante: réplicas, espacio reservado en Linux y espacio reservado en el OpenSearch servicio. Por ejemplo, una partición principal de 20 GiB con una partición de réplica requiere aproximadamente 58 GiB de almacenamiento en caliente.

Como utiliza Amazon S3, no UltraWarm incurre en ninguna de estas sobrecargas. Al calcular los requisitos UltraWarm de almacenamiento, solo se tiene en cuenta el tamaño de las particiones principales. La durabilidad de los datos en S3 elimina la necesidad de mantener réplicas y S3 abstrae (y hace innecesarias) las consideraciones de sistemas operativos o de servicio. Esa misma partición de 20 GiB requiere solo 20 GiB de almacenamiento templado. Si aprovisiona una instancia ultrawarm1.large.search, puede usar los 20 TiB de su almacenamiento máximo para particiones principales. Consulte UltraWarm cuotas de almacenamiento para obtener un resumen de los tipos de instancia y la cantidad máxima de almacenamiento que puede abordar cada uno.

Con UltraWarm, seguimos recomendando un tamaño de fragmento máximo de 50 GiB. El número de núcleos de CPU y la cantidad de RAM asignados a cada tipo de UltraWarm instancia te dan una idea del número de fragmentos que pueden buscar simultáneamente. Tenga en cuenta que, si bien solo los fragmentos principales cuentan para el UltraWarm almacenamiento en S3, los OpenSearch cuadros de mando indican _cat/indices el tamaño del UltraWarm índice como el total de todos los fragmentos principales y de réplica.

Por ejemplo, cada instancia de ultrawarm1.medium.search tiene dos núcleos de CPU y puede abordar hasta 1,5 TiB de almacenamiento en S3. Dos de estas instancias tienen una combinación de 3 TiB de almacenamiento, que funciona en aproximadamente 62 particiones si cada partición es de 50 GiB. Si una solicitud al clúster solo busca cuatro de estas particiones, el rendimiento puede ser excelente. Si la solicitud es amplia y busca los 62, es posible que los cuatro núcleos de CPU tengan dificultades para realizar la operación. Supervise las WarmJVMMemoryPressure UltraWarm métricas WarmCPUUtilization y las métricas para comprender cómo gestionan las instancias sus cargas de trabajo.

Si realiza búsquedas amplias o frecuentes, considere dejar los índices en el almacenamiento caliente. Al igual que cualquier otra OpenSearch carga de trabajo, el paso más importante para determinar si UltraWarm cumple con sus necesidades es realizar pruebas representativas con los clientes utilizando un conjunto de datos realista.

UltraWarm fijación de precios

Con el almacenamiento en caliente, se paga lo que se aprovisiona. Algunas instancias requieren un volumen de Amazon EBS asociado, mientras que otras incluyen un almacén de instancias. Tanto si el almacenamiento está vacío como si está lleno, se paga el mismo precio.

Con el UltraWarm almacenamiento, pagas por lo que usas. Una instancia ultrawarm1.large.search puede poner a disposición hasta 20 TiB de almacenamiento en S3. Sin embargo, si únicamente se almacena 1 TiB de datos, solo se le facturará 1 TiB de datos. Como todos los demás tipos de nodos, también pagas una tarifa por hora por cada UltraWarm nodo. Para obtener más información, consulte Precios de Amazon OpenSearch Service.

¿Habilitando UltraWarm

La consola es la forma más sencilla de crear un dominio que utiliza almacenamiento templado. Al crear el dominio, elija Habilitar nodos de UltraWarm datos y el número de nodos calientes que desee. El mismo proceso básico funciona en dominios existentes, siempre que cumplan los requisitos previos. Incluso después de que el estado del dominio cambie de Procesado a Activo, es UltraWarm posible que no esté disponible para su uso durante varias horas.

Cuando se utiliza un dominio Multi-AZ con dominio en espera, el número de nodos calientes debe ser un múltiplo del número de zonas de disponibilidad que se estén utilizando. Para obtener más información, consulte Multi-AZ con modo de espera.

También puede usar la API de configuración AWS CLIo la API para habilitar UltraWarm, específicamente WarmEnabledWarmCount, las WarmType opciones y. ClusterConfig

nota

Los dominios admiten un número máximo de nodos templados. Para más información, consulte Cuotas OpenSearch de Amazon Service.

Ejemplo de comando de la CLI

El siguiente AWS CLI comando crea un dominio con tres nodos de datos, tres nodos maestros dedicados, seis nodos calientes y un control de acceso detallado activado:

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/*"}]}' \ --region us-east-1

Para obtener más información, consulte la Referencia de comandos de la AWS CLI.

Ejemplo de solicitud a la API de configuración

La siguiente solicitud a la API de configuración crea un dominio con tres nodos de datos, tres nodos maestros dedicados y seis nodos templados con control de acceso detallado habilitado y una política de acceso restrictiva:

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 obtener información detallada, consulta la referencia de la API OpenSearch de Amazon Service.

Migración de índices al almacenamiento UltraWarm

Si ha terminado de escribir en un índice y ya no necesita el rendimiento de búsqueda más rápido posible, migre el índice de modo activo a: UltraWarm

POST _ultrawarm/migration/my-index/_warm

A continuación, verifique el estado de la migración:

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 } } }

El estado del índice debe ser verde para realizar una migración. Si migra varios índices en una sucesión rápida, puede obtener un resumen de todas las migraciones en texto sin formato, similar a la API _cat:

GET _ultrawarm/migration/_status?v index migration_type state my-index HOT_TO_WARM RUNNING_SHARD_RELOCATION

OpenSearch El servicio migra un índice a la vez a UltraWarm. Se pueden tener hasta 200 migraciones en la cola. Cualquier solicitud que supere el límite será rechazada. Para comprobar el número actual de migraciones en la cola, supervise la métrica de HotToWarmMigrationQueueSize. Los índices permanecen disponibles durante todo el proceso de migración, sin tiempo de inactividad.

El proceso de migración tiene los siguientes 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 indican estos estados, se pueden producir errores en las migraciones si se realizan durante instantáneas, reubicaciones de particiones o fusiones forzosas. Los errores durante las instantáneas o las reubicaciones de particiones suelen deberse a errores de nodo o problemas de conectividad de S3. La falta de espacio en el disco suele ser la causa subyacente de los errores en las fusiones forzosas.

Una vez finalizada la migración, la misma solicitud _status devuelve un error. Si comprueba el índice en ese momento, verá algunos parámetros de configuración que son exclusivos de los índices templados:

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, en este caso, es el número de réplicas pasivas, que no consumen espacio en disco.

  • routing.allocation.require.box_type especifica que el índice debe usar nodos templados en lugar de nodos de datos estándar.

  • merge.policy.max_merge_at_once_explicit especifica el número de segmentos que se van a fusionar simultáneamente durante la migración.

Los índices almacenados en caliente son de solo lectura, a menos que se devuelvan al almacenamiento activo, lo que los hace UltraWarm más adecuados para datos inmutables, como los registros. Puede consultar los índices y eliminarlos, pero no puede agregar, actualizar ni eliminar documentos individuales. Si lo intenta, podría encontrarse con el siguiente error:

{ "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 }

Automatizar migraciones

Se recomienda utilizar Index State Management en Amazon OpenSearch Service para automatizar el proceso de migración después de que un índice alcance cierta antigüedad o cumpla otras condiciones. Consulte la política de ejemplo que muestra este flujo de trabajo.

Ajuste de migración

Las migraciones de índices al almacenamiento requieren una fusión forzada. UltraWarm Cada OpenSearch índice se compone de un número determinado de fragmentos y cada fragmento se compone de un número determinado de segmentos de Lucene. La operación de fusión forzada purga los documentos marcados para su eliminación y conserva espacio en disco. De forma predeterminada, UltraWarm fusiona los índices en un segmento.

Puede cambiar este valor hasta 1000 segmentos utilizando la configuración de index.ultrawarm.migration.force_merge.max_num_segments. Los valores más altos aceleran el proceso de migración, pero aumentan la latencia de consulta para el índice activo una vez finalizada la migración. Para cambiar la configuración, realice la siguiente solicitud:

PUT my-index/_settings { "index": { "ultrawarm": { "migration": { "force_merge": { "max_num_segments": 1 } } } } }

Para comprobar cuánto tiempo tarda esta etapa del proceso de migración, monitoree la métrica de HotToWarmMigrationForceMergeLatency.

Cancelación de migraciones

UltraWarm gestiona las migraciones de forma secuencial, en una cola. Si una migración está en la cola, pero aún no se ha iniciado, puede eliminarla de la cola mediante la siguiente solicitud:

POST _ultrawarm/migration/_cancel/my-index

Si el dominio utiliza un control de acceso detallado, debe tener el permiso de indices:admin/ultrawarm/migration/cancel para realizar esta solicitud.

Listado de índices calientes y templados

UltraWarm añade dos opciones adicionales, similares a_all, para ayudar a gestionar los índices calientes y cálidos. Para obtener una lista de todos los índices calientes o templados, realice las siguientes solicitudes:

GET _warm GET _hot

Puede utilizar estas opciones en otras solicitudes que especifican índices, por ejemplo:

_cat/indices/_warm _cluster/state/_all/_hot

Devolución de índices templados al almacenamiento caliente

Si necesita volver a escribir en un índice, vuelva a migrarlo al almacenamiento en caliente:

POST _ultrawarm/migration/my-index/_hot

Puede tener hasta 10 migraciones en cola de almacenamiento en caliente a almacenamiento en caliente a la vez. OpenSearch El servicio procesa las solicitudes de migración de una en una, en el orden en que se pusieron en cola. Para comprobar el número actual, monitoree la métrica de WarmToHotMigrationQueueSize.

Una vez finalizada la migración, compruebe la configuración del índice para asegurarse de que satisfaga sus necesidades. Los índices vuelven al almacenamiento caliente con una réplica.

Restauración de índices templados a partir de instantáneas

Además del repositorio estándar para instantáneas automatizadas, UltraWarm añade un segundo repositorio para índices calientes,. cs-ultrawarm Cada instantánea de este repositorio contiene solo un índice. Si elimina un índice caliente, su instantánea permanece en el repositorio de cs-ultrawarm durante 14 días, al igual que cualquier otra instantánea automatizada.

Cuando restaura una instantánea desde cs-ultrawarm, se restaura en el almacenamiento "warm", no en el almacenamiento en caliente. Las instantáneas de los repositorios cs-automated y cs-automated-enc restauran el almacenamiento en caliente.

Para restaurar una UltraWarm instantánea en un almacenamiento en caliente
  1. Identifique la instantánea más reciente que contiene el índice que desea restaurar:

    GET _snapshot/cs-ultrawarm/_all?verbose=false { "snapshots": [{ "snapshot": "snapshot-name", "version": "1.0", "indices": [ "my-index" ] }] }
    nota

    De forma predeterminada, la GET _snapshot/<repo> operación muestra información detallada sobre los datos, como la hora de inicio, la hora de finalización y la duración de cada instantánea de un repositorio. La GET _snapshot/<repo> operación recupera información de los archivos de cada instantánea contenidos en un repositorio. Si no necesita la hora de inicio, la hora de finalización y la duración y solo necesita el nombre y la información de índice de una instantánea, le recomendamos que utilice el verbose=false parámetro al enumerar las instantáneas para minimizar el tiempo de procesamiento y evitar que se agote el tiempo de espera.

  2. Si el índice ya existe, elimínelo:

    DELETE my-index

    Si no quiere eliminar el índice, debe devolverlo al almacenamiento en caliente y reindexarlo.

  3. Restaurar la instantánea:

    POST _snapshot/cs-ultrawarm/snapshot-name/_restore

    UltraWarm ignora cualquier configuración de índice que especifique en esta solicitud de restauración, pero puede especificar opciones como rename_pattern yrename_replacement. Para ver un resumen de las opciones de restauración de OpenSearch instantáneas, consulte la OpenSearch documentación.

Instantáneas manuales de índices templados

Usted puede tomar instantáneas manuales de índices templados, pero no lo recomendamos. El repositorio de automatización cs-ultrawarm ya contiene una instantánea para cada índice activo, tomada durante la migración, sin cargo adicional.

De forma predeterminada, el OpenSearch servicio no incluye índices calientes en las instantáneas manuales. Por ejemplo, la siguiente llamada solo incluye índices calientes:

PUT _snapshot/my-repository/my-snapshot

Si elige tomar instantáneas manuales de índices templados, se aplican varias consideraciones importantes.

  • No puede mezclar índices calientes y templados. Por ejemplo, la siguiente solicitud devuelve un error:

    PUT _snapshot/my-repository/my-snapshot { "indices": "warm-index-1,hot-index-1", "include_global_state": false }

    Si incluyen una mezcla de índices calientes y cálidos, comodín (*) también devuelven un error.

  • Solo se puede incluir un índice templado por instantánea. Por ejemplo, la siguiente solicitud devuelve un error:

    PUT _snapshot/my-repository/my-snapshot { "indices": "warm-index-1,warm-index-2,other-warm-indices-*", "include_global_state": false }

    Esta solicitud se realiza correctamente:

    PUT _snapshot/my-repository/my-snapshot { "indices": "warm-index-1", "include_global_state": false }
  • Las instantáneas manuales siempre se restauran al almacenamiento en caliente, incluso si originalmente incluían un índice templado.

Migración de índices templados al almacenamiento frío

Si tiene datos UltraWarm que consulta con poca frecuencia, considere la posibilidad de migrarlos a un almacenamiento en frío. El almacenamiento frío está diseñado para los datos a los que solo se accede ocasionalmente o que ya no están en uso activo. No puede leer ni escribir en índices fríos, pero puede migrarlos de nuevo al almacenamiento templado sin costo cada vez que necesite consultarlos. Para ver instrucciones, consulte Migración de índices al almacenamiento frío.

Inhabilitando UltraWarm

La consola es la forma más sencilla de deshabilitar UltraWarm. Seleccione el dominio, Acciones y Editar la configuración del clúster. Deseleccione Activar nodos de UltraWarm datos y elija Guardar cambios. También puede usar la opción WarmEnabled en la API de configuración y en la AWS CLI .

Antes de desactivarlos UltraWarm, debe eliminar todos los índices calientes o migrarlos de nuevo al almacenamiento activo. Cuando el almacenamiento en caliente esté vacío, espere cinco minutos antes de intentar UltraWarm desactivarlo.