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.
ClusterControl:Import existujícího clusteruPo ú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.