Millist kogemust teil on välise tööriista seadistamisel Galera klastri liidri hääletamiseks?
sobes.tech AI
Vastus AI-lt
Ei ole kogemust välise tööriista seadistamiseks, mis oleks mõeldud juhtide hääletamiseks Galera klastris. Galera juhtimine ei määrata välise tööriista abil; kõik sõlmed on võrdsed ja saavad samaaegselt töödelda kirjutamisnõudeid (järgides replikatsiooni reegleid). "Juhi" või primaarse sõlme valiku mehhanism teatud ülesannete jaoks (näiteks monitooring või administratiivsete toimingute teostamine) on tavaliselt rakenduse, koormuse jaoturi või kolmanda osapoole monitooringu ja orkestreerimise tööriistade tasandil, mitte sisseehitatud tööriist juhtide hääletamiseks Galera kontekstis.
Galera klastrit ja sõlme valikut spetsiifiliste ülesannete jaoks saab hallata järgmiste vahenditega:
- ProxySQL / HAProxy: koormuse jaotamise vahendid, mis suudavad suunata liiklust kindlale sõlmele selle oleku põhjal.
- Keepalived / Pacemaker: tööriistad kõrge kättesaadavuse tagamiseks, mis võivad määrata virtuaalse IP-aadressi aktiivsele sõlmele.
- Monitooringu tööriistad (näiteks Prometheus + Alertmanager): võimaldavad jälgida sõlmede olekut ja teha otsuseid (näiteks liikluse ümberlülitamise kohta).
Galera kontekstis on oluline tagada:
- Kvorum, et vältida split-brain stsenaariume.
- Õige wsrep_cluster_address ja wsrep_sst_auth seadistamine.
- SST (State Snapshot Transfer) protsess, kui lisatakse uusi sõlmi.
Kui ülesandeks on määrata "kõige tervem" sõlm administratiivsete operatsioonide jaoks, on see pigem monitooringu ja metrikate põhjal valiku küsimus, mitte juhtide hääletamine Galera.
Näide ProxySQL kasutamisest liikluse suunamiseks ühe sõlme juurde (spetsiifiliste ülesannete jaoks):
-- Kõigi Galera sõlmede lisamine ProxySQL-i
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (10, 'node1', 3306), (10, 'node2', 3306), (10, 'node3', 3306);
-- Reegli loomine lugemisnõuete suunamiseks kõigile sõlmedele (hostgroup 10)
INSERT INTO mysql_replication_hostgroups (writer_hostgroup, reader_hostgroup) VALUES (10, 10);
-- Eraldi hostgrupi loomine "administraator" sõlmele (näiteks node1)
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (20, 'node1', 3306);
-- Reegli loomine, mis suunab teatud päringud (näiteks SHOW STATUS) "administraator" sõlmele (hostgroup 20)
INSERT INTO mysql_query_rules (rule_id, active, match_digest, destination_hostgroup) VALUES (1, 1, 'SHOW STATUS', 20);
-- Muudatuste laadimine jooksvalt ja salvestamine
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;
LOAD MYSQL REPLICATION HOSTGROUPS TO RUNTIME;
SAVE MYSQL REPLICATION HOSTGROUPS TO DISK;
Selles näites me ei "hääleta" juhi poolt, vaid kasutame ProxySQL-i liikluse suunamiseks kindlale sõlmele, mis võib olla tõlgendatav kui valik teatud ülesannete täitmiseks.
Näide Keepalived kasutamisest virtuaalse IP aadressi jaoks:
#!/bin/bash
# Pseudo-koodi tervise kontrolli skript Keepalived jaoks
# See skript töötab iga Galera sõlme peal
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
# Sõlm on sünkroniseeritud (4) ja peamises grupis
exit 0 # Tervislik
else
exit 1 # Mittetervislik
fi
# Pseudo-koodi Keepalived konfiguratsioonile (vrrp_script blokk)
vrrp_script check_galera {
script "/etc/keepalived/scripts/check_galera.sh"
interval 2 # iga 2 sekundi järel kontroll
timeout 3 # 3 sekundi jooksul aegumine
weight 50 # prioriteedi tõstmine 50 võrra, kui skript õnnestub
}
vrrp_instance VI_1 {
state BACKUP # vaikeseisund
interface eth0 # võrguliides
virtual_router_id 51 # unikaalne VRRP instantsi ID
priority 100 # prioriteet selles sõlmes (kõrgem = tõenäolisem MASTER)
advert_int 1 # reklaami intervall
authentication {
auth_type PASS
auth_pass teie_parool
}
virtual_ipaddress {
192.168.1.100 # virtuaalne IP aadress
}
track_script {
check_galera # jälgib tervise kontrolli skripti
}
}
Siin kasutab Keepalived skripti Galera oleku kontrollimiseks ja määrab virtuaalse IP ainult "tervislikule" sõlmele kõrgeima prioriteediga, võimaldades omada ühte ühenduspunkti kirjutamiseks klastrisse, kuid see ei ole hääletussüsteem sisemiselt Galera. See on aktiivse sõlme valiku süsteem virtuaalse IP jaoks. Minu kogemus on seotud nende mehhanismide seadistamise ja hooldusega, et tagada kõrge kättesaadavus ja liikluse haldamine Galera klasterites.