MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment configurer la réplication de MariaDB 10.3 avec Ansible et Vagrant

Les déploiements manuels sont courants, mais ils peuvent être lents et monotones. Si vous avez déjà essayé l'installation d'Oracle RAC avec la configuration de Data Guard sur plus de trois nœuds, vous savez ce que je veux dire. Selon le nombre de nœuds, les étapes de déploiement peuvent prendre du temps et entraîner des erreurs. Bien sûr, il existe de nombreux "comment faire" sur la façon de configurer manuellement un cluster de base de données, cependant, avec l'approche manuelle à grande échelle, il y a de nombreuses questions supplémentaires à résoudre.

Les autres instances de mon environnement sont-elles configurées de la même manière ? Ce système d'assurance qualité a-t-il été mis en place de la même manière que la production ? Ce que nous venons de déployer est-il prêt pour la production ? Pour répondre à toutes ces questions, les déploiements sont de plus en plus automatisés via des outils de gestion de configuration.

Ressources associées Automatisation de la base de données avec Puppet :déploiement de la réplication MySQL et MariaDB Comment automatiser le déploiement du cluster MySQL Galera à l'aide de la CLI s9s et de Chef Comment automatiser la migration de MySQL autonome vers le cluster Galera à l'aide d'Ansible ClusterControl pour MariaDB

Les outils de gestion de configuration populaires tels que Puppet, Chef et Ansible sont des technologies éprouvées pour le déploiement de divers services informatiques. Ils contribuent à éliminer le travail manuel, minimisent le risque d'erreur humaine et permettent un déploiement rapide. Dans le blog d'aujourd'hui, nous allons jeter un œil à l'un d'entre eux.

Ansible est un outil de gestion de système open source permettant de centraliser et d'automatiser la gestion de la configuration. Avec Ansible, vous pouvez facilement automatiser divers déploiements de bases de données et effectuer des tâches d'administration simples. Nous montrerons comment installer et configurer automatiquement des logiciels tels que le serveur MySQL dans des environnements reproductibles. Dans ce blog, nous allons nous concentrer sur la réplication MariaDB, mais si vous êtes intéressé par d'autres tâches, veuillez consulter nos autres blogs où nous écrivons plus sur Ansible.

Vagrant, Virtualbox et Ansible

Ansible peut vous aider à déployer MySQL Cluster dans le cloud ou sur site. Pour les besoins de ce blog, nous allons utiliser la configuration populaire pour exécuter divers tests sur des ordinateurs de bureau avec Vagrant et Virtualbox.

Vagrant est un système qui vous permet de créer et de déplacer facilement des environnements de développement d'une machine à une autre. Définissez simplement le type de machine virtuelle que vous voulez dans un fichier appelé Vagrantfile, puis lancez-les avec une seule commande. Il s'intègre bien avec les fournisseurs de machines virtuelles comme VirtualBox, VMware et AWS et, ce qui est important pour notre tâche, il bénéficie d'un excellent support d'Ansible.

Notre Vagrantfile déploie 2 instances sur la plateforme VirtualBox, une pour le nœud maître et le second nœud esclave. Ensuite, nous utiliserons Ansible pour exécuter l'installation des packages nécessaires et exécuter la configuration d'un maître/esclave. Vous trouverez ci-dessous la liste des tâches que nous allons effectuer.

  • Installer Vagrant et Virtualbox
  • Configurer le fichier vagrant et le playbook ansible
  • Lancer les instances
  • Téléchargez les boîtes Vagrant et le fichier Vagrant associés (cela se fait automatiquement)
  • Lancez Ansible playbook (cela sera fait automatiquement)
  • Ajoutez le cluster à ClusterControl pour la tâche de surveillance et de gestion (comme les sauvegardes, la sécurité, la gestion des utilisateurs, la gestion des performances et bien d'autres).

Installation de Vagrant, Virtualbox et Ansible sur Ubuntu

Installer les packages

sudo apt-get install ansible vagrant virtualbox

Créer des fichiers de configuration pour Vagrant et Ansible

$ mkdir mariadbtest
$ vi Vagrantfile
VAGRANTFILE_API_VERSION = "2"
 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "maria.yml"
    ansible.sudo = true
  end
  config.vm.define "master" do |master|
    master.vm.hostname = "master"
    master.vm.network "forwarded_port", guest: 3306, host: 3336
    master.vm.network "private_network", ip: "192.168.10.2"        
  end
  config.vm.define "slave" do |slave|
    slave.vm.hostname = "slave"
    slave.vm.network "forwarded_port", guest: 3306, host: 3337
    slave.vm.network "private_network", ip: "192.168.10.3"                
  end
  config.vm.provider "virtualbox" do |v|
    v.memory = 1024
    v.cpus = 2
  end
end

Le fichier vagabond ci-dessus créera deux machines avec la configuration suivante :

  • Maître :2 processeurs, 1 Go de RAM, adresse IP privée :192.168.10.2 Transfert de port :3336
  • Esclave :2 processeurs, 1 Go de RAM, adresse IP privée :192.168.10.3, transfert de port : 3337

Structure du livre de jeu

Dans cette étape, nous définirons le playbook Ansible. Ansible utilise YAML comme langage de balisage simple pour définir des instructions. Nous créons le "maria.yml" suivant basé sur le fichier Ansible fourni par Mariadb.

$vi maria.yml
- hosts: master:slave
  user: vagrant
  tasks:
  - name: Install MariaDB repository
    apt_repository: repo='deb http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.3/ubuntu trusty main' state=present
  - name: Add repository key to the system
    apt_key: keyserver=keyserver.ubuntu.com id=0xcbcb082a1bb943db
  - name: Install MariaDB Server
    apt: name=mariadb-server state=latest update_cache=yes
  - name: Install python module
    apt: name=python-mysqldb state=installed
  - name: Create replication account
    mysql_user: name=repl host="%" password=s3cr3tPaSSwordR priv=*.*:"REPLICATION SLAVE" state=present
  - name: Create readwrite user
    mysql_user: name=rwuser host="%" password=s3cr3tPaSSwordR priv=*.*:SELECT,INSERT,UPDATE,DELETE,CREATE,DROP state=present
  - name: Modify configuration file to listen on all interfaces
    lineinfile: dest=/etc/mysql/my.cnf regexp="^bind-address" line="bind-address=0.0.0.0"
- hosts: master
  user: vagrant
  tasks:
  - name: Modify configuration file to setup server ID
    lineinfile: dest=/etc/mysql/my.cnf regexp="^#server-id" line="server-id=1"
  - name: Restart mysql service
    service: name=mysql state=restarted
  - name: Reset master binlog
    command: /usr/bin/mysql -u root -e "RESET MASTER"
- hosts: slave
  user: vagrant
  tasks:
  - name: Modify configuration file to setup server ID
    lineinfile: dest=/etc/mysql/my.cnf regexp="^#server-id" line="server-id=2"
  - name: Setup replication
    command: /usr/bin/mysql -uroot -e "CHANGE MASTER TO master_host='192.168.10.2', master_user='repl', master_password='s3cr3tPaSSwordR', master_use_gtid=current_pos"
  - name: Restart mysql service
    service: name=mysql state=restarted
ClusterControlConsole unique pour l'ensemble de votre infrastructure de base de donnéesDécouvrez les autres nouveautés de ClusterControlInstallez ClusterControl GRATUITEMENT

Place maintenant aux instances. Vagrant up déclenchera l'installation du playbook.

$ vagrant up
DEPRECATION: The 'sudo' option for the Ansible provisioner is deprecated.
Please use the 'become' option instead.
The 'sudo' option will be removed in a future release of Vagrant.

==> vagrant: A new version of Vagrant is available: 2.2.4 (installed version: 2.2.3)!
==> vagrant: To upgrade visit: https://www.vagrantup.com/downloads.html

Bringing machine 'master' up with 'virtualbox' provider...
Bringing machine 'slave' up with 'virtualbox' provider...
==> master: Box 'ubuntu/trusty64' could not be found. Attempting to find and install...
    master: Box Provider: virtualbox
    master: Box Version: >= 0
==> master: Loading metadata for box 'ubuntu/trusty64'
    master: URL: https://vagrantcloud.com/ubuntu/trusty64
==> master: Adding box 'ubuntu/trusty64' (v20190429.0.1) for provider: virtualbox
    master: Downloading: https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20190429.0.1/providers/virtualbox.box
    master: Download redirected to host: cloud-images.ubuntu.com
    master: Progress: 7% (Rate: 551k/s, Estimated time remaining: 0:14:31)

Bringing machine 'master' up with 'virtualbox' provider...
Bringing machine 'slave' up with 'virtualbox' provider...

Si vous n'avez pas déjà téléchargé l'image Ubuntu de Virtualbox, vagrant la téléchargera automatiquement comme dans l'exemple ci-dessus.

PLAY [master:slave] ************************************************************

TASK [Gathering Facts] *********************************************************
ok: [slave]

TASK [Install MariaDB repository] **********************************************
changed: [slave]

TASK [Add repository key to the system] ****************************************
changed: [slave]

TASK [Install MariaDB Server] **************************************************

Après une installation réussie du playbook, vous verrez la sortie suivante et vous devriez pouvoir vous connecter à la base de données avec des informations d'identification prédéfinies (voir playbook).

PLAY RECAP ********************************************************************
master                     : ok=12   changed=10   unreachable=0    failed=0 

L'étape suivante consiste à importer votre configuration maître/esclave dans ClusterControl. Le moyen le plus simple et le plus pratique d'installer ClusterControl est d'utiliser le script d'installation fourni par Manynines. Téléchargez simplement le script et exécutez-le en tant qu'utilisateur root ou utilisateur avec l'autorisation sudo root.

$ wget http://www.severalnines.com/downloads/cmon/install-cc
$ chmod +x install-cc
$ ./install-cc # as root or sudo user

Si vous souhaitez ajouter une installation ClusterControl à votre playbook, vous pouvez utiliser les instructions suivantes.

L'étape suivante consiste à générer une clé SSH que nous utiliserons pour configurer ultérieurement le SSH sans mot de passe. Si vous avez une paire de clés que vous souhaitez utiliser, vous pouvez ignorer la création d'une nouvelle.

ClusterControl :Importer un cluster existant

Après une installation réussie, vous pouvez enfin importer votre cluster de test nouvellement créé dans ClusterControl.

Nous espérons que cet article de blog vous a donné un aperçu de l'installation et de la configuration de base de la réplication maître/esclave Ansible MariaDB. Veuillez consulter nos autres blogs où nous présentons Chef, Puppet, Docker pour la base de données MariaDB et d'autres déploiements de cluster de base de données.