Ejecutar un MySQL Galera Cluster (ya sea la compilación Percona, MariaDB o Codership) es, lamentablemente, no compatible (ni parte de) las bases de datos compatibles con Amazon RDS. La mayoría de las bases de datos compatibles con RDS utilizan la replicación asíncrona, mientras que Galera Cluster es una solución de replicación síncrona multimaestro. Galera también requiere InnoDB como su motor de almacenamiento para funcionar correctamente, y aunque puede usar otros motores de almacenamiento como MyISAM, no se recomienda que use este motor de almacenamiento debido a la falta de manejo de transacciones.
Debido a la falta de soporte nativo en RDS, este blog se centrará en las ofertas disponibles al elegir y alojar su clúster basado en Galera mediante un entorno de AWS.
Ciertamente hay muchas razones por las que elegiría o no la plataforma en la nube de AWS, pero para este tema en particular vamos a repasar las ventajas y los beneficios de lo que puede aprovechar en lugar de por qué elegiría la plataforma de AWS.
Los servidores virtuales (instancias de computación elástica)
Como se mencionó anteriormente, MySQL Galera no es parte de RDS e InnoDB es un motor de almacenamiento transaccional para el cual necesita los recursos adecuados para los requisitos de su aplicación. Debe tener la capacidad de atender la demanda del tráfico de solicitudes de sus clientes. En el momento de este artículo, su única opción para ejecutar Galera Cluster es usar EC2, la oferta de nube de instancias informáticas de Amazon.
Debido a que tiene la ventaja de ejecutar su sistema en una cantidad de nodos en instancias EC2, ejecutar Galera Cluster en EC2 frente a local no difiere mucho. Puede acceder al servidor de forma remota a través de SSH, instalar los paquetes de software que desee y elegir el tipo de compilación de Galera Cluster que desea utilizar.
Además, con EC2 esta oferta es más elástica y flexible, lo que le permite entregar y ofrecer una configuración granular más simple. Puede aprovechar los servicios web para automatizar o crear una serie de nodos si necesita escalar horizontalmente su entorno o, por ejemplo, automatizar la creación de su entorno de ensayo o desarrollo. También le brinda una ventaja para crear rápidamente el entorno deseado, elegir y configurar el sistema operativo deseado y elegir los recursos informáticos adecuados que se ajusten a sus requisitos (como CPU, memoria y almacenamiento en disco). EC2 elimina el tiempo de espera por el hardware. , ya que puedes hacer esto sobre la marcha. También puede aprovechar su herramienta AWS CLI para automatizar la configuración de su clúster de Galera.
Precio de las instancias de Amazon EC2
EC2 ofrece una serie de selecciones que son muy flexibles para los consumidores que deseen alojar su entorno Galera Cluster en nodos informáticos de AWS. La capa gratuita de AWS incluye 750 horas de instancias t2.micro de Linux y Windows, cada mes, durante un año. Puede permanecer dentro de la capa gratuita utilizando solo instancias EC2 Micro, pero esto podría no ser lo mejor para el uso de producción.
Hay varios tipos de instancias EC2 para las que puede implementar al aprovisionar sus nodos de Galera. Idealmente, estas familias r4/r5/x1 (memoria optimizada) y c4/c5 (optimización informática) son una opción ideal, y estos precios varían según el tamaño de las necesidades de recursos del servidor y el tipo de sistema operativo.
Estos son los tipos de instancias pagas que puede elegir...
A pedido
Pague por capacidad informática (por hora o por segundo), depende del tipo de instancias que ejecute. Por ejemplo, los precios pueden diferir al aprovisionar una instancia de Ubuntu frente a una instancia de RHEL, además del tipo de instancia. No tiene compromisos a largo plazo ni pagos por adelantado necesarios. También tiene la flexibilidad de aumentar o disminuir su capacidad de cómputo. Estas instancias se recomiendan para necesidades de entornos flexibles y de bajo costo, como aplicaciones con cargas de trabajo a corto plazo, con picos o impredecibles que no se pueden interrumpir, o aplicaciones que se desarrollan o prueban en Amazon EC2 por primera vez. Compruébalo aquí para obtener más información.
Hosts dedicados
Si está buscando requisitos normativos y de cumplimiento, como la necesidad de adquirir un servidor dedicado que se ejecute en un hardware dedicado para su uso, este tipo de oferta se adapta a sus necesidades. Los hosts dedicados pueden ayudarlo a abordar los requisitos de cumplimiento y reducir los costos al permitirle usar su licencia de software vinculada al servidor existente, incluidos Windows Server, SQL Server, SUSE Linux Enterprise Server, Red Hat Enterprise Linux u otras licencias de software vinculadas a las máquinas virtuales. , sockets o núcleos físicos, sujeto a los términos de su licencia. Se puede comprar On-Demand (por hora) o como Reserva con hasta un 70 % de descuento sobre el precio On-Demand. Compruébalo aquí para obtener más información.
Instancias puntuales
Estas instancias le permiten solicitar capacidad informática adicional de Amazon EC2 con hasta un 90 % de descuento sobre el precio bajo demanda. Esto se recomienda para aplicaciones que tienen tiempos de inicio y finalización flexibles, aplicaciones que solo son factibles a precios de cómputo muy bajos o usuarios con necesidades informáticas urgentes para grandes cantidades de capacidad adicional. Compruébalo aquí para obtener más información.
Instancias reservadas
Este tipo de oferta de pago le brinda la opción de obtener hasta un 75 % de descuento y, según la instancia que desee reservar, puede adquirir una reserva de capacidad que le otorga una mayor confianza en su capacidad. para lanzar instancias cuando las necesite. Esto se recomienda si sus aplicaciones tienen un uso constante o predecible, aplicaciones que pueden requerir capacidad reservada o clientes que pueden comprometerse a usar EC2 durante un período de 1 o 3 años para reducir sus costos informáticos totales. Compruébalo aquí para obtener más información.
Nota de precios
Una última cosa con EC2, también ofrecen una facturación por segundo que también elimina el costo de los minutos y segundos no utilizados en una hora de la factura. Esto es ventajoso si está escalando horizontalmente por una cantidad mínima de tiempo, solo para manejar la solicitud de tráfico de un nodo de Galera o en caso de que quiera probar y probar en un nodo específico solo por un tiempo limitado.
Cifrado de base de datos en AWS
Si le preocupa la confidencialidad de sus datos o cumplir con las leyes requeridas para el cumplimiento y las normas de seguridad, AWS ofrece cifrado de datos en reposo. Si está utilizando MariaDB Cluster versión 10.2+, tienen soporte de complemento incorporado para interactuar con la API del Servicio de administración de claves (KMS) de Amazon Web Services (AWS). Esto le permite aprovechar el servicio de administración de claves de AWS-KMS para facilitar la separación de responsabilidades y el registro y la auditoría remotos de las solicitudes de acceso a claves. En lugar de almacenar la clave de cifrado en un archivo local, este complemento mantiene la clave maestra en AWS KMS.
Cuando inicie MariaDB por primera vez, el complemento de AWS KMS se conectará a AWS Key Management Service y le pedirá que genere una nueva clave. MariaDB almacenará esa clave en el disco de forma cifrada. La clave almacenada en el disco no se puede utilizar para descifrar los datos; más bien, en cada inicio, MariaDB se conecta a AWS KMS y hace que el servicio descifre las claves almacenadas localmente. La clave descifrada se almacena en la memoria mientras se ejecuta el proceso del servidor MariaDB, y esa clave descifrada en la memoria se usa para cifrar los datos locales.
Alternativamente, al implementar sus instancias EC2, puede cifrar su volumen de almacenamiento de datos con EBS (Elastic Block Storage) o cifrar la propia instancia. Se admite el cifrado para volúmenes de tipo EBS, aunque podría tener un impacto, pero la latencia es mínima o incluso no es visible para los usuarios finales. Para el cifrado de tipo de instancia EC2, se admiten la mayoría de las instancias grandes. Entonces, si está utilizando nodos optimizados para cómputo o memoria, puede aprovechar su cifrado.
A continuación se muestra la lista de tipos de instancias compatibles...
- Propósito general:A1, M3, M4, M5, M5a, M5ad, M5d, T2, T3 y T3a
- Optimización informática:C3, C4, C5, C5d y C5n
- Memoria optimizada:cr1.8xlarge, R3, R4, R5, R5a, R5ad, R5d, u-6tb1.metal, u-9tb1.metal, u-12tb1.metal, X1, X1e y z1d
- Almacenamiento optimizado:D2, h1.2xlarge, h1.4xlarge, I2 e I3
- Informática acelerada:F1, G2, G3, P2 y P3
Puede configurar su cuenta de AWS para habilitar siempre el cifrado al implementar sus instancias de tipo EC2. Esto significa que AWS cifrará los nuevos volúmenes de EBS en el momento del lanzamiento y cifrará nuevas copias de instantáneas sin cifrar.
Implementaciones de múltiples AZ/múltiples regiones/múltiples nubes
Desafortunadamente, al momento de escribir este artículo, no existe tal soporte directo en la Consola de AWS (ni en ninguna de sus API de AWS) que admita implementaciones Multi-AZ/-Region/-Cloud para clústeres de nodos de Galera.
Alta disponibilidad, escalabilidad y redundancia
Para lograr una implementación multi-AZ, es recomendable que aprovisione sus nodos de galera en diferentes zonas de disponibilidad. Esto evita que el clúster deje de funcionar o funcione mal debido a la falta de quórum.
También puede configurar AWS Auto Scaling y crear un grupo de auto scaling para monitorear y realizar verificaciones de estado para que su clúster siempre tenga redundancia, escalabilidad y alta disponibilidad. Auto Scaling debería resolver su problema en el caso de que su nodo se caiga por algún motivo desconocido.
Para la implementación de múltiples regiones o múltiples nubes, Galera tiene su propio parámetro llamado gmcast.segment para el cual puede configurarlo al iniciar el servidor. Este parámetro está diseñado para optimizar la comunicación entre los nodos de Galera y minimizar la cantidad de tráfico enviado entre los segmentos de la red, incluida la retransmisión de conjuntos de escritura y la selección de donantes de IST y SST.
Este tipo de configuración le permite implementar múltiples nodos en diferentes regiones para su Galera Cluster. Aparte de eso, también puede implementar sus nodos de Galera en un proveedor diferente, por ejemplo, si está alojado en Google Cloud y desea redundancia en Microsoft Azure.
Le recomendaría que consulte nuestro blog Configuraciones de centros de datos múltiples usando Galera Cluster para MySQL o MariaDB y migración de red sin tiempo de inactividad con MySQL Galera Cluster usando Relay Node para recopilar más información sobre cómo implementar estos tipos de implementaciones.
Rendimiento de la base de datos en AWS
Dependiendo de la demanda de su aplicación, si sus consultas consumen memoria, las instancias optimizadas para memoria son su opción ideal. Si su aplicación tiene transacciones más altas que requieren un alto rendimiento para servidores web o procesamiento por lotes, elija instancias optimizadas para computación. Si desea obtener más información sobre cómo optimizar su Galera Cluster, puede consultar este blog Cómo mejorar el rendimiento de Galera Cluster para MySQL o MariaDB.
Copias de seguridad de bases de datos en AWS
La creación de copias de seguridad puede ser difícil, ya que no hay soporte directo dentro de AWS que sea específico para la tecnología MySQL Galera. Sin embargo, AWS le proporciona una solución de recuperación y desastres mediante instantáneas de EBS. Puede tomar instantáneas de los volúmenes de EBS adjuntos a su instancia y luego realizar una copia de seguridad programada con CloudWatch o con Amazon Data Lifecycle Manager (Amazon DLM) para automatizar las instantáneas.
Tenga en cuenta que las instantáneas tomadas son copias de seguridad incrementales, lo que significa que solo se guardan los bloques en el dispositivo que han cambiado después de su instantánea más reciente. Puede almacenar estas instantáneas en AWS S3 para ahorrar costos de almacenamiento. Como alternativa, puede usar herramientas externas como Percona Xtrabackup y Mydumper (para copias de seguridad lógicas) y almacenarlas en AWS EFS -> AWS S3 -> AWS Glacier.
También puede configurar Lifecycle Management en AWS si necesita que sus datos de respaldo se almacenen de una manera más rentable. Si tiene archivos grandes y va a utilizar AWS EFS, puede aprovechar su solución AWS Backup, ya que también es una solución simple pero rentable.
Por otro lado, también puede usar servicios externos (así como ClusterControl) que le brindan soluciones de monitoreo y respaldo. Mira esto si quieres saber más.
Monitoreo de base de datos en AWS
AWS ofrece comprobaciones de estado y algunas comprobaciones de estado para proporcionarle visibilidad de sus nodos de Galera. Esto se hace a través de CloudWatch y CloudTrail.
CloudTrail le permite habilitar e inspeccionar los registros y realizar auditorías en función de las acciones y los seguimientos realizados.
CloudWatch le permite recopilar y rastrear métricas, recopilar y monitorear archivos de registro y configurar alarmas personalizadas. Puede configurarlo de acuerdo con sus necesidades personalizadas y obtener visibilidad de todo el sistema sobre la utilización de recursos, el rendimiento de la aplicación y el estado operativo. CloudWatch viene con un nivel gratuito siempre que se encuentre dentro de sus límites (vea la captura de pantalla a continuación).
CloudWatch también tiene un precio que depende del volumen de métricas que se distribuyen. Echa un vistazo a su precio actual marcando aquí.
Tome nota:hay una desventaja en el uso de CloudWatch. No está diseñado para atender el estado de la base de datos, especialmente para monitorear los nodos del clúster de MySQL Galera. Como alternativa, puede usar herramientas externas que ofrecen gráficos o cuadros de alta resolución que son útiles para generar informes y son más fáciles de analizar cuando se diagnostica un nodo problemático.
Para esto, puede usar PMM de Percona, DataDog, Idera, VividCortex o nuestro propio ClusterControl (ya que el monitoreo es GRATIS con ClusterControl Community). Le recomendaría que use una herramienta de monitoreo que se adapte a su necesidades basadas en los requisitos de su aplicación individual. Es muy importante que su herramienta de monitoreo pueda enviarle notificaciones agresivas o brindarle integración para sistemas de mensajería instantánea como Slack, PagerDuty o incluso enviarle SMS cuando su estado de salud es grave.
Seguridad de la base de datos en AWS
La protección de sus instancias EC2 es una de las partes más vitales de la implementación de su base de datos en la nube pública. Puede configurar una subred privada y configurar los grupos de seguridad necesarios solo para permitir el puerto o la IP de origen según su configuración. Puede configurar los nodos de su base de datos con un acceso no remoto y simplemente configurar un host de salto o una puerta de enlace de Internet, si los nodos requieren acceso a Internet para acceder o actualizar paquetes de software. Puede leer nuestro blog anterior Implementación de la replicación segura de MySQL en varias nubes en AWS y GCP con VPN sobre cómo configuramos esto.
Además de esto, puede proteger sus datos en tránsito utilizando una conexión TLS/SSL o encriptar sus datos cuando están en reposo. Si está utilizando ClusterControl, implementar un tránsito seguro de datos es simple y fácil. Puede consultar nuestro blog Gestión de claves SSL y cifrado de datos MySQL en tránsito si desea probarlo. Para los datos en reposo, el almacenamiento de sus datos a través de S3 se puede cifrar mediante el cifrado del lado del servidor de AWS o utilizar AWS-KMS, que he mencionado anteriormente. Consulte este blog externo sobre cómo configurar y aprovechar un clúster de MariaDB mediante AWS-KMS para que pueda almacenar sus datos de forma segura en reposo.
Solución de problemas del clúster de Galera en AWS
AWS CloudWatch puede ayudar especialmente al investigar y verificar las métricas del sistema. Puede verificar la red, la CPU, la memoria, el disco y su instancia o el uso y el saldo de cómputo. Sin embargo, es posible que esto no cumpla con sus requisitos al investigar un caso específico.
CloudTrail puede realizar seguimientos sólidos de acciones que se han controlado en función de su cuenta de AWS específica. Esto lo ayudará a determinar si las ocurrencias no provienen de MySQL Galera, pero pueden ser errores o problemas dentro del entorno de AWS (como que Hyper-V tiene problemas dentro de la máquina host donde su instancia, como invitado, está siendo alojado.)
Si está utilizando ClusterControl, vaya a Registros -> Registros del sistema y podrá examinar los registros de errores capturados tomados del propio nodo MySQL Galera. Además de esto, ClusterControl proporciona monitoreo en tiempo real que amplificaría su sistema de alarma y notificación en caso de una emergencia o si su(s) nodo(s) MySQL Galera están dañados.
Conclusión
AWS no tiene soporte puro para una configuración de MySQL Galera Cluster, a diferencia de AWS RDS que tiene compatibilidad con MySQL. Debido a esto, la mayoría de las recomendaciones u opiniones que ejecutan un Galera Cluster para uso de producción dentro del entorno de AWS se basan en entornos experimentados y bien probados que se han estado ejecutando durante mucho tiempo.
MariaDB Cluster viene con una gran productividad, ya que constantemente brinda soporte conciso para la solución de pila de tecnología de AWS. En el próximo lanzamiento de la versión 10.5 de MariaDB, ofrecerán compatibilidad con el motor de almacenamiento S3, por lo que la espera puede valer la pena.
Las herramientas externas pueden ayudarlo a administrar y controlar su MySQL Galera Cluster que se ejecuta en la nube de AWS, por lo que no es una gran preocupación si tiene algunos dilemas y FUD sobre por qué debe ejecutar o cambiar a la nube de AWS Plataforma.
AWS puede no ser la solución única para todos en algunos casos, pero ofrece una amplia gama de soluciones que puede personalizar y adaptar para satisfacer sus necesidades.
En la siguiente parte de nuestro blog, veremos otra plataforma de nube pública, particularmente Google Cloud, y veremos cómo podemos aprovechar si elegimos ejecutar nuestro Galera Cluster en su plataforma.