V tomto tutoriálu vás provedu instalací clusteru MariaDB Galera na CentOS 7, který má vepředu vyvažovač zátěže HAProxy. Celkové nastavení se skládá ze 4 serverů. Pro databázové uzly použiji 3 servery CentOS 7, 2 uzly budou aktivní a 1 funguje jako záložní uzel. Čtvrtý server bude použit pro nástroj pro vyrovnávání zatížení HAProxy. Pro balanční algoritmus používáme lessconn (ale můžete použít i jiné algoritmy).
MariaDB je jedním z nejpopulárnějších relačních databázových serverů vytvořených původním vývojářem databázového serveru MySQL. MariaDB je fork MySQL, který podporuje úložiště XtraDB, úložiště InnoDB a nový modul úložiště zvaný aria.
MariaDB Galera Cluster je synchronní multi-master cluster pro MariaDB, který je dostupný pouze na operačních systémech založených na GNU/Linux. Galera Cluster podporuje pouze úložiště XtraDB a InnoDB. Používá knihovnu Galera pro replikaci s automatickým řízením členů, automatickým spojováním uzlů a pro čtení a zápis do uzlů clusteru.
Předpoklad
- 4 servery CentOS 7 – 64bitové:
mariadb1
192.168.1.132
mariadb2
192.168.1.133
mariadb3
192.168.1.134
HAProxy
192.168.1.135
- Oprávnění root na všech čtyřech serverech.
Krok 1 – Instalace a konfigurace MariaDB Galera Cluster
V tomto kroku nainstalujeme a nakonfigurujeme MariaDB Galera Cluster na 3 serverech CentOS. Nainstalujeme server MariaDB-Galera, poté aktivujeme firewall a otevřeme některé porty pro databázi a další služby. Poté nainstalujeme skript clustercheck na každý server MariaDB, abychom mohli zkontrolovat stav serveru z HAProxy.
A. Nakonfigurujte názvy hostitelů a připravte základní systém
Přihlaste se ke všem databázovým serverům pomocí svého ssh účtu:
ssh [chráněno e-mailem]
ssh [chráněno e-mailem].133
ssh [chráněno e-mailem]
Přepněte se na uživatele root pomocí příkazu sudo:
sudo su
Upravte soubor hosts na každém serveru MariaDB a přidejte všechny adresy IP serveru a názvy hostitelů ostatních uzlů:
vi /etc/hosts
Viz moje konfigurace /etc/hosts níže:
192.168.1.132 mariadb1
192.168.1.133 mariadb2
192.168.1.134 mariadb3
Uložte soubor a ukončete.
Dále deaktivujte SELinux na každém serveru, protože způsobuje problémy s MariaDB Galera. Zakažte SELinux tímto příkazem sed:
sed -i -e 's/SELINUX=permisivní/SELINUX=disabled/g' /etc/sysconfig/selinux
sed (stream editor):nahraďte "SELINUX=permisivní" za "SELINUX=disabled" v souboru /etc/sysconfig/selinux.
B. Nainstalujte server MariaDB Galera Server
V tomto kroku nainstalujeme MariaDB Galera 10.0, která je dostupná v úložišti MariaDB.
Vytvořte nový soubor .repo v adresáři yum.repos.d pomocí příkazu vi:
vi /etc/yum.repos.d/mariadb.repo
Níže vložte podrobnosti o úložišti MariaDB Galera a uložte je:
# Seznam repozitářů MariaDB 10.0 CentOS – vytvořeno 09.07.2015 14:56 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
název =MariaDB
baseurl =http://yum.mariadb.org/10.0/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck =1
Nyní nainstalujte MariaDB Galera Server and Client a některé další balíčky, které jsou vyžadovány pro tento tutoriál:
yum -y install MariaDB-Galera-server MariaDB-client galera rsync xinetd percona-toolkit precona-xtrabackup xinetd wget
Počkejte na dokončení procesu instalace.
C. Nakonfigurujte bránu firewall
Zapneme výchozí firewall CentOS 7 s názvem Firewalld. Zapneme jej a otevřeme TCP porty, které používají služby, které budeme instalovat.
3306 =Používá se pro připojení klientů MySQL/MariaDB.
4567 =Provoz replikace clusteru Galera.
873 =Rsync porty.
4444 =Pro všechny ostatní State Snapshot Transfer (SST).
9200 =xinetd - clustercheck.
Zapněte firewalld pomocí tohoto příkazu systemctl:
systemctl start firewalld
Nyní otevřete porty pomocí firewall-cmd:
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=4567/tcp
firewall-cmd --permanent --add -port=873/tcp
firewall-cmd --permanent --add-port=4444/tcp
firewall-cmd --permanent --add-port=9200/tcp
a znovu načtěte firewall:
firewall-cmd --reload
D. Nakonfigurujte MariaDB Galera Cluster
Přejděte do adresáře /etc/my.cnf.d/ a upravte soubor server.conf pomocí vi:
cd /etc/my.cnf.d/
vi server.conf
Odkomentujte a přidejte několik konfiguračních řádků, podrobnosti můžete vidět níže:
wsrep_provider=/usr/lib64/galera/libgalera_smm.so # Cesta ke knihovně poskytovatele wsrep
wsrep_cluster_address="gcomm://192.168.1.132,192.168.1.133,192.16 Group all # IP serveru MardiaDB
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Přidejte nějakou konfiguraci níže
# Název clusteru
wsrep_cluster_name="mariadb_cluster"
# Přidat IP serveru - na mariadb2 =192.168.1.133 - na mariadb3 =192.168.1.134
wsrep_node_address="192.11.6 "
# Poskytovatel replikace s rsync
wsrep_sst_method=rsync
Uložte soubor a ukončete.
Na serveru mariadb1 spusťte cluster pomocí příkazu níže:
/etc/rc.d/init.d/mysql bootstrap
výsledek:
Bootstrapování clusteru.. Spouštění MySQL.. ÚSPĚCH!
Na serveru mariadb2 a mariadb3 spusťte MariaDB normálně:
/etc/init.d/mysql start
mariadb1 bootstraping.
mariadb2 a mariadb3 začínají.
MariaDB byla spuštěna na všech uzlech, nyní nakonfigurujte heslo root pro MariaDB na všech serverech pomocí příkazu níže:
/usr/bin/mysql_secure_installation
E. Nakonfigurujte Clustercheck
Clustercheck je užitečný bash skript, který umožňuje proxy (např. HAProxy) monitorovat server MariaDB.
Přejděte do adresáře /tmp a stáhněte skript pomocí wget:
cd /tmp
wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
Nyní udělejte skript spustitelný změnou oprávnění a přesuňte jej do adresáře /usr/bin/:
chmod +x clustercheck
mv clustercheck /usr/bin/
Dále vytvořte skript xinetd pro clusterchek pomocí příkazu vi v adresáři „/etc/xinet.d/“:
vi /etc/xinetd.d/mysqlchk
Vložte konfiguraci níže:
# výchozí:zapnuto
# popis:mysqlchk
služba mysqlchk
{
zakázat =no
příznaky =ZNOVU POUŽÍT
typ_zásuvky =stream
port =9200 # Tento port, který používá xinetd pro kontrolu clusteru
čekat =ne
uživatel =nikdo
server =/usr/bin_/fak kontrola> = ID_USER br přihlášení only_from =0.0.0.0/0
na_zdroj =NEOMEZENO
}
Uložte a ukončete.
Přidejte clustercheck do seznamu služeb:
vi /etc/services
Přejděte na řádek 10101, okomentujte služby, které používají port 9200 a přidejte nový řádek pro mysqlchk/clustercheck.
# wap-wsp 9200/tcp # wap connections relace Service
# was-wsp 9200/udp # wap bez relace
Uložte soubor a ukončete.
Poté spusťte službu xinetd:
systemctl start xinetd
Chcete-li provést clustercheck, musíte vytvořit nového uživatele v MySQL. Přihlaste se do prostředí MariaDB a vytvořte nového uživatele se jménem "clustercheckuser" a heslem "clustercheckpassword!".
mysql -u root -p
UDĚLEJTE PROCES NA *.* TOMU 'clustercheckuser'@'localhost' IDENTIFIKOVANÉMU 'clustercheckpassword!';
exit;
V této fázi jsou všechny služby MariaDB synchronizovány.
Testování clusteru:
/usr/bin/clustercheck
Ujistěte se, že kód výsledků je 200.
Krok 2 – Instalace a konfigurace HAProxy
Přihlaste se k serveru HAProxy:
ssh [e-mail chráněný]
Staňte se uživatelem root a přidejte IP adresu serveru MariaDB a název hostitele do souboru "/etc/hosts":
sudo su
vi /etc/hosts
HAProxy je k dispozici v základním úložišti CentOS, spusťte tento příkaz yum a nainstalujte jej:
yum -y nainstalujte haproxy
Poté nakonfigurujte protokol pro HAProxy úpravou konfiguračního souboru rsyslog:
vi /etc/rsyslog.conf
Odkomentujte port udp:
# Poskytuje příjem syslogu UDP
$ModLoad imudp
$UDPServerRun 51
Uložte soubor a ukončete editor.
Přidejte konfiguraci HAProxy do adresáře rsyslog.d:
vi /etc/rsyslog.d/haproxy.conf
Vložte konfiguraci níže:
local2.=info /var/log/haproxy-access.log
local2.notice /var/log/haproxy-info.log
Uložte soubor a restartujte rsyslog:
systemctl restartujte rsyslog
Dále vytvořte nový konfigurační soubor HAProxy.
Přejděte do adresáře /etc/haproxy a zálohujte konfigurační soubor dafult haproxy.
cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg.orig
Vytvořte nový konfigurační soubor haproxy:
vi /etc/haproxy/haproxy.cfg
A vložte konfiguraci HAProxy níže:
global
log 127.0.0.1 local2
maxconn 1024
uživatel haproxy
skupinový haproxy
/ soket spuštění / spuštění daemon režim správce úrovně 600 # Vytvořit sock soubor pro haproxy
výchozí
protokol globální
režim http
možnost tcplog
3 možnost
3 br /> možnost opětovné odeslání
maxconn 1024
časový limit připojení 5 000 ms
časový limit klienta 50 000 ms
> 0 sten 0 0 sten 3 mariad / br_0>## MariaDB balance lessconn – cluster naslouchající na portu 3030.
režim tcp
balance lessconn
možnost httpchk
server mariadb1 192.160:390.16 zkontrolovat port server mariadb2 192.168.1.133:3306 zkontrolujte port 9200
server mariadb3 192.168.1.134:3306 zkontrolujte zálohu portu 9200 # Vytvořte mariadb3 jako záloha – automatická replikace dat
poslouchejte statistiky 0.0.0.0:9000
## HAProxy stats webové rozhraní běžící na portu 9000 – uživatelské jméno a heslo:howtoforge.
režim http
statistiky povolit
statistiky uri /stats
statistiky oblasti HAProxy\ Statistics
statistiky auth howtoforge:howtoforge
statistiky před správcem, pokud je PRAVDAPort 3030 je port MariaDB s vyváženým zatížením, můžeme přistupovat k databázím na všech serverech MariaDB s IP vyrovnávání zatížení a tímto portem.
Port 9000 je port pro web-gui, umožňuje monitorování HAProxy z prohlížeče.
Nyní spusťte firewall, otevřete porty 9000 a 3030 a poté jej znovu načtěte:
systemctl start firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=3030/tcp
firewall- cmd --reloadSpusťte HAProxy příkazem systemctl:
systemctl start haproxy
Krok 3 – Testování HAProxy a MariaDB
A. Testování replikace
Přihlaste se na server MariaDB, přejděte do prostředí MySQL a vytvořte novou databázi z mariadb1, poté z mariadb2 a nakonec z mariadb3.
mysql -u root -p
vytvořit databázi this_mariadb1; # Spusťte toto na serveru mariadb1
vytvořte databázi this_mariadb2; # Spusťte toto na serveru mariadb2
vytvořte databázi this_mariadb3; # Spusťte to na serveru mariadb3Zkontrolujte databáze:
B. Přístup k serveru MariaDB prostřednictvím HAProxy
Nyní přistupujeme ke clusteru serverů MariaDB a databázím prostřednictvím HAProxy IP na portu 3030.
Před provedením tohoto testu povolte vzdálený přístup k serveru MariaDB vytvořením nového uživatele root s hostitelem "%".
Přihlaste se do prostředí MariaDB a vytvořte nového uživatele „root“ s heslem „aqwe123“:
mysql -u root -p
UDĚLEJTE VŠECHNA OPRÁVNĚNÍ NA *.* KOMU [email protected]'%' IDENTIFIKUJE "aqwe123";Dále přejděte do databázové tabulky 'mysql.user' prostřednictvím serveru HAProxy:
mysql -u root -p -h 192.168.1.135 -P 3030 -e "vybrat hostitele, uživatele, heslo z mysql.user"
Uživatele databázového serveru můžete vidět přístupem k IP load balanceru na portu 3030. K databázím na MySQL uzlech můžete přistupovat pomocí HAProxy IP na portu 3030.
Další test serveru:algoritmus nejmenšího spojení:
C. Přihlaste se do HAProxy Web-Gui
K monitorovacímu serveru HAProxy můžete přistupovat na portu 9000 s uživatelským jménem a heslem „howtoforge“ pro zobrazení webového uživatelského rozhraní HAProxy:
http://192.168.1.135:9000/stats
HAProxy byla úspěšně nainstalována a můžete vidět, že servery MariaDB jsou monitorovány.
Závěr
MariaDB Galera Cluster je synchronní multimaster cluster, který poskytuje vyrovnávání zátěže pro databáze MySQL. Toto je dobré řešení pro vybudování výkonného databázového systému pro váš web. MariaDB Galera Cluster podporuje úložiště xtradb a innodb, poskytuje automatickou replikaci a umožňuje automatické spojování nových uzlů. Jako load balancer můžeme použít HAProxy před databázovým clusterem. Nástroj pro vyrovnávání zatížení pomáhá distribuovat příchozí požadavky do všech databází. K monitorování databáze z HAProxy používáme bash skript clustercheck. MariaDB Galera Cluster a HAProxy je jedním z nejlepších řešení pro vybudování databázového systému s vysokou dostupností.
Virtuální hosting s PureFTPd a MySQL (včetně správy kvót a šířky pásma) na CentOS 7.0 Jak nastavit HAProxy jako Load Balancer pro Nginx na CentOS 7Cent OS