Controles de consistencia
Los controles de consistencia proporcionan una compensación entre la disponibilidad de los objetos y la consistencia de dichos objetos en diferentes nodos y sitios de almacenamiento, según lo requiera su aplicación.
De forma predeterminada, StorageGRID garantiza la coherencia de lectura tras escritura de los objetos recién creados. Cualquier OBTENER después de un PUESTO completado correctamente podrá leer los datos recién escritos. Las sobrescrituras de objetos existentes, actualizaciones de metadatos y eliminaciones son coherentes en la actualidad. Por lo general, las sobrescrituras tardan segundos o minutos en propagarse, pero pueden tardar hasta 15 días.
Si desea realizar operaciones de objetos en un nivel de coherencia diferente, puede especificar un control de coherencia para cada bloque o para cada operación de API.
Controles de consistencia
El control de consistencia afecta a cómo los metadatos que utiliza StorageGRID para realizar un seguimiento de los objetos se distribuyen entre los nodos y, por lo tanto, la disponibilidad de los objetos para las solicitudes del cliente.
Puede establecer el control de coherencia de un bloque o una operación API en uno de los siguientes valores:
Control de consistencia | Descripción |
---|---|
todo |
Todos los nodos reciben los datos inmediatamente o se produce un error en la solicitud. |
fuerte en todo el mundo |
Garantiza la coherencia de lectura tras escritura para todas las solicitudes del cliente en todos los sitios. |
sitio seguro |
Garantiza la coherencia de lectura tras escritura para todas las solicitudes del cliente dentro de un sitio. |
lectura-después-nueva-escritura |
(Predeterminado) proporciona coherencia de lectura tras escritura para los nuevos objetos y coherencia final para las actualizaciones de objetos. Ofrece garantías de alta disponibilidad y protección de datos. Coincide con las garantías de coherencia de Amazon S3. Nota: Si su aplicación utiliza PETICIONES HEAD en objetos que no existen, puede recibir un número elevado de 500 errores de Internal Server si uno o más nodos de almacenamiento no están disponibles. Para evitar estos errores, establezca el control de coherencia en "'Available'" a menos que necesite garantías de coherencia similares a las de Amazon S3. |
Disponible (coherencia eventual para operaciones DE CABEZAL) |
Se comporta del mismo modo que el nivel de consistencia "read-after-new-write", pero sólo proporciona consistencia eventual para las operaciones DE CABEZA. Ofrece una mayor disponibilidad para las OPERACIONES DE CABEZAL que una «escritura tras otra» si los nodos de almacenamiento no están disponibles. Se diferencia de las garantías de coherencia de Amazon S3 solo para operaciones HEAD. |
Utilizando los controles de coherencia "ad-after-new-write" y "available"
Cuando una OPERACIÓN DE CABEZA u OBTIENE utiliza el control de consistencia «read-after-new-write» o UNA operación GET utiliza el control de consistencia «'available'», StorageGRID realiza la búsqueda en varios pasos, de la siguiente manera:
-
Primero busca el objeto con una baja consistencia.
-
Si esa búsqueda falla, repite la búsqueda en el siguiente nivel de consistencia hasta alcanzar el nivel de consistencia más alto, "'all,'", lo que requiere que todas las copias de los metadatos del objeto estén disponibles.
Si una operación HEAD o GET utiliza el control de consistencia «read-after-new-write» pero el objeto no existe, la búsqueda de objetos siempre alcanzará el nivel de consistencia «'all'». Debido a que este nivel de consistencia requiere que todas las copias de los metadatos del objeto estén disponibles, puede recibir un número elevado de 500 errores de servidor interno si uno o más nodos de almacenamiento no están disponibles.
A menos que necesite garantías de coherencia similares a las de Amazon S3, puede evitar estos errores en operaciones CON CABEZAL estableciendo el control de coherencia en "'disponible'". Cuando una operación DE CABEZAL utiliza el control de consistencia "'disponible'", StorageGRID proporciona únicamente consistencia eventual. No vuelve a intentar una operación fallida hasta que alcanza el nivel de consistencia "'all'", por lo que no requiere que todas las copias de los metadatos del objeto estén disponibles.
Especifique el control de consistencia para una operación API
Para configurar el control de coherencia para una operación de API individual, deben ser compatibles los controles de coherencia para la operación y debe especificar el control de coherencia en el encabezado de la solicitud. En este ejemplo se establece el control de coherencia en «punto de referencia» para una operación GET Object.
GET /bucket/object HTTP/1.1
Date: date
Authorization: authorization name
Host: host
Consistency-Control: strong-site
Debe usar el mismo control de coherencia para las operaciones PUT Object y GET Object. |
Especificar el control de consistencia de un bloque
Para establecer el control de consistencia para el bloque, puede utilizar StorageGRID la solicitud de consistencia PUT Bucket y LA solicitud DE consistencia GET Bucket. También puede usar el Administrador de inquilinos o la API de gestión de inquilinos.
Cuando configure los controles de coherencia para un cucharón, tenga en cuenta lo siguiente:
-
La configuración del control de coherencia para un bloque determina el control de coherencia que se utiliza para las operaciones de S3 realizadas en los objetos del bloque o en la configuración de bloques. No afecta a las operaciones del propio cucharón.
-
El control de coherencia de una operación API individual anula el control de coherencia del bloque.
-
En general, los cucharones deben utilizar el control de coherencia predeterminado, «entre una y otra escritura». Si las solicitudes no funcionan correctamente, cambie el comportamiento del cliente de la aplicación, si es posible. O bien, configure el cliente para especificar el control de consistencia de cada solicitud API. Establecer el control de consistencia a nivel de cucharón únicamente como último recurso.
Cómo interactúan los controles de consistencia y las reglas de ILM para afectar a la protección de datos
Tanto la elección del control de coherencia como la regla de ILM afectan a la forma en que se protegen los objetos. Estos ajustes pueden interactuar.
Por ejemplo, el control de consistencia usado cuando se almacena un objeto afecta a la colocación inicial de los metadatos de objetos, mientras que el comportamiento de procesamiento seleccionado para la regla de ILM afecta a la colocación inicial de las copias de objetos. Dado que StorageGRID requiere acceso tanto a los metadatos de un objeto como a sus datos para cumplir con las solicitudes de los clientes, seleccionar los niveles de protección correspondientes para el nivel de coherencia y el comportamiento de ingesta puede proporcionar una mejor protección de datos inicial y respuestas más predecibles del sistema.
Para las reglas de ILM hay disponibles los siguientes comportamientos de consumo:
-
Estricto: Todas las copias especificadas en la regla ILM deben hacerse antes de que el éxito se devuelva al cliente.
-
Balanceado: StorageGRID intenta hacer todas las copias especificadas en la regla ILM en la ingesta; si esto no es posible, se hacen copias provisionales y se devuelve éxito al cliente. Las copias especificadas en la regla ILM se realizan cuando es posible.
-
Commit doble: StorageGRID realiza inmediatamente copias provisionales del objeto y devuelve éxito al cliente. Las copias especificadas en la regla ILM se realizan cuando es posible.
Antes de seleccionar el comportamiento de procesamiento de una regla de ILM, lea la descripción completa de estos ajustes en las instrucciones para gestionar objetos con gestión del ciclo de vida de la información. |
Ejemplo de cómo puede interactuar el control de consistencia y la regla de ILM
Suponga que tiene una cuadrícula de dos sitios con la siguiente regla de ILM y la siguiente configuración de nivel de coherencia:
-
Norma ILM: Cree dos copias de objetos, una en el sitio local y otra en un sitio remoto. Se ha seleccionado el comportamiento de procesamiento estricto.
-
Nivel de coherencia: "Strong-global" (los metadatos de objetos se distribuyen inmediatamente a todos los sitios).
Cuando un cliente almacena un objeto en el grid, StorageGRID realiza copias de objetos y distribuye los metadatos en ambos sitios antes de devolver el éxito al cliente.
El objeto está completamente protegido contra la pérdida en el momento del mensaje de procesamiento correcto. Por ejemplo, si el sitio local se pierde poco después del procesamiento, seguirán existiendo copias de los datos del objeto y los metadatos del objeto en el sitio remoto. El objeto se puede recuperar completamente.
Si en su lugar ha utilizado la misma regla de ILM y el nivel de coherencia de «un sitio común», puede que el cliente reciba un mensaje de éxito después de replicar los datos del objeto en la ubicación remota, pero antes de que los metadatos del objeto se distribuyan allí. En este caso, el nivel de protección de los metadatos de objetos no coincide con el nivel de protección de los datos de objetos. Si el sitio local se pierde poco después del procesamiento, se pierden los metadatos del objeto. No se puede recuperar el objeto.
La interrelación entre los niveles de coherencia y las reglas del ILM puede ser compleja. Póngase en contacto con NetApp si necesita ayuda.