
Ruční nasazení je běžné, ale může být pomalé a monotónní, pokud jste někdy zkoušeli instalaci Oracle RAC s nastavením Data Guard na více než třech uzlech, víte, co tím myslím. V závislosti na počtu uzlů mohou být kroky nasazení časově náročné a pravděpodobně dojde k chybě. Samozřejmě existuje mnoho dobrých „návodů“, jak provést ruční nastavení databázového clusteru, nicméně s manuálním přístupem na stupnici je potřeba vyřešit mnoho dalších otázek.
Jsou ostatní instance v mém prostředí nastaveny stejným způsobem? Byl ten systém kontroly kvality nastaven stejně jako výroba? Je to, co jsme právě nasadili, připraveno k výrobě? Pro vyřešení všech těchto otázek se nasazení stále více automatizuje pomocí nástrojů pro správu konfigurace.
Související zdroje Automatizace databáze pomocí Puppet:Nasazení replikace MySQL a MariaDB Jak automatizovat nasazení MySQL Galera Cluster pomocí s9s CLI a Chef Jak automatizovat migraci ze samostatného MySQL do Galera Cluster pomocí Ansible ClusterControl pro MariaDBOblíbené nástroje pro správu konfigurace jako Puppet, Chef a Ansible jsou osvědčené technologie při zavádění různých IT služeb. Pomáhají eliminovat manuální práci, minimalizují riziko lidské chyby a umožňují rychlé nasazení. V dnešním blogu se podíváme na jeden z nich.
Ansible je open source nástroj pro správu systému pro centralizaci a automatizaci správy konfigurace. S Ansible můžete snadno automatizovat různá nasazení databází a provádět jednoduché administrativní úlohy. Předvedeme, jak automaticky instalovat a konfigurovat software, jako je server MySQL, v reprodukovatelných prostředích. V tomto blogu se zaměříme na replikaci MariaDB, ale pokud vás zajímají jiné úkoly, podívejte se na naše další blogy, kde píšeme více o Ansible.
Vagrant, Virtualbox a Ansible
Ansible může pomoci nasadit MySQL Cluster v cloudu nebo on-prem. Pro účely tohoto blogu budeme používat oblíbené nastavení pro spouštění různých testů na stolních počítačích s Vagrant a Virtualbox.
Vagrant je systém, který vám umožňuje snadno vytvářet a přesouvat vývojová prostředí z jednoho stroje na druhý. Jednoduše definujte, jaký typ virtuálního počítače chcete v souboru s názvem Vagrantfile, a poté je spusťte jediným příkazem. Dobře se integruje s poskytovateli virtuálních strojů, jako jsou VirtualBox, VMware a AWS, a co je pro náš úkol důležité, má velkou podporu od Ansible.
Náš Vagrantfile nasazuje 2 instance na platformě VirtualBox, jednu pro hlavní uzel a druhý podřízený uzel. Poté pomocí Ansible spustíme instalaci potřebných balíčků a provedeme konfiguraci master/slave. Níže je seznam úkolů, které budeme provádět.
- Nainstalujte Vagrant a Virtualbox
- Nakonfigurujte soubor vagrant a ansible playbook
- Spusťte instance
- Stáhněte si související Vagrant boxy a Vagrantfile (toto se děje automaticky)
- Spustit Ansible playbook (toto bude provedeno automaticky)
- Přidejte cluster do ClusterControl pro úlohu monitorování a správy (jako je zálohování, zabezpečení, správa uživatelů, správa výkonu a mnoho dalších).
Vagrant, Virtualbox a instalace Ansible na Ubuntu
Instalovat balíčky
sudo apt-get install ansible vagrant virtualbox
Vytvořte konfigurační soubory pro Vagrant a 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
Výše uvedený soubor vagrant vytvoří dva počítače s následující konfigurací:
- Hlavní:2 CPU, 1 GB RAM, soukromá IP:192.168.10.2 Port forward:3336
- Slave:2CPU, 1GB RAM, soukromá IP:192.168.10.3, Port forward:3337
Struktura příručky
V tomto kroku definujeme Ansible playbook. Ansible používá YAML jako jednoduchý značkovací jazyk k definování instrukcí. Vytvoříme následující „maria.yml“ na základě souboru Ansible dodaného 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 pro celou vaši databázovou infrastrukturu Zjistěte, co je ještě nového v ClusterControl Nainstalujte ClusterControl ZDARMA Nyní je čas na příklady. Vagrant up spustí instalaci příručky.
$ 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...
Pokud již nemáte stažený obraz ubuntu z Virtualboxu, vagrant si jej stáhne automaticky jako ve výše uvedeném příkladu.
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] **************************************************
Po úspěšné instalaci playbooku uvidíte následující výstup a měli byste být schopni se přihlásit do databáze s předdefinovanými přihlašovacími údaji (viz playbook).
PLAY RECAP ********************************************************************
master : ok=12 changed=10 unreachable=0 failed=0
Dalším krokem je import vaší master/slave konfigurace do ClusterControl. Nejjednodušší a nejpohodlnější způsob instalace ClusterControl je použití instalačního skriptu poskytovaného společností Somenines. Jednoduše si stáhněte skript a spusťte jej jako uživatel root nebo uživatel s oprávněním sudo root.
$ wget http://www.severalnines.com/downloads/cmon/install-cc
$ chmod +x install-cc
$ ./install-cc # as root or sudo user
Chcete-li do své příručky přidat instalaci ClusterControl, můžete použít následující pokyny.
Dalším krokem je vygenerování klíče SSH, který později použijeme k nastavení SSH bez hesla. Pokud máte pár klíčů, který byste chtěli použít, můžete přeskočit vytváření nového.

Po úspěšné instalaci můžete konečně importovat nově vytvořený testovací cluster do ClusterControl.
Doufáme, že vám tento blogový příspěvek poskytl vhled do základů instalace a nastavení replikace Ansible MariaDB master/slave. Podívejte se prosím na naše další blogy, kde představujeme Chef, Puppet, Docker pro databázi MariaDB a další nasazení databázového clusteru.