GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nastavit MariaDB Galera Cluster s HAproxy na CentOS 7

V dnešním článku nainstalujeme cluster MariaDB Galera s HAproxy pro vyrovnávání zatížení MariaDB a wordpress. Galera je technologie aktivního shlukování, což znamená, že může podporovat zápisy na všechny uzly, které jsou pak replikovány napříč clusterem. Existuje také aktivní-pasivní shlukování, kde je zapisovatelný pouze uzel. Nainstalujeme také HAproxy pro vyrovnávání zátěže na náš cluster. Instalace bude provedena na 5 serverech CentOS 7, tři pro MariaDB 10.1 Galera, jeden pro Haproxy a jeden pro wordpress. HAproxy funguje tak, že směruje požadavky na každý uzel v kruhovém režimu, přičemž se prezentuje jako frontend. Zde používáme tradiční způsob klastrování, kdy databázové servery sedí v privátní síti a pouze webový server je obrácen k veřejné IP adrese.

Nastavení clusteru Galera

Na všechny servery musíme nainstalovat mysql. Nejprve přidáme úložiště

echo '[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1' >> /etc/yum.repos.d/MariaDB.repo

Poté nainstalujeme mariadb, rsync a xinetd

sudo yum install mariadb-server rsync xinetd

Potřebujeme upravit /etc/hosts, udělá to jakýkoli editor, ale já použiji nano

nano /etc/hosts

Například ip a jména vašich hostitelů

192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03

Ujistěte se, že používáte soukromou IP svých hostitelů, pokud používáte veřejné, budete muset šifrovat provoz mezi nimi, abyste zabezpečili svůj cluster.

Po instalaci MariaDB upravte

nano /etc/my.cnf.d/server.cnf

Na všech serverech musíte v souboru najít sekci [galera] a nechat to vypadat takto, s výjimkou IP adres, které jsou tučně a měly by být změněny

[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so

#add your node ips here
wsrep_cluster_address="gcomm://192.168.207.241,192.168.209.91,192.168.129.168"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
#Cluster name
wsrep_cluster_name="linoxide_cluster"
# Allow server to accept connections on all interfaces.

bind-address=0.0.0.0

# this server ip, change for each server
wsrep_node_address="192.168.207.241"
# this server name, change for each server
wsrep_node_name="mariadb01"

wsrep_sst_method=rsync

Prohlížení shluku Galera

Po této konfiguraci je třeba spustit cluster

Nejprve na uzlu mariadb01, který je hlavním s tímto příkazem

galera_new_cluster

Pak na dalších dvou uzlech s normálním příkazem systemctl:

systemctl start mariadb

Dále můžeme ověřit, že cluster běží:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Další věcí by bylo spustit skript mysql_secure_installation

mysql_secure_installation

Nastavení brány firewall

Nyní, když jsou všechny tři uzly připojeny, můžeme vyvolat firewall a nakonfigurovat jej.

systemctl start firewalld

Otevřete klienta mariadb a replikační porty galera:

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=4567/tcp

Otevřený port rsync, který používáme pro replikaci

firewall-cmd --permanent --add-port=873/tcp

Další důležité porty

firewall-cmd --permanent --add-port=4444/tcp
firewall-cmd --permanent --add-port=9200/tcp

Nakonec znovu načtěte firewall

firewall-cmd --reload

Použití xinetd a clustercheck

Clustercheck je užitečný skript pro monitorování clusteru. Nainstalujte jej pomocí následujících příkazů

wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
chmod +x clustercheck
mv clustercheck /usr/bin/

Dále musíme přidat mysqlchk do seznamu služeb. Za tímto účelem upravíme soubor služeb:

nano /etc/services

Protože je to dlouhý soubor, zadejte v nano Ctrl-W a vyhledejte 9200. Všechny služby používající tento port je třeba okomentovat a je třeba přidat novou službu, takže část musí vypadat takto:

mysqlchk 9200/tcp # mysqlchk
#wap-wsp 9200/tcp # WAP connectionless session service
#wap-wsp 9200/udp # WAP connectionless session service

Když je toto uloženo a hotovo, můžeme spustit xinetd

systemctl start xinetd

To vše je třeba provést na všech uzlech a nyní pouze na masteru musíme přidat uživatele pro clustercheck.

mysql -u root -p

GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';

exit;

Dále můžeme zkusit skript clustercheck

clustercheck

Nastavení HAproxy

Přihlaste se ke svému určenému haproxy serveru. Nyní instalujeme load balancer

Upravte svůj soubor /etc/hosts tak, aby byl něco takového (samozřejmě s vašimi ips)

192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03
192.168.210.252 haproxy01

Dále můžeme nainstalovat haproxy

yum install haproxy

Dále musíme upravit rsyslog.conf

nano /etc/rsyslog.conf

Odkomentujte tyto dva řádky

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

Uložit a ukončit

echo 'local2.=info /var/log/haproxy-access.log
local2.notice /var/log/haproxy-info.log
' >> /etc/rsyslog.d/haproxy.conf

umožňuje zálohovat výchozí konfiguraci haproxy

mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk

Dále vytvoříme nový soubor s pomocí nano

nano /etc/haproxy/haproxy.cfg

Použijte tento pastebin jako konfiguraci, ale změňte IP adresy.

Je čas nastavit firewall na haproxy node

systemctl start firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=3030/tcp

Poté znovu načtěte firewall

firewall-cmd --reload

Nastavení přístupu k MariaDB z HAproxy

Na mariadb clusteru typu:

mysql -u root -p

GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY "verystrongpassword";

Poté přejdeme na server haproxy01 a pokusíme se získat přístup k databázi.

Musíte mít nainstalovaného klienta MariaDB, takže nejprve to udělejte:

echo '[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1' >> /etc/yum.repos.d/MariaDB.repo

To bylo pro přidání úložiště, tento příkaz jej nainstaluje

yum install MariaDB-client

A pak otestujeme jestli

mysql -u root -p -h 192.168.210.252 -P 3030 -e "select Host, User, Password from mysql.user"

Ujistěte se, že jste jako heslo zadali velmi silné heslo a ne vaše běžné root heslo.

Instalace Wordpressu

Nakonec nastavíme wordpress pro použití v našem clusteru. Na uzlu mariadb01, haproxy01 a wp01 je potřeba ještě zapracovat.

Na mariadb01

mysql -u root -p

CREATE DATABASE wordpress;

CREATE USER wordpressuser@localhost IDENTIFIED BY 'password';

GRANT ALL ON wordpress.* TO wordpressuser@'192.168.210.252' IDENTIFIED BY 'password';

Na uzlu wp01 nastaveném v /etc/hosts/

192.168.220.17 wp01
192.168.210.252 haproxy01

Také na haproxy01 add

192.168.220.17 wp01

Dále musíme nainstalovat požadované balíčky na wp01 node

yum install httpd php php-gd php-mysqlnd rsync

Odtud musíme použít účet jiného uživatele než root s právy sudo. Žádný nemám, tak si ho vytvořím:

useradd miki
usermod miki -aG wheel

passwd miki

Poté se přihlaste jako můj uživatel

su miki

Změňte adresář na domov

cd

A pak si stáhněte nejnovější verzi wordpressu a rozbalte ji

wget http://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz

Pro zkopírování wordpressu do apache dir

použijeme rsync
sudo rsync -avP ~/wordpress/ /var/www/html/
mkdir /var/www/html/wp-content/uploads

Musíme také změnit vlastnictví na uživatele Apache

sudo chown -R apache:apache /var/www/html/*

Konfigurace wordpressu

WordPress se konfiguruje v souboru wp-config.php, tam musíme nastavit parametry jako hostitelská adresa databázového serveru, přihlašovací údaje, název databáze. Umožňuje zálohovat konfigurační soubor:

cd /var/www/html

cp wp-config-sample.php wp-config.php

A pak provedeme úpravy:

nano wp-config.php

Změňte pouze tyto řádky

define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

/** MySQL hostname */
define('DB_HOST', '192.168.210.252:3030');

Nakonec restartujeme webový server apache:

sudo systemctl restart httpd

Dokončete instalaci WordPressu z prohlížeče

Můžeme přejít na veřejnou adresu uzlu wordpress jako níže a pokračovat v procesu instalace word-press

Nyní máme cluster nastavený se spuštěným wordpress

Závěr

Zde jsme nastavili wordpress na vrcholu clusteru Galera vyváženého pomocí HAproxy. Jedná se o odolné řešení pro weby s vysokým zatížením, a přestože jeho nastavení chvíli trvá, poskytuje vašemu webu téměř kompletní pojištění proti výpadkům. Veškerý provoz mezi uzly je prováděn pomocí soukromých IP adres a pro přístup k webu se používá pouze jedna veřejná adresa pro frontend Worpress. To by bylo pro tento článek vše, děkuji za přečtení a přeji hezký den.


Cent OS
  1. Jak nainstalovat MariaDB Galera Cluster na Ubuntu 16.04

  2. Jak nastavit MariaDB Galera Cluster na Ubuntu 20.04

  3. Jak nastavit Pure-FTPD s MySQL na CentOS a RedHat

  1. Jak nastavit FTP server s VSFTPD na CentOS 7

  2. Jak nastavit FTP server s VSFTPD na CentOS 8

  3. Jak nahradit MySQL za MariaDB na CentOS 6

  1. Jak nastavit Riak KV NoSQL Database Cluster na CentOS 7

  2. Jak nainstalovat ownCloud 9.1 s Nginx a MariaDB na CentOS 7

  3. Jak nastavit HAProxy jako Load Balancer pro MariaDB na CentOS 7