Milyen tapasztalatai vannak egy külső eszköz beállításában a vezető szavazására a Galera klaszterben?
sobes.tech MI
Válasz az MI-től
Galera klaszterben vezető szavazási eszköz konfigurálásának tapasztalata nem létezik. A Galera-ban a vezető szerepe nem külső eszközzel kerül meghatározásra; minden csomópont egyenrangú, és egyidejűleg képes írni kéréseket feldolgozni (a replikációs szabályok betartásával). A "vezető" vagy elsődleges csomópont kiválasztásának mechanizmusa bizonyos feladatokra (például monitoring vagy adminisztratív műveletek) általában alkalmazás szinten, load balancer vagy külső monitoring és orkestrációs eszközök segítségével valósul meg, de nem beépített eszközként a vezető szavazására a Galera működése során.
A Galera klaszter kezelése és egy adott feladatra kiválasztott csomópont használatához a következők használhatók:
- ProxySQL / HAProxy: Terheléselosztók, amelyek a forgalmat egy adott csomópontra irányíthatják annak állapota alapján.
- Keepalived / Pacemaker: Magas rendelkezésre állást biztosító eszközök, amelyek virtuális IP címet rendelnek az aktív csomóponthoz.
- Monitoring eszközök (például Prometheus + Alertmanager): A csomópontok állapotának figyelése és döntéshozatal (például forgalom átváltása).
A Galera kontextusában fontosabb biztosítani:
- A split-brain szcenáriók elkerülése érdekében kvórum.
- A wsrep_cluster_address és a wsrep_sst_auth helyes konfigurálása.
- SST (State Snapshot Transfer) az új csomópontok hozzáadásakor.
Ha az a feladat, hogy meghatározzuk a "leg egészségesebb" csomópontot adminisztratív műveletekhez, ez inkább monitoring és metrikák alapján történő kiválasztás kérdése, nem pedig vezető szavazás a Galera-ban.
Példa a ProxySQL használatára a forgalom egy adott csomópontra irányítására (speciális feladatokhoz):
-- Minden Galera csomópont hozzáadása ProxySQL-hez
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (10, 'node1', 3306), (10, 'node2', 3306), (10, 'node3', 3306);
-- Szabály létrehozása az olvasási kérdések minden csomópontra irányítására (hostgroup 10)
INSERT INTO mysql_replication_hostgroups (writer_hostgroup, reader_hostgroup) VALUES (10, 10);
-- Külön hostgroup létrehozása az "adminisztratív" csomópontnak (például, node1)
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (20, 'node1', 3306);
-- Szabály létrehozása bizonyos kérdések (például, SHOW STATUS) irányítására az "adminisztratív" csomópontba (hostgroup 20)
INSERT INTO mysql_query_rules (rule_id, active, match_digest, destination_hostgroup) VALUES (1, 1, 'SHOW STATUS', 20);
-- Változások betöltése futásidőbe és mentése
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;
Ebben a példában nem "szavazunk" a vezetőre, hanem a ProxySQL-t használjuk a forgalom irányítására egy adott csomópont felé, amit a kiválasztásnak lehet értelmezni bizonyos feladatok végrehajtására.
Keepalived példája virtuális IP használatára:
#!/bin/bash
# Pseudo-kód a Keepalived egészségügyi ellenőrző szkriptjéhez
# Ez a szkript minden Galera csomóponton fut
GALERA_STATUS=$(mysql -h 127.0.0.1 -e "SHOW STATUS LIKE 'wsrep_local_state';" | grep wsrep_local_state | awk '{print $2}')
GALERA_QUORUM=$(mysql -h 127.0.0.1 -e "SHOW STATUS LIKE 'wsrep_cluster_status';" | grep wsrep_cluster_status | awk '{print $2}')
if [ "$GALERA_STATUS" -eq 4 ] && [ "$GALERA_QUORUM" == "Primary" ]; then
# A csomópont szinkronizált (4) és elsődleges komponensben van
exit 0 # Egészséges
else
exit 1 # Egészségtelen
fi
# Keepalived konfiguráció pseudo-kódja (vrrp_script blokk)
vrrp_script check_galera {
script "/etc/keepalived/scripts/check_galera.sh"
interval 2 # minden 2 másodpercben
timeout 3 # 3 másodperc után timeout
weight 50 # növeli a prioritást 50-vel, ha a script sikeres
}
vrrp_instance VI_1 {
state BACKUP # Alapértelmezett állapot
interface eth0 # Hálózati interfész
virtual_router_id 51 # Egyedi azonosító a VRRP példányhoz
priority 100 # Prioritás ezen a csomóponton (magasabb = nagyobb valószínűséggel MASTER)
advert_int 1 # Hirdetési intervallum
authentication {
auth_type PASS
auth_pass your_password
}
virtual_ipaddress {
192.168.1.100 # Virtuális IP cím
}
track_script {
check_galera # Egészségügyi ellenőrző szkript követése
}
}
Itt a Keepalived egy szkriptet használ a Galera állapotának ellenőrzésére, és csak a "egészséges" csomópontnak adja a virtuális IP-t a legmagasabb prioritással, ez egyetlen hozzáférési pontot biztosít az íráshoz, de ez nem belső szavazási rendszer a Galera-ben a vezető kiválasztására. Ez egy aktív csomópont kiválasztási rendszer a virtuális IP számára.