GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvořit cluster aktivní-aktivní-aktivní s RHEL 8 a Percona MySQL

V minulosti bylo vytváření bezpečné a bezpečné služby MySQL s více hlavními servery, odolné proti chybám, těžkopádné. Vyžadovalo to několik kroků a závislých balíčků. Ke složitosti se přidala konfigurace replikace, synchronizace dat a více konfiguračních souborů. Vybudování řešení na posíleném OS, jako je Red Hat Enterprise Linux (RHEL) 8, a použití profesionálně zabalené multimaster distribuce MySQL od Percona to usnadňuje. Tato příručka vám ukáže, jak na to.

Architektonický diagram:

[ Mohlo by se vám také líbit: Udržování a vysoká dostupnost:Pokročilá témata ]

Nainstalujte software clusteru

Spusťte následující příkazy na všech třech serverech (DB1 , DB2 a DB3 ):

# yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

# percona-release enable-only pxc-80 release
# percona-release enable tools release

# yum repolist 
Updating Subscription Management repositories. 
repo id                                         repo name 
prel-release-noarch                             Percona Release release/noarch YUM repository 
pxc-80-release-x86_64                           Percona XtraDB Cluster 8.0 release/x86_64 YUM repository 
rhel-8-for-x86_64-appstream-rpms                Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) 
rhel-8-for-x86_64-baseos-rpms                   Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs) 
satellite-tools-6.8-for-rhel-8-x86_64-rpms      Red Hat Satellite Tools 6.8 for RHEL 8 x86_64 (RPMs) 
tools-release-x86_64                            Percona Tools release/x86_64 YUM repository

Protože úložiště RHEL 8 obsahují verzi MySQL, musíte k nim zakázat přístup, aby byla instalace Percona úspěšně dokončena.

# yum -y module disable mysql
# yum -y install percona-xtradb-cluster

Nakonfigurujte cluster

Na disku DB1 serveru, spusťte databázovou službu, abyste k ní měli přístup prostřednictvím klienta MySQL, abyste aktualizovali výchozí heslo a umožnili libovolnému hostiteli vzdálené připojení pro správu:

# systemctl start mysql

# grep 'temporary password' /var/log/mysqld.log
# mysql -u root -p


Změňte výchozí heslo uživatele root pomocí ALTER příkaz:

# mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'redhatPERCONA';

Povolte přihlášení z libovolného hostitele pomocí UPDATE příkaz:


# mysql> UPDATE mysql.user SET host='%' WHERE user='root';

Ukončete administraci MySQL:

# mysql> exit

Na disku DB1 serveru, zastavte službu databáze:

# systemctl stop mysql

V DB2 a DB3 servery, spusťte/zastavte službu MySQL pro vytvoření počátečních struktur souborů:

# systemctl start mysql
# systemctl stop mysql

Na všech databázových serverech v klastru (DB1 , DB2 a DB3 ) zajistěte konfigurační soubor /etc/my.cnf obsahuje následující jedinečná pole:

wsrep_cluster_address=gcomm://
wsrep_cluster_name=
wsrep_node_name=

Přidejte IP adresu každého databázového serveru. Takto klastr komunikuje a komu:

wsrep_cluster_address=gcomm://192.168.40.91,192.168.40.92,192.168.40.93

Přidejte jedinečný název clusteru. To musí být stejné na všech serverech v clusteru. To bude identifikovat cluster od ostatních clusterů:

wsrep_cluster_name=pxc-cluster

Přidejte jedinečný název uzlu a jeho IP adresu. Cluster musí mít způsob, jak identifikovat každý uzel:

wsrep_node_name=pxc-cluster-node-db1
wsrep_node_address=192.168.40.91

Spusťte tento příkaz na každém databázovém serveru, abyste se ujistili, že provedená nastavení jsou správná:

[DB1]
# grep -e address -e cluster /etc/my.cnf | grep -v \# 
wsrep_cluster_address=gcomm://192.168.40.91,192.168.40.92,192.168.40.93 
wsrep_node_address=192.168.40.91 
wsrep_cluster_name=pxc-cluster 
wsrep_node_name=pxc-cluster-node-db1

[DB2]
# grep -e address -e cluster /etc/my.cnf | grep -v \# 
wsrep_cluster_address=gcomm://192.168.40.91,192.168.40.92,192.168.40.93 
wsrep_node_address=192.168.40.92 
wsrep_cluster_name=pxc-cluster 
wsrep_node_name=pxc-cluster-node-db2

[DB3]
# grep -e address -e cluster /etc/my.cnf | grep -v \# 
wsrep_cluster_address=gcomm://192.168.40.91,192.168.40.92,192.168.40.93 
wsrep_node_address=192.168.40.93 
wsrep_cluster_name=pxc-cluster 
wsrep_node_name=pxc-cluster-node-db3

Spusťte cluster

Jakmile konfigurace vypadá dobře, dalším krokem je zavedení DB1 server. To se provádí pomocí speciální služby s názvem [email protected] :

# systemctl start [email protected]

Přihlaste se a zkontrolujte stav pomocí následujících příkazů:

# mysql -u root -p
# mysql> show status like 'wsrep%';

Hledejte wsrep_cluster_size což by mělo být 1 , protože jediným serverem v clusteru je momentálně DB1 .

Služba bootstrap generuje certifikáty zabezpečení TLS používané pro zabezpečenou komunikaci clusteru. Zkopírujte tyto soubory do /var/lib/mysql na dalších dvou databázových serverech:server-key.pem ,ca.pemserver-cert.pem

# cd /var/lib/mysql
# scp server-key.pem server-cert.pem ca.pem db2:/var/lib/mysql/
# scp server-key.pem server-cert.pem ca.pem db3:/var/lib/mysql/


Nakonfigurujte bránu firewall pro zabezpečené operace clusteru

Klastr Percona vyžaduje, aby byly otevřeny následující čtyři porty, aby správně fungovaly:3306, 4444, 4567 a 4568. Spusťte tyto příkazy brány firewall na všech třech serverech (DB1 , DB2 a DB3 ), abyste je mohli nakonfigurovat.

Ujistěte se, že firewall služba běží:

# systemctl enable firewalld
# systemctl start firewalld

Výchozí zóna je veřejná , takže pokud jste jej nezměnili, můžete požadované čtyři porty přidat takto:

# firewall-cmd --add-port 3306/tcp --zone=public --permanent
# firewall-cmd --add-port 4444/tcp --zone=public --permanent
# firewall-cmd --add-port 4567/tcp --zone=public --permanent

# firewall-cmd --add-port 4568/tcp --zone=public --permanent

Nebo, chcete-li, přidejte více portů najednou pomocí jediného příkazu:

# firewall-cmd --add-port={3306/tcp,4444/tcp,4567/tcp,4568/tcp} --zone=public --permanent


Znovu načtěte firewall service pomocí následujícího příkazu a poté vypište seznam portů, abyste potvrdili, že je služba nakonfigurována podle očekávání:

# firewall-cmd --reload

# firewall-cmd --list-ports 
3306/tcp 4444/tcp 4567/tcp 4568/tcp

Více informací o firewallu RHEL 8 naleznete zde.

Rozšiřte cluster

Nyní je čas přidat další servery do stávajícího clusteru jednoho, který je aktuálně spuštěn po zavedení. Cílem je přidat oba DB2 a DB3 do clusteru běžícího na DB1 .

Po jednom spusťte službu MySQL na každém serveru a před přesunem na další server počkejte na její dokončení.

V DB2 , zadejte:

# systemctl start mysql

Proveďte totéž v DB3 :

# systemctl start mysql

Na DB1 , tail mysql.log soubor, abyste mohli sledovat nové servery připojující se ke clusteru. To vám dá vědět, zda věci fungují podle očekávání nebo zda se během fáze připojení ke clusteru vyskytují chyby:

# tail -f /var/log/mysqld.log | grep db3

2021-04-08T17:48:25.892746Z 0 [Note] [MY-000000] [Galera] STATE EXCHANGE: got state msg: 9ea100f1-9892-11eb-af
0e-66802999478c from 0 (pxc-cluster-node-db3) 
       0: 9e07f773-9892-11eb-a4b8-7bfcd02aca9e, pxc-cluster-node-db3

2021-04-08T17:48:26.405209Z 0 [Note] [MY-000000] [Galera] Member 0.0 (pxc-cluster-node-db3) requested state tr
ansfer from '*any*'. Selected 1.0 (pxc-cluster-node-db1)(SYNCED) as donor.

2021-04-08T17:48:41.023324Z 0 [Note] [MY-000000] [Galera] 1.0 (pxc-cluster-node-db1): State transfer to 0.0 (p
xc-cluster-node-db3) complete. 
2021-04-08T17:48:46.677727Z 0 [Note] [MY-000000] [Galera] 0.0 (pxc-cluster-node-db3): State transfer from 1.0 
(pxc-cluster-node-db1) complete. 
2021-04-08T17:48:46.678022Z 0 [Note] [MY-000000] [Galera] Member 0.0 (pxc-cluster-node-db3) synced with group.

Ve výše uvedeném výstupu souboru protokolu můžete vidět, že se DB3 připojil ke clusteru, požádal o přenos stavu a úspěšně synchronizoval svá data z DB1. Dalším způsobem, jak ověřit velikost clusteru, je přihlásit se k libovolnému serveru, který je členem clusteru, a spustit tyto příkazy:

# mysql -u root -p
# mysql> show status like 'wsrep%';

Hledejte wsrep_cluster_size , což by mělo být 3 , protože všechny tři servery (DB1 , DB2 a DB3 ) se nyní připojili ke clusteru.

Hledejte wsrep_incoming_addresses , který by měl zobrazovat všechny tři IP adresy serveru. Toto je opět další způsob, jak potvrdit, že všechny servery jsou v clusteru a správně komunikují.

Testování clusterů

Nyní, když máte zprovozněný tříuzlový cluster, musíte otestovat možnosti aktivní-aktivní-aktivní.

Na serveru DB1 , vytvořte novou databázi pomocí následujícího příkazu:

# mysql -u root -p
# mysql> create database myACTIVEdb;

Na serveru DB2 nebo DB3 , spusťte následující příkazy a zkontrolujte, zda se nově vytvořená databáze zobrazuje:

# mysql -u root -p
# mysql> show databases; 
+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| myACTIVEdb         | 
| mysql              | 
| performance_schema | 
| sys                | 
+--------------------+ 
5 rows in set (0.00 sec)

Nová databáze by se měla objevit téměř okamžitě. Bez ohledu na to, na kterém serveru se provádějí zápisy, jsou data replikována na ostatní databázové servery. Gratulujeme, nyní máte tříuzlový, aktivní-aktivní-aktivní server MySQL Percona běžící na RHEL 8!

Údržba clusteru

Čas od času může jeden z databázových serverů vyžadovat údržbu, která vyžaduje restart. Před restartem byste měli vždy řádně vypnout službu MySQL:

# systemctl stop mysql

Tento příkaz může nějakou dobu trvat, protože připravuje cluster na přerušený stav. Nechte jej řádně vypnout, aby se synchronizoval a aktualizoval stav clusteru na všech serverech.

Restartujte server v rámci údržby a poté se znovu připojte ke clusteru pomocí následujícího příkazu:

# systemctl start mysql

Stav clusteru závisí na zachování kvora . Pamatujte, že vždy udržujte v provozu jeden větší než poloviční velikost clusteru. Pro skupinu tří by kvorum bylo dvě. Pro skupinu pěti by bylo kvorum tři. Pěstování klastru ze tří na pět je snadné; stačí opakovat výše uvedené kroky. Je vhodné mít v clusteru lichý počet serverů, což usnadňuje správu kvora.

Pokud je celý cluster vypnutý a je třeba jej restartovat, nezapomeňte vybrat jeden server pro spuštění clusteru. To se provádí procesem bootstrap. Například na DB1 :

# systemctl start [email protected]

Na ostatních dvou serverech se k nim po dokončení bootstrapového procesu připojte pomocí následujícího příkazu:

# systemctl start mysql

Cluster je nyní funkční a funkční.

SELinux

RHEL 8 se dodává se SELinuxem v Enforcing režimu. Red Hat, Percona a MySQL odvedly dobrou práci se SELinuxem hned po vybalení v Enforcing režimu. Není třeba provádět žádné změny. Pokud je potřeba upravit změny určitých konfiguračních parametrů Percony, můžete najít další podrobnosti na webu Percona.

[ Získejte tuto bezplatnou e-knihu:Správa clusterů Kubernetes pro figuríny. ]

Sbalit

RHEL 8 poskytuje platformu pro databázové úlohy, která je podporována a nabízí skvělý výkon. Percona odvedla skvělou práci, když zabalila snadno implementovatelnou multimaster implementaci serveru MySQL s ohledem na bezpečnostní detaily.


Linux
  1. Jak vytvořit databázi v MySQL pomocí MySQL Workbench

  2. Jak nainstalovat Lighttpd s PHP5 FastCGI a MySQL na CentOS 6 / RHEL 6

  3. Jak nainstalovat Nginx s PHP5 a MySQL na Ubuntu 11.10

  1. Jak nainstalovat Lighttpd s PHP5 a MySQL na Ubuntu 11.04

  2. Jak nastavit LogAnalyzer s Rsyslog a MySQL

  3. Jak aktivovat a připojit 2 skupiny svazků se stejnými názvy v CentOS/RHEL

  1. Jak nainstalovat Percona XtraDB Cluster pro MySQL na Debian 8

  2. Jak nainstalovat Lighttpd s PHP5 FastCGI a MySQL na Fedoře 16

  3. Jak nainstalovat Nginx s PHP-FPM a MySQL na Fedora 16 „Verne“