En el ámbito de los sistemas distribuidos, la fiabilidad es un imperativo. etcd, un almacén de clave-valor ampliamente utilizado y crucial para la infraestructura, ha avanzado significativamente en este aspecto. Aunque la fiabilidad de etcd ha sido robusta gracias al protocolo de consenso Raft, lo mismo no podía decirse de los procesos de actualización y degradación, hasta ahora.
Históricamente, la degradación de etcd ha sido un proceso complejo y no soportado. No existía una forma segura de degradar los datos de etcd después de haber sido manipulados por una versión nueva. Las actualizaciones, aunque fiables, no eran fácilmente reversibles, lo que a menudo requería herramientas externas y copias de seguridad. Esta falta de flexibilidad representaba un desafío significativo para los usuarios que encontraban problemas después de actualizar.
etcd 3.6 introduce una solución revolucionaria: soporte de degradación incorporado. Esta innovación no solo simplifica los procesos de actualización y degradación, sino que también mejora significativamente la fiabilidad de etcd.
La nueva versión incluye mecanismos como el versionado de almacenamiento y la evolución de esquemas, que aseguran la capacidad de etcd para gestionar y manipular datos a través de diferentes versiones. Además, la herramienta de línea de comandos "etcdutl migrate" facilita significativamente el proceso de actualización y degradación a diferentes niveles, eliminando la necesidad de pasos manuales complejos.
La introducción del soporte de degradación en etcd 3.6 ofrece una serie de beneficios para los usuarios:
- Mejora de la fiabilidad: Las actualizaciones pueden revertirse de manera segura, reduciendo el riesgo de pérdida de datos o interrupciones operativas.
- Gestión simplificada: Los procesos de actualización y degradación se simplifican, reduciendo la complejidad de la gestión de los clústeres de etcd.
- Mayor flexibilidad: Los usuarios tienen una mayor flexibilidad para gestionar sus entornos de etcd, permitiéndoles experimentar con nuevas versiones y retroceder si es necesario.
Para lograr el soporte de degradación, etcd 3.6 implementa una política estricta de versionado de almacenamiento. Esto significa que los datos de etcd están versionados y etcd ya no podrá cargar datos generados por una versión superior a la suya, debiendo confiar en el proceso de degradación del clúster. Durante el proceso de degradación, se limpiarán los campos nuevos de la versión superior en los archivos DB. La versión del protocolo de etcd se reducirá para permitir la inclusión de versiones anteriores. Esto también significa que las entradas añadidas al archivo de registro WAL serán compatibles con versiones inferiores.
La herramienta "etcdutl migrate" se agrega para simplificar el proceso de actualización y degradación de datos de etcd en escenarios de actualizaciones/degradaciones menores de 2+ versiones, validando la compatibilidad del registro WAL con la versión objetivo y ejecutando los cambios necesarios en el esquema del archivo DB y actualizando la versión de almacenamiento.
El despliegue del soporte de degradación se ha planificado en tres hitos:
- Versiones de almacenamiento de instantáneas: Se implementa el versionado de almacenamiento para instantáneas.
- Anotaciones de versión: El código de etcd se anota con versiones y se crea un esquema para el archivo de datos.
- Soporte completo de degradación: Las degradaciones se pueden implementar completamente utilizando el versionado de almacenamiento y el esquema establecido.
Actualmente, estamos trabajando en finalizar el tercer hito.
etcd 3.6 marca un avance significativo en la fiabilidad y la manejabilidad de los clústeres de etcd. La introducción del soporte de degradación brinda a los usuarios una mayor flexibilidad y control sobre sus entornos de etcd. A medida que etcd continúe evolucionando, podemos esperar más mejoras en los procesos de actualización y degradación, consolidando aún más su posición como un componente crítico en los sistemas distribuidos modernos.
vía: Google Blog Open Source