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

Automatización de MongoDB con SaltStack

La implementación de la base de datos para una cantidad múltiple de servidores se vuelve más compleja y requiere más tiempo cuando se agregan nuevos recursos o se realizan cambios. Además, existe la posibilidad de errores humanos que pueden conducir a resultados catastróficos siempre que el sistema se configure manualmente.

Una herramienta de automatización de implementación de bases de datos nos permitirá implementar una base de datos en varios servidores, desde entornos de desarrollo hasta entornos de producción. Los resultados de una implementación automatizada son confiables, más eficientes y predecibles, además de proporcionar la información del estado actual de sus nodos, que se puede usar para planificar los recursos que necesitará agregar a sus servidores. Con una implementación bien administrada, la productividad de los equipos operativos y de desarrollo mejora, lo que permite que la empresa se desarrolle más rápido, logre más y, debido a la implementación frecuente y fácil, la configuración general del software será finalmente mejor y funcionará de manera confiable para los usuarios finales.

MongoDB se puede implementar manualmente, pero la tarea se vuelve cada vez más engorrosa cuando tiene que configurar un clúster de muchos miembros alojados en diferentes servidores. Por lo tanto, debemos decidir utilizar una herramienta automotriz que pueda ahorrarnos el estrés. Algunas de las herramientas disponibles que se pueden usar incluyen Puppet, Chef, Ansible y SaltStack.

Los principales beneficios de implementar MongoDB con cualquiera de estas herramientas son:

  1. Ahorro de tiempo. Imagine tener 50 nodos para su base de datos y necesita actualizar la versión de MongoDB para cada uno. Esto le llevará años pasando por el proceso. Sin embargo, con una herramienta automática, solo necesitará escribir algunas instrucciones y emitir un comando para hacer el resto de la actualización por usted. Luego, los desarrolladores tendrán tiempo para trabajar en nuevas funciones en lugar de arreglar las implementaciones manuales.
  2. Reducción de errores, por lo tanto, satisfacción del cliente. Realizar nuevas actualizaciones puede introducir errores en un sistema de base de datos, especialmente si la configuración se debe realizar manualmente. Con una herramienta como SaltStack, la eliminación de los pasos manuales reduce el error humano y las actualizaciones frecuentes con nuevas funciones abordarán las necesidades de los clientes y, por lo tanto, mantendrán la competitividad de la organización.
  3. Menor costo de configuración. Con una herramienta de implementación, cualquiera puede implementar incluso usted mismo, ya que el proceso en sí será mucho más fácil. Esto eliminará la necesidad de que los expertos hagan el trabajo y reducirá los errores

Qué es SaltStack

SaltStack es una herramienta de ejecución remota de código abierto y un sistema de gestión de configuración desarrollado en Python.

Las funciones de ejecución remota se utilizan para ejecutar comandos en varias máquinas en paralelo con un sistema de orientación flexible. Si, por ejemplo, tiene 3 servidores y desea instalar MongoDB para cada uno, puede ejecutar los comandos de instalación en estos equipos simultáneamente desde un nodo maestro.

En términos de administración de la configuración, se establece una interfaz cliente-servidor para transformar de manera fácil y segura los componentes de la infraestructura al estado deseado.

Arquitectura SaltStack

El modelo de configuración básico para SaltStack es Cliente-Servidor, donde el servidor puede denominarse maestro y los Clientes esclavos. El maestro emite comandos o más bien instrucciones como el sistema de control que deben ejecutar los clientes/esbirros que son los sistemas controlados.

Componentes SaltSack

Lo siguiente es de lo que está hecho SaltStack

  1. Maestro :Responsable de dar instrucciones a los esclavos y cambiarlos al estado deseado después de la ejecución.
  2. Súbdito :Es el sistema controlado el que necesita ser transformado en algún estado deseado.
  3. Granos de sal : estos son datos estáticos o metadatos sobre el minion y constituyen información como el modelo, el número de serie, la capacidad de la memoria y el sistema operativo. Se recopilan cuando el minion se conecta por primera vez al servidor. Se pueden usar para apuntar a un determinado grupo de minions en relación con algún aspecto. Por ejemplo, puede ejecutar un comando que indique instalar MongoDB para todas las máquinas con un sistema operativo Windows.
  4. EMódulos/instrucciones de ejecución :estos son comandos ad hoc emitidos a uno o más minions objetivo y se ejecutan desde la línea de comandos.
  5. Pilares :son variables definidas por el usuario distribuidas entre los minions. Se utilizan para:configuración de minions, datos altamente confidenciales, datos arbitrarios y variables. No todos los minions son accesibles para todos los pilares, uno puede restringir qué pilares son para un determinado grupo de minions.
  6. Archivos de estado . Este es el núcleo de Salt state System (SLS) y representa el estado en el que debería estar el sistema. Es equivalente a un libro de jugadas en el caso de Ansible, considerando que también están en formato YAML, es decir,
#/srv/salt/mongodbInstall.sls (file root)

install_mongodb: (task id)

pkg.installed: (state declaration)

-name:mongodb  (name of package to install)
  1. Archivo superior :Se utiliza para mapear un grupo de máquinas y definir qué archivos de estado se deben aplicar. es decir,

#/srv/salt/top.sls

  base:

   ‘minion1’:

     -mongodb
  1. Salt Proxy :  Esta es una función que permite controlar dispositivos que no pueden ejecutar un salt-minion estándar. Incluyen equipos de red con una API que se ejecuta en un sistema operativo propietario, dispositivos con limitaciones de CPU y memoria o dispositivos que no pueden ejecutar minions por razones de seguridad. Se debe usar un proxy Junos para el descubrimiento, control, ejecución remota y administración de estado de estos dispositivos.

Instalación de SaltStack

Podemos usar el comando pip para instalar SaltStack como 

$ pip install salt

Para confirmar la instalación, ejecute el comando $ salt --version y debería obtener algo como salt 2019.2.2 (Fluorine)

Antes de conectarse al maestro, el subordinado requerirá una configuración mínima de la dirección IP maestra y la identificación del subordinado que utilizará el maestro como referencia. Estas configuraciones se pueden hacer en los archivos /etc/salt/minion.

Podemos ejecutar el maestro en varios modos, ya sea demonio o en modo de depuración. Para el caso del daemon, tendrá $salt-master -d y para el modo de depuración,  $salt-master -l debug. Deberá aceptar la clave del minion antes de iniciarlo ejecutando $ salt-key -a nameOfMinion. Para listar las claves disponibles, ejecute $ salt-key -l

En el caso del minion, podemos iniciarlo con $salt-minion -l debug.

Por ejemplo, si queremos crear un archivo en todos los minions del maestro, podemos ejecutar el comando 

$ salt ‘’*” file.touch ‘/tmp/salt_files/sample.text

Todos los nodos tendrán un nuevo archivo sample.text en la carpeta salt_files. La opción * se usa para referirse a todos los minions. Para especificar, por ejemplo, todos los minions con nombre de identificación que tienen la cadena minion, usaremos una expresión regular como se muestra a continuación 

$ salt “minion*” file.touch ‘/tmp/salt_files/sample.text

Para ver los metadatos recopilados para un minion determinado, ejecute:

$salt ‘minion1’ grains.items.

Configurando MongoDB con SaltStack

Podemos crear una base de datos llamada myAppdata con setDatabase.sls con el contenido a continuación 

classes:

- service.mongodb.server.cluster

parameters:

   _param:

     mongodb_server_replica_set: myAppdata

     mongodb_myAppdata_password: myAppdataPasword

     mongodb_admin_password: cloudlab

     mongodb_shared_key: xxx

   mongodb:

     server:

       database:

         myAppdata:

           enabled: true

           password: ${_param:mongodb_myAppdata_password}

           users:

           -  name: myAppdata

              password: ${_param:mongodb_myAppdata_password}

Inicio de un único servidor MongoDB 

mongodb:

  server:

    enabled: true

    bind:

      address: 0.0.0.0

      port: 27017

    admin:

      username: admin

      password: myAppdataPasword

    database:

      myAppdata:

        enabled: true

        encoding: 'utf8'

        users:

        - name: 'username'

          password: 'password'

Configuración de un clúster de MongoDB con SaltStack

mongodb:

  server:

    enabled: true

    logging:

      verbose: false

      logLevel: 1

      oplogLevel: 0

    admin:

      user: admin

      password: myAppdataPasword

    master: mongo01

    members:

      - host: 192.168.100.11

        priority: 2

      - host: 192.168.101.12

      - host: 192.168.48.13

    replica_set: default

    shared_key: myAppdataPasword

Conclusión

Al igual que ClusterControl, SaltStack es una herramienta de automatización que se puede utilizar para facilitar las tareas de implementación y operaciones. Con una herramienta de automatización, hay menos errores, menos tiempo de configuración y resultados más confiables.