Sobes.tech
Senior

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.