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

Una guía para la implementación y el mantenimiento de MongoDB mediante Puppet:Parte 1

La agrupación de bases de datos a menudo implica configurar y mantener una cantidad de servidores e instancias, todos con un propósito colectivo. Con esto queremos decir que puede tener diferentes servidores de bases de datos en diferentes hosts que sirven los mismos datos.

Por ejemplo, supongamos que tiene los servidores A, B, C y D, decide instalar MongoDB en cada uno, pero luego se da cuenta de que hay una nueva versión que debería haber usado. Cuando tienes una gran cantidad de servidores y necesitas actualizar la versión de MongoDB, configurarlos manualmente (uno por uno) tiene muchos contratiempos. Estos contratiempos pueden incluir; tomar demasiado tiempo para reconfigurar (por lo tanto, su sitio tendrá un tiempo de inactividad prolongado) o hacer que su base de datos sea propensa a algunos errores de configuración.

Además, siempre hay tareas repetitivas que le gustaría ejecutar automáticamente, en lugar de seguir los mismos pasos una y otra vez, cada vez que quiera hacer cambios similares. En algún momento, también necesitamos aprender nuevos módulos en lo que respecta al avance tecnológico que puede ayudarnos a mejorar el rendimiento del clúster.

En términos simples, necesitamos un sistema de automatización que pueda facilitar todas las tareas mencionadas. Puppet es uno de los sistemas de software preferidos para lograr esto desde:

  • Es fácil y rápido configurar e implementar el clúster de MongoDB.
  • Las tareas repetitivas se pueden automatizar fácilmente para que se ejecuten automáticamente más tarde.
  • Toda la infraestructura del clúster se puede gestionar de forma colectiva desde una única plataforma.
  • Fácil aprovisionamiento para nuevos nodos en entornos de nube, híbridos o físicos.
  • Organizar cambios y eventos en un grupo de nodos.
  • Descubra recursos en minutos que pueden ayudarlo a realizar diferentes tareas fácilmente.
  • Escala bien de 1 a 200 000 nodos.
  • Con el apoyo de varias plataformas

¿Qué es una marioneta?

Puppet es un lenguaje que se usa para llevar una máquina a un estado deseado o, más bien, es un motor que se usa para interpretar y aplicar algunas instrucciones definidas a un sistema de servicio. Al igual que Ansible, Puppet también es una herramienta de administración de configuración que se utiliza para automatizar y ejecutar tareas de clústeres de bases de datos. Sin embargo, es más avanzado y está bien establecido teniendo en cuenta que es el más antiguo, por lo tanto, tiene muchas funciones recientemente integradas que lo harían más sofisticado que los demás. Una de las principales razones por las que personalmente prefiero Puppet es la capacidad que me brinda para configurar una gran cantidad de nodos conectados entre sí con balanceadores de carga, dispositivos de red o firewalls. Puppet se usa a menudo en grandes empresas con entornos complejos.

Cómo funciona la marioneta

Puppet utiliza la técnica de idempotencia que lo ayuda a administrar una determinada máquina desde el momento de la creación y durante todo su ciclo de vida, incluso con cambios de configuración. La principal ventaja de esto es que la máquina se actualiza durante varios años en lugar de construirse varias veces desde cero. En caso de una actualización, Puppet verifica el estado actual de la máquina de destino y los cambios se aplicarán solo cuando haya un cambio específico en la configuración.

Impotencia

El flujo de trabajo de idempotencia se muestra a continuación:

Puppet master recopila detalles sobre el estado actual de la máquina de destino y los compara con los detalles de configuración a nivel de máquina y luego devuelve los detalles que se envían a la capa de conversión.

La capa de conversión compara la configuración recuperada con los detalles de configuración recién definidos y luego crea un catálogo que se envía a los agentes de Puppet de destino, en este caso, los nodos de destino para los que se aplicarán los cambios.

Luego, los cambios de configuración se aplican al sistema para transformarlo al estado deseado. Una vez implementados los cambios, el agente de Puppet envía un informe al maestro de Puppet que se documenta para definir el nuevo estado del sistema como el catálogo suministrado.

Componentes básicos de marionetas

  1. Recursos de marionetas

    Estos son los componentes de modelado clave de una máquina en particular cuyas descripciones llevarán la máquina al estado deseado.

  2. Proveedores

    Los proveedores son recursos particulares que se utilizan para agregar paquetes al sistema, p. mmm y apt-get. Hay proveedores predeterminados, pero se pueden agregar más cuando se necesitan algunos paquetes.

  3. Manifiesto

    Esta es una colección de recursos que se definen en una función o una clase acoplados para configurar un sistema de destino.

    La estructura debe ser

    resource:{‘module’:
    	attribute => value
    }

    Por ejemplo, al instalar mongodb, podemos tener un archivo de manifiesto llamado Mongodb.pp con los siguientes contenidos:

    package {‘mongodb’:
    		ensure => installed
         }
  4. Módulos

    Este es el bloque de construcción clave de Puppet, que es básicamente una colección de recursos, plantillas y archivos. Se pueden distribuir en cualquier sistema operativo, por lo que se pueden usar varias veces con la misma configuración.

  5. Plantillas

    Las plantillas se utilizan para definir contenido personalizado y entradas variables. Usan la sintaxis de Ruby, es decir, si desea definir un puerto para escuchar:

    Listen <% [email protected]_number %>

    La variable Port_number en este caso se define en el manifiesto que hace referencia a esta plantilla.

  6. Archivos estáticos

    Estos son archivos generales que pueden ser necesarios para realizar tareas específicas. Se encuentran en el directorio de archivos de cualquier módulo.

Instalación de marionetas

Con el propósito de aprender, instalaremos y configuraremos una marioneta en una máquina virtual que crearemos en nuestra máquina local. En primer lugar, deberá instalar VirtualBox y Vagrant. Después de la instalación, abra una nueva terminal y cree un directorio Puppet probablemente en su escritorio y ejecute el comando $ vagrant init. Esto creará una máquina virtual y la etiquetará como vagabunda. Luego podemos iniciar sesión en esta máquina con el comando $ vagrant ssh.

Si obtiene una pantalla como la siguiente, entonces su máquina está funcionando.

De lo contrario, si está en una máquina servidor, puede ignorar este paso y continuar agregando el paquete de marionetas como se muestra a continuación.

Agregue el paquete de marionetas con el comando

$ wget https://apt.puppetlabs.com/puppet5-release-xenial.deb

Y luego descomprima el paquete e instálelo con

$ sudo dpkg -i puppet5-release-xenial.deb

Necesitamos actualizar nuestros repositorios para ejecutar

$ sudo apt-get update

Instale el agente de marionetas ejecutando

$ sudo apt-get install puppet-agent

Una vez completada la instalación, podemos confirmar comprobando la versión. Es posible que deba cerrar la sesión de su máquina virtual para que la ruta de Puppet se agregue al entorno y luego ejecute $ puppet --version o, si no ha cerrado la sesión, ejecute $ /opt/puppetlabs/bin/puppet --version. Si obtiene un número de versión como 5.5.14, la instalación fue exitosa.

Después de instalar MongoDB utilizando Mongodb.pp que creamos anteriormente, podemos simplemente escribir alguna tarea para configurar productos de base de datos y también agregar un usuario a esta base de datos.

'Mongodb_database' se usa para crear y administrar bases de datos dentro de MongoDB

mongodb_database{‘products’:
	ensure => present,
            tries => 10
}

'Mongodb_user se puede usar para crear y administrar usuarios dentro de una base de datos MongoDB.'

Para agregar un usuario a la base de datos de 'productos'

mongodb_user {userprod:
  username => ‘prodUser’,
  ensure => present,
  password_hash => mongodb_password(‘prodUser’, ‘passProdser’),
  database => prodUser,
  roles => [‘readWrite’, ‘dbAdmin’],
  tries  => 10
}

Conclusión

En este blog hemos aprendido qué es Puppet, los méritos asociados con él y su arquitectura de trabajo. Puppet es un poco más complejo que las otras herramientas de administración (como Chef y Ansible), pero tiene muchos módulos que se pueden usar para resolver problemas relacionados con la administración de bases de datos. En la siguiente parte, discutiremos cómo conectar máquinas remotas para que puedan reconfigurarse usando los archivos de manifiesto definidos.