sql >> Base de Datos >  >> NoSQL >> MongoDB

Automatización de la implementación de la base de datos MongoDB

Las organizaciones utilizan la infraestructura en la nube porque ofrece velocidad, flexibilidad y escalabilidad. Puede imaginar si podemos activar una nueva instancia de base de datos con solo un clic, y toma un par de minutos hasta que esté lista, también podemos implementar la aplicación más rápido que en comparación con el entorno local.

A menos que esté utilizando el propio servicio en la nube de MongoDB, los principales proveedores de la nube no ofrecen un servicio administrado de MongoDB, por lo que no es realmente una operación de un solo clic para implementar una sola instancia o clúster. La forma común es hacer girar las máquinas virtuales y luego implementarlas en ellas. La implementación debe realizarse de la A a la Z:debemos preparar la instancia, instalar el software de la base de datos, ajustar algunas configuraciones y asegurar la instancia. Estas tareas son esenciales, aunque no siempre se cumplen correctamente, con consecuencias potencialmente desastrosas.

La automatización juega un papel importante para garantizar que todas las tareas comiencen desde la instalación, la configuración, el fortalecimiento y hasta que el servicio de la base de datos esté listo. En este blog, hablaremos sobre la automatización de la implementación para MongoDB.

Orquestador de software

Hay muchas herramientas de software nuevas para ayudar a los ingenieros a implementar y administrar su infraestructura. La gestión de la configuración ayuda a los ingenieros a realizar una implementación más rápida y eficaz, lo que reduce el tiempo de implementación de nuevos servicios. Las opciones populares incluyen Ansible, Saltstack, Chef y Puppet. Cada producto tiene ventajas y desventajas, pero todos funcionan muy bien y son muy populares. La implementación de un servicio con estado como MongoDB ReplicaSet o Sharded Cluster puede ser un poco más desafiante, ya que se trata de configuraciones de varios servidores y las herramientas no admiten la coordinación incremental y entre nodos. Los procedimientos de implementación generalmente requieren orquestación entre nodos, con tareas realizadas en un orden específico.

Tareas de implementación de MongoDB para automatizar

La implementación de un servidor MongoDB implica varias cosas; agregue el repositorio MongoDB en local, instale el paquete MongoDB, configure el puerto, el nombre de usuario e inicie el servicio.

Tarea:instalar MongoDB

- name: install mongoDB
  apt: 
    name: mongodb
    state: present
    update_cache: yes

Tarea:copiar mongod.conf del archivo de configuración.

- name: copy config file
  copy:
    src: mongodb.conf
    dest: /etc/mongodb.conf
    owner: root
    group: root
    mode: 0644
  notify:
    - restart mongodb

Tarea:crear configuración de límite de MongoDB:

- name: create /etc/security/limits.d/mongodb.conf
  copy:
    src: security-mongodb.conf
    dest: /etc/security/limits.d/mongodb.conf
    owner: root
    group: root
    mode: 0644
  notify:
    - restart mongodb

Tarea:configurar el intercambio

- name: config vm.swappiness
  sysctl:
    name: vm.swappiness
    value: '10'
    state: present

Tarea:configurar tiempo TCP Keepalive

- name: config net.ipv4.tcp_keepalive_time
  sysctl:
    name: net.ipv4.tcp_keepalive_time
    value: '120'
    state: present

Tarea:asegurarse de que MongoDB se inicie automáticamente

- name: Ensure mongodb is running and and start automatically on reboots
  systemd:
    name: mongodb
    enabled: yes
    state: started

Podemos combinar todas estas tareas en un solo libro de jugadas y ejecutar el libro de jugadas para automatizar la implementación. Si ejecutamos un playbook de Ansible desde la consola:

$ ansible-playbook -b mongoInstall.yml

Veremos el progreso de la implementación desde nuestro script de Ansible, el resultado debería ser similar al siguiente:

PLAY [ansible-mongo] **********************************************************

GATHERING FACTS ***************************************************************
ok: [10.10.10.11]

TASK: [install mongoDB] *******************************************************
ok: [10.10.10.11]

TASK: [copy config file] ******************************************************
ok: [10.10.10.11]

TASK: [create /etc/security/limits.d/mongodb.conf]*****************************
ok: [10.10.10.11]


TASK: [config vm.swappiness] **************************************************
ok: [10.10.10.11]

TASK: [config net.ipv4.tcp_keepalive_time]*************************************
ok: [10.10.10.11]

TASK: [config vm.swappiness] **********************************************
ok: [10.10.10.11]

PLAY RECAP ********************************************************************
[10.10.10.11]          : ok=6    changed=1    unreachable=0    failed=0

Después de la implementación, podemos verificar el servicio MongoDB en el servidor de destino.

Automatización de la implementación de MongoDB utilizando la GUI de ClusterControl

Hay dos formas de implementar MongoDB usando ClusterControl. Podemos usarlo desde el panel de control de ClusterControl, está basado en GUI y solo necesita 2 diálogos hasta que active un nuevo trabajo para una nueva implementación de MongoDB.

Primero necesitamos completar el usuario SSH y la contraseña, complete el nombre del clúster como se muestra a continuación:

Y luego, elija el proveedor y la versión de MongoDB, defina el usuario y contraseña, y el último es completar la dirección IP de destino

Automatización de la implementación de MongoDB usando s9s CLI

Desde la interfaz de línea de comandos, se pueden utilizar las herramientas s9s. La implementación de MongoDB usando s9s es solo un comando de una línea como se muestra a continuación:

$ s9s cluster --create --cluster-type=mongodb --nodes="10.10.10.15"  --vendor=percona --provider-version=4.2 --db-admin-passwd="12qwaszx" --os-user=vagrant --cluster-name="MongoDB" --wait
Create Mongo Cluster
/ Job 183 FINISHED   [██████████] 100% Job finished.


Por lo tanto, implementar MongoDB, ya sea un ReplicaSet o un Sharded Cluster, es muy fácil y ClusterControl lo automatiza completamente.