MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come impostare la replica di MariaDB 10.3 utilizzando Ansible e Vagrant

Le distribuzioni manuali sono comuni, ma possono essere lente e monotone, se hai mai provato l'installazione di Oracle RAC con la configurazione di Data Guard su più di tre nodi, sai cosa intendo. A seconda del numero di nodi, i passaggi di distribuzione potrebbero richiedere molto tempo e potrebbero verificarsi errori. Naturalmente, ci sono molti buoni "come fare" su come eseguire una configurazione manuale del cluster di database, tuttavia, con l'approccio manuale su larga scala ci sono molte altre domande da affrontare.

Le altre istanze nel mio ambiente sono configurate allo stesso modo? Quel sistema di controllo qualità è stato impostato allo stesso modo della produzione? Se ciò che abbiamo appena distribuito è pronto per la produzione? Per rispondere a tutte queste domande, le implementazioni vengono sempre più automatizzate tramite strumenti di gestione della configurazione.

Risorse correlate Automazione del database con Puppet:distribuzione della replica di MySQL e MariaDB Come automatizzare la distribuzione di MySQL Galera Cluster utilizzando s9s CLI e Chef Come automatizzare la migrazione da MySQL standalone a Galera Cluster utilizzando Ansible ClusterControl per MariaDB

Gli strumenti di gestione della configurazione più diffusi come Puppet, Chef e Ansible sono tecnologie collaudate per l'implementazione di vari servizi IT. Aiutano a eliminare il lavoro manuale, ridurre al minimo il rischio di errore umano e rendere possibile l'implementazione rapida. Nel blog di oggi daremo un'occhiata a uno di loro.

Ansible è uno strumento di gestione del sistema open source per centralizzare e automatizzare la gestione della configurazione. Con Ansible puoi automatizzare facilmente varie distribuzioni di database ed eseguire semplici attività di amministrazione. Mostreremo come installare e configurare automaticamente software come il server MySQL in ambienti riproducibili. In questo blog ci concentreremo sulla replica di MariaDB, ma se sei interessato ad altre attività, controlla i nostri altri blog dove scriviamo di più su Ansible.

Vagante, Virtualbox e Ansible

Ansible può aiutare a distribuire MySQL Cluster nel cloud o in locale. Ai fini di questo blog, utilizzeremo la popolare configurazione per eseguire vari test su macchine desktop con Vagrant e Virtualbox.

Vagrant è un sistema che permette di creare e spostare facilmente gli ambienti di sviluppo da una macchina all'altra. Definisci semplicemente il tipo di VM che desideri in un file chiamato Vagrantfile e quindi avvialo con un singolo comando. Si integra bene con fornitori di macchine virtuali come VirtualBox, VMware e AWS e ciò che è importante per il nostro compito ha un ottimo supporto di Ansible.

Il nostro Vagrantfile distribuisce 2 istanze sulla piattaforma VirtualBox, una per il nodo master e il secondo nodo slave. Quindi utilizzeremo Ansible per eseguire l'installazione dei pacchetti necessari ed eseguire la configurazione di un master/slave. Di seguito è riportato l'elenco delle attività che andremo a svolgere.

  • Installa Vagrant e Virtualbox
  • Configura il file vagabondo e il playbook ansible
  • Avvia le istanze
  • Scarica i relativi box Vagrant e Vagrantfile (questo avviene automaticamente)
  • Esegui il playbook di Ansible (questo verrà eseguito automaticamente)
  • Aggiungi il cluster a ClusterControl per le attività di monitoraggio e gestione (come backup, sicurezza, gestione degli utenti, gestione delle prestazioni e molte altre).

Installazione di Vagrant, Virtualbox e Ansible su Ubuntu

Installa i pacchetti

sudo apt-get install ansible vagrant virtualbox

Crea file di configurazione per Vagrant e 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

Il file sopra vagrant creerà due macchine con la seguente configurazione:

  • Master:2 CPU, 1GB RAM, IP privato:192.168.10.2 Port forward:3336
  • Slave:2CPU, 1GB RAM, IP privato:192.168.10.3, Port forward:3337

Struttura del Playbook

In questo passaggio, definiremo il playbook di Ansible. Ansible utilizza YAML come un linguaggio di markup semplice per definire le istruzioni. Creiamo il seguente "maria.yml" basato sul file Ansible fornito da 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
ClusterControlSingle Console per l'intera infrastruttura di databaseScopri cos'altro c'è di nuovo in ClusterControlInstalla ClusterControl GRATIS

Ora è il momento delle istanze. Vagrant up attiverà l'installazione del 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...

Se non hai già scaricato l'immagine di Ubuntu da Virtualbox, Vagrant la scaricherà automaticamente come con l'esempio sopra.

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] **************************************************

Dopo aver installato correttamente il playbook, vedrai il seguente output e dovresti essere in grado di accedere al database con credenziali predefinite (vedi playbook).

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

Il passaggio successivo consiste nell'importare la configurazione master/slave in ClusterControl. Il modo più semplice e conveniente per installare ClusterControl consiste nell'utilizzare lo script di installazione fornito da Manynines. Scarica semplicemente lo script ed eseguilo come utente root o utente con autorizzazione root sudo.

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

Se desideri aggiungere un'installazione ClusterControl al tuo playbook puoi utilizzare le seguenti istruzioni.

Il prossimo passo è generare una chiave SSH che useremo per configurare l'SSH senza password in seguito. Se hai una coppia di chiavi che vorresti utilizzare, puoi saltare la creazione di una nuova.

ClusterControl:importa il cluster esistente

Dopo una corretta installazione, puoi finalmente importare il tuo cluster di test appena creato in ClusterControl.

Ci auguriamo che questo post del blog ti abbia fornito informazioni di base sull'installazione e la configurazione della replica master/slave di Ansible MariaDB. Controlla i nostri altri blog in cui presentiamo Chef, Puppet, Docker per il database MariaDB e altre distribuzioni di cluster di database.