Galera klasterində lider üçün səs vermək üçün xarici alətlərin qurulmasında təcrübəniz nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Galera klasterində lider üçün xarici səsvermə vasitəsinin qurulması təcrübəsi yoxdur. Galera-da liderlik xarici vasitə ilə müəyyən edilmir; bütün klaster düyünləri bərabər hüquqludur və eyni zamanda yazma sorğularını işlədə bilərlər (replikasiya qaydalarına riayət etməklə). "Lider" və ya müəyyən tapşırıqlar üçün ilkin düyünü seçmə mexanizmi (məsələn, monitorinq və ya inzibati əməliyyatlar üçün) adətən tətbiq səviyyəsində, yük balanslaşdırıcı və ya xarici monitorinq və orkestrasiya vasitələri ilə həyata keçirilir, lakin Galera-nın daxili vasitəsi kimi deyil lider üçün səsvermə.
Galera klasterini idarə etmək və xüsusi tapşırıqlar üçün düyünü seçmək üçün aşağıdakı vasitələr istifadə oluna bilər:
- ProxySQL / HAProxy: Trafiki müəyyən düyünə yönəldə bilən yük balanslaşdırıcılar.
- Keepalived / Pacemaker: Yüksək mövcudluğu təmin edən vasitələr, virtual IP ünvanını aktiv düyünə təyin edə bilərlər.
- Monitorinq vasitələri (məsələn, Prometheus + Alertmanager): Düyünlərin vəziyyətini izləmək və qərar qəbul etmək (məsələn, trafiki keçirmək).
Galera kontekstində daha vacib olan:
- Split-brain vəziyyətlərinin qarşısını almaq üçün kvorum.
- wsrep_cluster_address və wsrep_sst_auth düzgün konfiqurasiya etmək.
- Yeni düyünlər əlavə edilərkən SST (State Snapshot Transfer).
Əgər məqsəd "ən sağlam" düyünü inzibati əməliyyatlar üçün müəyyən etməkdirsə, bu daha çox monitorinq və metriklərə əsaslanan seçim məsələsidir, lider üçün səsvermə deyil.
ProxySQL istifadə edərək trafiki bir düyuna yönəltmək nümunəsi (xüsusi tapşırıqlar üçün):
-- Bütün Galera düyünlərini ProxySQL-ə əlavə etmək
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (10, 'node1', 3306), (10, 'node2', 3306), (10, 'node3', 3306);
-- Oxuma sorğularını bütün düyünlərə yönəltmək üçün qayda yaratmaq (hostgroup 10)
INSERT INTO mysql_replication_hostgroups (writer_hostgroup, reader_hostgroup) VALUES (10, 10);
-- İdarəetmə üçün ayrıca hostgroup yaratmaq (məsələn, node1)
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (20, 'node1', 3306);
-- Müəyyən sorğuları (məsələn, SHOW STATUS) idarəetmə düyününə yönəltmək üçün qayda
INSERT INTO mysql_query_rules (rule_id, active, match_digest, destination_hostgroup) VALUES (1, 1, 'SHOW STATUS', 20);
-- Dəyişiklikləri runtime-ə yükləmək və saxlamaq
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;
Bu nümunədə, lider üçün səs vermirik, əksinə trafiki müəyyən düyuna yönəltmək üçün ProxySQL istifadə edirik, bu da müəyyən tapşırıqları yerinə yetirmək üçün düyünü seçmək kimi qəbul edilə bilər.
Keepalived istifadə edərək virtual IP üçün nümunə:
#!/bin/bash
# Keepalived üçün healthcheck skriptinin pseudo-kodu
# Bu skript hər Galera düyündə işləyəcək
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
# Düyü sinxronizasiya olunub (4) və əsas hissədədir
exit 0 # Sağlam
else
exit 1 # Sağlam deyil
fi
# Keepalived konfiqurasiyası üçün pseudo-kod (vrrp_script bloku)
vrrp_script check_galera {
script "/etc/keepalived/scripts/check_galera.sh"
interval 2 # hər 2 saniyədə bir yoxlama
timeout 3 # 3 saniyə sonra timeout
weight 50 # skript uğurlu olarsa prioriteti 50 artır
}
vrrp_instance VI_1 {
state BACKUP # Standart vəziyyət
interface eth0 # Şəbəkə interfeysi
virtual_router_id 51 # VRRP instansiyası üçün unikal ID
priority 100 # Bu nodun prioriteti (yüksək = daha çox MASTER olma ehtimalı)
advert_int 1 # Elan intervalı
authentication {
auth_type PASS
auth_pass your_password
}
virtual_ipaddress {
192.168.1.100 # Virtual IP ünvanı
}
track_script {
check_galera # Sağlamlıq yoxlama skriptini izləyir
}
}
Burada Keepalived, Galera vəziyyətini yoxlayan skript istifadə edir və yalnız "sağlam" nodu ən yüksək prioritetlə virtual IP ilə təyin edir, bu da yazma üçün tək giriş nöqtəsi təmin edir, lakin bu, Galera daxilində lider üçün səsvermə sistemi deyil. Bu, virtual IP üçün aktiv nodu seçmək sistemidir.