Búsqueda en clústeres de 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.

Búsqueda en clústeres de Amazon OpenSearch Service

La búsqueda entre clústeres en Amazon OpenSearch Service permite realizar consultas y agregaciones en varios dominios conectados. A menudo tiene más sentido usar varios dominios más pequeños en lugar de un solo dominio grande, especialmente cuando se ejecutan distintos tipos de cargas de trabajo.

Los dominios específicos de la carga de trabajo permiten realizar las siguientes tareas:

  • Optimice cada dominio mediante la elección de tipos de instancia para cargas de trabajo específicas.

  • Establezca límites de aislamiento de fallas entre cargas de trabajo. Esto significa que si una de las cargas de trabajo devuelve un error, el error queda contenido dentro de ese dominio específico y no afecta a las demás cargas de trabajo.

  • Escale más fácilmente entre dominios.

La búsqueda entre clústeres admite OpenSearch Dashboards, por lo que puede crear visualizaciones y paneles en todos los dominios. Paga los cargos de estándar de transferencia de datos de AWS para los resultados de búsqueda transferidos entre dominios.

nota

OpenSearch de código abierto también tiene documentación para la búsqueda entre clústeres. La configuración difiere considerablemente entre los clústeres de código abierto en comparación con los dominios administrados de Amazon OpenSearch Service. En concreto, en OpenSearch Service, las conexiones entre clústeres se configuran mediante la AWS Management Console en lugar de a través de cURL. Además, el servicio administrado utiliza AWS Identity and Access Management (IAM) para la autenticación entre clústeres, además de un control de acceso detallado. Por lo tanto, recomendamos utilizar esta documentación, en lugar de la documentación de OpenSearch de código abierto, para configurar la búsqueda entre clústeres para sus dominios.

Limitaciones

La búsqueda en clústeres tiene varias limitaciones importantes:

  • No puede conectar un dominio de Elasticsearch a un dominio de OpenSearch.

  • No puede conectarse a clústeres de OpenSearch o Elasticsearch autoadministrados.

  • Para conectar dominios de distintas regiones, ambos dominios deben estar en Elasticsearch 7.10 o posterior u OpenSearch.

  • Un dominio puede tener un máximo de 20 conexiones salientes. Del mismo modo, un dominio puede tener un máximo de 20 conexiones entrantes. En otras palabras, un dominio puede conectarse a un máximo de 20 dominios.

  • El dominio de origen debe estar en la misma versión o superior a la del dominio de destino. Si configura una conexión bidireccional entre dos dominios y desea actualizar uno o ambos, antes debe eliminar una de las conexiones.

  • No puede usar diccionarios personalizados o SQL con la búsqueda en clústeres.

  • No puede usar AWS CloudFormation para conectar dominios.

  • No se puede utilizar la búsqueda entre clústeres en instancias M3 o bursátiles (T2 y T3).

Requisitos previos de búsqueda entre clústeres

Antes de configurar la búsqueda en clústeres, asegúrese de que los dominios cumplan los siguientes requisitos:

  • Dos dominios de OpenSearch, o dominios de Elasticsearch en la versión 6.7 o posterior

  • Control de acceso detallado habilitado

  • Cifrado de nodo a nodo habilitado

Precio de búsqueda entre clústeres

No hay ningún cargo adicional por buscar entre dominios.

Configuración de una conexión

El dominio de “origen” hace referencia al dominio desde el que se origina una petición de búsqueda en clústeres. En otras palabras, el dominio de origen es al que envía la petición de búsqueda inicial.

El dominio “destino” es el dominio que consulta el dominio de origen.

Una conexión entre clústeres es unidireccional desde el dominio de origen hasta el dominio de destino. Esto significa que el dominio de destino no puede consultar el dominio de origen. Sin embargo, puede configurar otra conexión en la dirección opuesta.

Flujo de autorización de búsqueda en clústeres

El dominio de origen crea una conexión “saliente” al dominio de destino. El dominio de destino recibe una solicitud de conexión “entrante” del dominio de origen.

Para configurar una conexión
  1. En el panel del dominio, seleccione un dominio y vaya a la pestaña Conexiones.

  2. En la sección Conexiones de salida, seleccione Solicitar.

  3. En Alias de conexión, ingrese un nombre para la conexión.

  4. Seleccione entre conectarse a un dominio de su Cuenta de AWS y región, o hacerlo a otra cuenta o región.

    • Para conectarse a un clúster en la Cuenta de AWS y la región, seleccione el dominio en el menú desplegable y luego Solicitar.

    • Para conectarse a un clúster de otra Cuenta de AWS o región, seleccione el ARN del dominio remoto y elija Solicitar. Para conectar dominios en distintas regiones, ambos dominios deben ejecutar Elasticsearch versión 7.10 o posterior u OpenSearch.

  5. Para omitir los clústeres no disponibles para las consultas de clústeres, seleccione Omitir los no disponibles. Esta configuración garantiza que las consultas entre clústeres devuelvan resultados parciales a pesar de que se produzcan errores en uno o más clústeres remotos.

  6. La búsqueda entre clústeres valida primero la solicitud de conexión para asegurarse de que se cumplen los requisitos previos. Si los dominios son incompatibles, la solicitud de conexión entra en el estado Validation failed.

  7. Una vez correctamente validada la solicitud de conexión, se envía al dominio de destino, donde tiene que aprobarse. Mientras no se obtenga la aprobación, la conexión permanecerá en el estado de Pending acceptance. Cuando se acepta la solicitud de conexión en el dominio de destino, el estado cambia a Active y el dominio de destino se vuelve disponible para consultas.

    • La página de dominio muestra el estado general del dominio y los detalles del estado de la instancia del dominio de destino. Los propietarios de dominios tienen la flexibilidad de crear, visualizar, eliminar y monitorear conexiones desde o hacia sus dominios.

Una vez establecida la conexión, se cifra todo el tráfico que circule entre los nodos de los dominios conectados. Si conecta un dominio de VPC a un dominio que no es VPC y el dominio que no es VPC es un punto de enlace público que puede recibir tráfico de Internet, el tráfico entre clústeres entre los dominios sigue cifrado y seguro.

Eliminación de una conexión

La eliminación de una conexión detiene cualquier operación entre clústeres en sus índices.

  1. En el panel del dominio, vaya a la pestaña Conexiones.

  2. Seleccione las conexiones de dominio que desea eliminar, luego elija Eliminar y, a continuación, confirme la eliminación.

Puede realizar estos pasos en el dominio fuente o de destino para eliminar la conexión. Una vez quitada la conexión, seguirá visible con el estado Deleted durante un periodo de 15 días.

No se puede eliminar un dominio con conexiones activas entre clústeres. Para eliminar un dominio, primero quite todas las conexiones entrantes y salientes de ese dominio. Esto es para asegurarse de tener en cuenta a los usuarios del dominio entre clústeres antes de eliminar el dominio.

Configuración de seguridad y explicación de ejemplo

  1. Envíe una petición de búsqueda en clústeres al dominio de origen.

  2. El dominio de origen evalúa esa solicitud en comparación con la política de acceso al dominio. Dado que la búsqueda en clústeres requiere un control de acceso detallado, recomendamos una política de acceso abierto en el dominio de origen.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:region:account:domain/src-domain/*" } ] }
    nota

    Si incluye índices remotos en la ruta, debe codificar la URL del URI en el ARN del dominio. Por ejemplo, use arn:aws:es:us-east-1:123456789012:domain/my-domain/local_index,dst%3Aremote_index en lugar de arn:aws:es:us-east-1:123456789012:domain/my-domain/local_index,dst:remote_index.

    Si elige utilizar una política de acceso restrictivo además de un control de acceso detallado, la política debe permitir el acceso a es:ESHttpGet como mínimo.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/test-user" ] }, "Action": "es:ESHttpGet", "Resource": "arn:aws:es:region:account:domain/src-domain/*" } ] }
  3. El control de acceso detallado en el dominio de origen evalúa la solicitud:

    • ¿La solicitud está firmada con credenciales básicas IAM o HTTP válidas?

    • Si es así, ¿tiene el usuario permiso para realizar la búsqueda y acceder a los datos?

    Si la solicitud solo busca datos en el dominio de destino (por ejemplo, dest-alias:dest-index/_search), solo necesitará permisos en el dominio de destino.

    Si la solicitud busca datos en ambos dominios (por ejemplo, source-index,dest-alias:dest-index/_search), necesita permisos en ambos dominios.

    En el control de acceso detallado, los usuarios deben tener el permiso indices:admin/shards/search_shards además de los permisos read o search estándar para los índices pertinentes.

  4. El dominio de origen pasa la solicitud al dominio de destino. El dominio de destino evalúa esta solicitud frente a su política de acceso al dominio. Debe incluir el permiso es:ESCrossClusterGet en el dominio de destino:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESCrossClusterGet", "Resource": "arn:aws:es:region:account:domain/dst-domain" } ] }

    Asegúrese de que el permiso es:ESCrossClusterGet se aplica para /dst-domain y no /dst-domain/*.

    Sin embargo, esta política mínima solo permite búsquedas en clústeres. Para realizar otras operaciones, como indexar documentos y realizar búsquedas estándar, necesita permisos adicionales. Recomendamos la siguiente política en el dominio de destino:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:region:account:domain/dst-domain/*" }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESCrossClusterGet", "Resource": "arn:aws:es:region:account:domain/dst-domain" } ] }
    nota

    Todas las solicitudes de búsqueda en clústeres entre dominios se cifran en tránsito de forma predeterminada como parte del cifrado de nodo a nodo.

  5. El dominio de destino realiza la búsqueda y devuelve los resultados al dominio de origen.

  6. El dominio de origen combina sus propios resultados (si los hay) con los resultados del dominio de destino y los devuelve.

  7. Recomendamos Postman para probar las solicitudes:

    • En el dominio de destino, indexe un documento:

      POST https://dst-domain.us-east-1.es.amazonaws.com/books/_doc/1 { "Dracula": "Bram Stoker" }
    • Para consultar este índice desde el dominio de origen, incluya el alias de conexión del dominio de destino dentro de la consulta.

      GET https://src-domain.us-east-1.es.amazonaws.com/<connection_alias>:books/_search { ... "hits": [ { "_index": "source-destination:books", "_type": "_doc", "_id": "1", "_score": 1, "_source": { "Dracula": "Bram Stoker" } } ] }

      Puede encontrar el alias de conexión en la pestaña Conexiones del panel de control del dominio.

    • Si configura una conexión entre domain-a -> domain-b con alias de conexión cluster_b y domain-a -> domain-c con alias de conexión cluster_c, busque domain-a, domain-b y domain-c de la siguiente manera:

      GET https://src-domain.us-east-1.es.amazonaws.com/local_index,cluster_b:b_index,cluster_c:c_index/_search { "query": { "match": { "user": "domino" } } }

      Respuesta

      { "took": 150, "timed_out": false, "_shards": { "total": 3, "successful": 3, "failed": 0, "skipped": 0 }, "_clusters": { "total": 3, "successful": 3, "skipped": 0 }, "hits": { "total": 3, "max_score": 1, "hits": [ { "_index": "local_index", "_type": "_doc", "_id": "0", "_score": 1, "_source": { "user": "domino", "message": "Lets unite the new mutants", "likes": 0 } }, { "_index": "cluster_b:b_index", "_type": "_doc", "_id": "0", "_score": 2, "_source": { "user": "domino", "message": "I'm different", "likes": 0 } }, { "_index": "cluster_c:c_index", "_type": "_doc", "_id": "0", "_score": 3, "_source": { "user": "domino", "message": "So am I", "likes": 0 } } ] } }

      Si no eligió omitir los clústeres no disponibles en la configuración de la conexión, todos los clústeres de destino que busca tienen que estar disponibles para que la petición de búsqueda se ejecute correctamente. De lo contrario, se produce un error en toda la solicitud; incluso si uno de los dominios no está disponible, la búsqueda no devuelve ningún resultado.

OpenSearch Dashboards

Puede visualizar datos de varios dominios conectados de la misma manera que desde un solo dominio, excepto que debe acceder a los índices remotos mediante connection-alias:index. Por lo tanto, su patrón de índice debe coincidir connection-alias:index.