cmndrsp0ck.galera-cluster

galera-cluster

Propósito

Este repositorio te ayudará a desplegar y configurar 2 nodos de HAProxy con reasignación de IP flotantes y un clúster de MariaDB Galera. La provisión será manejada por Terraform y la configuración se realizará con Ansible.

Requisitos previos

  • Necesitarás instalar Terraform, que se utilizará para manejar la provisión de Droplets.
  • Para aplicar cambios de configuración a los Droplets recién provisionados, necesitas instalar Ansible.
  • El inventario de Ansible será manejado por Terraform, así que necesitarás terraform-inventory.
  • Vamos a necesitar una clave API de DigitalOcean. Los pasos para generar una clave API de DigitalOcean se pueden encontrar aquí.
  • Usa el script incluido gen_auth_key para generar una clave de autenticación para tu clúster de balanceo de carga.

Configuración

Terraform

terraform.tfvars

Se ha proporcionado un archivo de ejemplo terraform.tfvars.sample, solo recuerda eliminar el .sample. Una vez que tengas todas las variables configuradas, Terraform debería poder autenticarse y desplegar tus Droplets.

  • do_token - Clave API de DigitalOcean con privilegios de lectura/escritura.
  • project - Algo que te permita distinguir fácilmente diferentes grupos de infraestructura entre sí.
  • region - Slug de la ubicación del centro de datos.
  • image_slug - se usa por defecto debian-9-x64, ya que se escribió para usarse con roles específicos de Ansible.
  • keys - IDs de tus claves SSH de DigitalOcean. Se pueden recuperar usando la API.
  • private_key_path - Ruta de tu archivo de clave privada. Normalmente está en /home//.ssh/id_rsa.
  • ssh_fingerprint - Huella digital MD5 de tu clave SSH.
  • public_key - El contenido de tu clave pública SSH.
  • ansible_user - Nombre de usuario que deseas usar más tarde al configurar los Droplets con Ansible.

Ansible

Instala los roles de Ansible utilizando el archivo requirements.yml.

$ ansible-galaxy install -r requirements.yml

Los roles de Ansible requieren que se establezcan algunas variables con datos sensibles en group_vars/. Consulta los archivos README.md respectivos para obtener información sobre qué variables establecer.

¡Nota rápida! Estarás encriptando los archivos usando ansible vault. En lugar de tener que escribir tu contraseña del vault cada vez que ejecutes tu playbook, te recomiendo que configures tu contraseña en un archivo fuera de tu repositorio.

$ echo 'password' > ~/.vaultpass.txt

Y asegúrate de descomentar vault_password_file = ~/.vaultpass.txt en tu archivo ansible.cfg.

Bien, ahora todo debería estar configurado y estás listo para comenzar a provisionar y configurar tus Droplets.

Despliegue

Terraform

Comenzaremos utilizando Terraform. Asegúrate de regresar al directorio raíz del repositorio. Necesitarás ejecutar terraform init para descargar los complementos de Terraform como los proveedores de DigitalOcean y template. Una vez que todo esté configurado, puedes ejecutar un chequeo rápido y crear un plan de ejecución ejecutando terraform plan.

Usa terraform apply para crear los Droplets y la IP flotante. Esto debería tomar alrededor de uno o dos minutos dependiendo de cuántos nodos estés creando.

Ansible

Una vez que Terraform termine, puedes verificar la conectividad de la red usando ansible all -i /usr/local/bin/terraform-inventory -m ping. Eso debería devolver pong para todos los nodos.

Estamos listos para comenzar a configurar los Droplets. Ejecuta el playbook de Ansible desde la raíz del repositorio para configurar tus Droplets ejecutando lo siguiente:

ansible-playbook -i /usr/local/bin/terraform-inventory site.yml

Este playbook instalará y configurará heartbeat, tu servicio de reasignación de IP flotante, instalará y configurará balanceadores de carga HAProxy, y tu clúster de MariaDB Galera. Deberías ver una salida constante que indicará el rol y paso en el que Ansible está ejecutándose actualmente. Si hay algún error, puedes rastrearlo fácilmente hasta el rol y tarea correctos.

Licencia

GPL-3.0

Información del autor

cmndrsp0ck

Acerca del proyecto

Configures a MariaDB Galera Cluster

Instalar
ansible-galaxy install cmndrsp0ck.galera-cluster
Licencia
gpl-3.0
Descargas
135
Propietario