Galera kümesi içinde lider oylaması için harici bir araç kurma konusunda deneyiminiz nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Galera kümesi için lider oylaması yapan harici bir araç yapılandırma deneyimi yoktur. Galera'da liderlik, harici bir araç tarafından belirlenmez; kümedeki tüm düğümler eşittir ve aynı anda yazma isteklerini işleyebilirler (replikasyon kurallarına uyulduğu sürece). Belirli görevler (örneğin, izleme veya yönetimsel işlemler) için "lider" veya birincil düğüm seçme mekanizması genellikle uygulama seviyesinde, yük dengeleyici veya harici izleme ve orkestrasyon araçları kullanılarak uygulanır, ancak Galera bağlamında lider oylaması için yerleşik bir araç olarak değil.
Galera kümesini yönetmek ve belirli görevler için düğüm seçmek amacıyla kullanılabilir:
- ProxySQL / HAProxy: Duruma göre belirli bir düğüme trafiği yönlendirebilen yük dengeleyiciler.
- Keepalived / Pacemaker: Yüksek erişilebilirlik sağlamak için araçlar, aktif düğüme sanal IP atayabilir.
- İzleme araçları (örneğin, Prometheus + Alertmanager): Düğüm durumunu izlemek ve kararlar almak (örneğin, trafiği değiştirmek).
Galera bağlamında, şu konular daha önemlidir:
- Split-brain senaryolarını önlemek için quorum sağlamak.
- wsrep_cluster_address ve wsrep_sst_auth'un doğru yapılandırılması.
- Yeni düğümler eklerken SST (State Snapshot Transfer).
Eğer amaç, "en sağlıklı" düğümü belirlemekse, bu daha çok metriklere dayalı izleme ve seçim meselesidir, lider oylaması değil.
ProxySQL kullanarak belirli görevler için belirli bir düğüme trafik yönlendirme örneği:
-- Tüm Galera düğümlerini ProxySQL'e ekleme
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (10, 'node1', 3306), (10, 'node2', 3306), (10, 'node3', 3306);
-- Okuma sorgularını tüm düğümlere yönlendirmek için kural oluşturma (hostgroup 10)
INSERT INTO mysql_replication_hostgroups (writer_hostgroup, reader_hostgroup) VALUES (10, 10);
-- "Yönetici" düğüm için ayrı bir hostgroup oluşturma (örneğin, node1)
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (20, 'node1', 3306);
-- Belirli sorguları (örneğin, SHOW STATUS) "yönetici" düğüme yönlendirmek için kural
INSERT INTO mysql_query_rules (rule_id, active, match_digest, destination_hostgroup) VALUES (1, 1, 'SHOW STATUS', 20);
-- Değişiklikleri çalışma zamanında yükleme ve kaydetme
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;
Bu örnekte, lider için "oylama" yapmıyoruz, bunun yerine ProxySQL kullanarak trafiği belirli bir düğüme yönlendiriyoruz, bu da belirli görevler için düğüm seçimi olarak yorumlanabilir.
Keepalived kullanarak sanal IP örneği:
#!/bin/bash
# Keepalived sağlık kontrol scripti için psuedo-kod
# Bu script, her Galera düğümünde çalışır
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üğüm Senkronize (4) ve Birincil Bileşende
exit 0 # Sağlıklı
else
exit 1 # Sağlıksız
fi
# Keepalived yapılandırması için psuedo-kod (vrrp_script bloğu)
vrrp_script check_galera {
script "/etc/keepalived/scripts/check_galera.sh"
interval 2 # her 2 saniyede bir kontrol
timeout 3 # 3 saniye zaman aşımı
weight 50 # script başarılı olursa önceliği 50 artır
}
vrrp_instance VI_1 {
state BACKUP # Varsayılan durum
interface eth0 # Ağ arayüzü
virtual_router_id 51 # VRRP örneği için benzersiz ID
priority 100 # Bu düğümde öncelik (daha yüksek = daha olası MASTER)
advert_int 1 # Duyuru aralığı
authentication {
auth_type PASS
auth_pass your_password
}
virtual_ipaddress {
192.168.1.100 # Sanal IP adresi
}
track_script {
check_galera # Sağlık kontrol scriptini izleme
}
}
Burada, Keepalived bir script kullanarak Galera durumunu kontrol eder ve sadece "sağlıklı" düğüme en yüksek önceliği vererek sanal IP'yi atar, bu da yazma için tek erişim noktası sağlar. Ancak bu, Galera içinde lider oylaması sistemi değildir. Bu, aktif düğümün sanal IP için seçilmesi sistemidir.