MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Déploiement et maintenance de MongoDB avec Ansible

La technologie change de jour en jour et les applications modernes doivent procéder à de sérieux ajustements afin de répondre aux attentes de livraison rapide de leurs organisations. Malheureusement, cela les rend plus complexes, plus sophistiqués et plus difficiles à maintenir.

En termes de gestion de base de données, les structures de données à l'intérieur de MongoDB changent en fonction des besoins de l'application au fil du temps et cela peut être assez coûteux (ou plutôt risqué).

À long terme, nous devons disposer d'une base de données efficace configurée facilement et assurer une livraison de logiciels compétente. Réaliser tout cela de manière manuelle s'accompagne d'un certain nombre de revers tels que

  1. Coordination compliquée entre les membres de l'équipe
  2. Fortes chances de répétition des tâches
  3. Susceptible à beaucoup d'erreurs et d'erreurs humaines
  4. Pas facile de surmonter la complexité
  5. Réduction de la collaboration et de l'insatisfaction au travail
  6. Cela prend du temps
  7. Redevabilité et conformité médiocres

Les difficultés d'administration de la base de données sont principalement centrées sur

  • Déploiement
  • Maintenance
  • Mise à niveau pouvant affecter les frais généraux opérationnels jusqu'à 95 % de réduction.

Atteindre cela peut prendre beaucoup de temps et d'efforts manuels pour MongoDB. Pour assurer le succès, vous aurez besoin d'un système simple avec lequel vous pouvez vous assurer que tous les revers énumérés ci-dessus peuvent être résolus à partir d'une seule plate-forme en temps opportun, c'est-à-dire, en quelque sorte, un système automatisé. Il existe un certain nombre d'options, mais dans cet article, nous allons discuter de l'utilisation d'Ansible.

Qu'est-ce qu'Ansible

Ansible est simplement un langage universel qui dévoile le mystère de la façon dont le travail est effectué. En d'autres termes, il s'agit d'un moteur d'orchestration informatique qui automatise le déploiement des applications, la gestion de la configuration et orchestre des tâches informatiques plus avancées telles que la garantie de mises à jour continues sans interruption et de déploiements continus.

Les machines peuvent facilement être gérées sans agent en mettant davantage l'accent sur la sécurité et la fiabilité grâce à l'utilisation d'un langage conçu autour de la "vérification" par les humains.

Bien que le déploiement de MongoDB ne soit pas si difficile, la maintenance, la sauvegarde et la surveillance deviennent des facteurs de préoccupation accrus au fil du temps. De plus, ce n'est pas si facile lorsque vous débutez dans la gestion de bases de données. Avec Ansible, les développeurs peuvent facilement déployer et configurer des applications, cela permet également une livraison rapide sur n'importe quelle plate-forme d'hébergement.

Comme Ansible ne fait pas partie du système de cluster de base de données, il peut être installé sur n'importe quel ordinateur distant et une configuration effectuée sur votre hôte de base de données. Veuillez consulter le guide d'installation pour savoir quelle version convient à votre système d'exploitation.

Ansible, par défaut, se connecte à un hôte de base de données via un protocole SSH.

Livres de lecture Ansible

Les playbooks sont des modèles dans lesquels le code Ansible est écrit, ce qui explique à Ansible ce qu'il doit exécuter d'une manière similaire à une liste de tâches. Ils sont écrits au format YAML (Yet Another Markup Language). Chacun contient des opérations pas à pas qui sont suivies par l'utilisateur sur une machine particulière qui s'exécutent de manière séquentielle. Leur structure est constituée d'un ou plusieurs Jeux. Un jeu est essentiellement un bloc de code qui mappe un ensemble d'instructions définies sur un hôte particulier.

Balises YAML couramment utilisées dans Ansible

  1. nom

    Il s'agit de la balise qui définit le nom du playbook Ansible. Il est conseillé de définir un nom qui définit précisément ce qu'il va faire.

  2. hôtes

    Cela définit un groupe d'hôtes ou une liste d'hôtes sur lesquels les tâches définies doivent être exécutées. Il s'agit d'une balise obligatoire qui indique à Ansible sur quels hôtes exécuter les tâches répertoriées. Étant donné que les tâches peuvent être effectuées sur plusieurs machines, qu'elles soient identiques ou distantes, vous pouvez définir un groupe d'entrées d'hôtes dans cette balise.

  3. vars

    Comme tout autre langage de programmation, vous aurez besoin de variables. Avec cette balise, vous pouvez définir les variables que vous utiliserez dans votre playbook.

  4. tâches

    Cette balise va vous permettre de lister un ensemble de tâches à exécuter. Les tâches sont en fait des actions que l'on doit effectuer. Un champ de tâche définit le nom de la tâche qui aide essentiellement le texte pour l'utilisateur lors du débogage du playbook. Un morceau de code défini comme un module est lié en interne par chaque tâche et tous les arguments qui doivent être utilisés dans le module sont passés par la balise des tâches.

Une structure de playbook simple ressemble à ceci...

---
 name: install and configure DB
   hosts: testServer
   become: yes

   vars: 
      mongoDB_Port : 27017
   
   tasks:
   -name: Install the mongodb
      yum: <code to install the DB>
    
   -name: Ensure the installed service is enabled and running
   service:
      name: <your service name>

Écrire un manuel simple pour installer et démarrer MongoDB

  1. Activation de l'accès SSH racine

    Certaines configurations de nœuds gérés peuvent vous dissuader de vous connecter en tant qu'utilisateur root, vous devez donc définir un playbook pour résoudre ce problème. Nous allons créer un playbook enable-root-access.yml qui ressemblera à ceci

    ---
    - hosts: ansible-test
      remote_user: ubuntu
      tasks:
        - name: Enable root login
          shell: sudo cp ~/.ssh/authorized_keys /root/.ssh/

    Lorsque vous exécutez la commande

    $ ansible-playbook -i inventory.txt -c ssh enable-root-access.yaml 

    Vous devriez voir quelque chose comme

    PLAY [ansible-test] ***********************************************************
    GATHERING FACTS ***************************************************************
    TASK: [Enable root login] *****************************************************
    PLAY RECAP ********************************************************************
  2. Sélection des hôtes et des utilisateurs dans mongodbInstall.yaml

    ---
    - hosts: ansible-test
      remote_user: root
      become: yes
  3. Ajout de tâches à exécuter

    Les tâches sont exécutées de manière séquentielle, nous devons donc les décrire de manière séquentielle, c'est-à-dire

    1. apt_key pour ajouter des clés de référentiel. La clé GPG publique MongoDB doit être importée en premier
      - name: Import the public key used by the package management system
          apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
    2. Ajout de MongoDB apt_repository
      - name: Add MongoDB repository
        apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
    3. Installer les packages et démarrer mongod, puis recharger la base de données locale des packages
      - name: install mongodb
        apt: pkg=mongodb-org state=latest update_cache=yes
        notify:
        - start mongodb
    4. Gestion des services, utilisation du gestionnaire pour démarrer et redémarrer les services
      handlers:
        - name: start mongodb
          service: name=mongod state=started
Plusieursnines Devenez un administrateur de base de données MongoDB – Amener MongoDB en productionDécouvrez ce que vous devez savoir pour déployer, surveiller, gérer et faire évoluer MongoDBDélécharger gratuitement

Le code général du playbook devrait ressembler à ceci

---
- hosts: ansible-test
  remote_user: root
  become: yes
  tasks:
  - name: Import the public key used by the package management system
    apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
  - name: Add MongoDB repository
    apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
  - name: install mongodb
    apt: pkg=mongodb-org state=latest update_cache=yes
    notify:
    - start mongodb
  handlers:
    - name: start mongodb
      service: name=mongod state=started

Nous pouvons ensuite exécuter ce fichier avec ansible en utilisant la commande

ansible-playbook -i inventory.txt -c ssh mongodbInstall.yaml

Si le playbook a été exécuté avec succès, vous devriez le voir dans votre terminal

PLAY [ansible-test] ***********************************************************

GATHERING FACTS ***************************************************************
ok: [12.20.3.105]
ok: [12.20.3.106]

TASK: [Import the public key used by the package management system] ***********
changed: [12.20.3.105]
changed: [12.20.3.106]

TASK: [Add MongoDB repository] ************************************************
changed: [12.20.3.105]
changed: [12.20.3.106]

TASK: [install mongodb] *******************************************************
changed: [12.20.3.105]
changed: [12.20.3.106]

NOTIFIED: [start mongodb] *****************************************************
ok: [12.20.3.106]
ok: [12.20.3.105]

PLAY RECAP ********************************************************************
12.20.3.105                : ok=5    changed=3    unreachable=0    failed=0
12.20.3.106                : ok=5    changed=3    unreachable=0    failed=0

Si maintenant vous exécutez mongo, vous serez dirigé vers mongo shell

MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("07c88442-0352-4b23-8938-fdf6ac66f253") }
MongoDB server version: 4.0.3
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user

Conclusion

Ansible est un moteur informatique open source simple qui automatise le déploiement des applications, l'orchestration des services et la fourniture du cloud.

Il fonctionne en connectant des nœuds de base de données et en leur envoyant des instructions définies appelées modules, en les exécutant via SSH par défaut, puis en les supprimant une fois terminé. Il n'exécute aucun démon ou serveur et peut donc être exécuté à partir de n'importe quelle machine distante. Dans le prochain didacticiel, nous allons discuter de la façon de maintenir un ensemble de réplicas MongoDB dans le cloud à l'aide d'Ansible.