yeke.io · dokümanlar · enterprise

Yüksek Erişilebilirlik (HA)

YEKE core’u birden fazla replica ile çalıştırın. Rolling update sırasında arayüz ve API erişilebilir kalır; agent yeniden bağlanırken ilgili cluster’da kısa bir kesinti olabilir. PostgreSQL ve Enterprise lisansı gerekir.

Genel bakış

İki replica, tek Service, tek Ingress.

HA kurulumunda iki core replica’sı RollingUpdate ile çalışır. Biri güncellenirken diğeri istekleri karşılar. SQLite kullanan tek replica kurulumunda ise dosya kilidi nedeniyle Recreate kullanılır ve güncelleme kısa bir kesinti gerektirir.

Ön koşul: PostgreSQL

Tek bir lisans bayrağı ikisini birden açar.

ha-postgres Enterprise özelliği hem PostgreSQL sürücüsünü hem çok replica’lı kurulumu kapsar. HA için PostgreSQL zorunludur; birden fazla core aynı SQLite dosyasını paylaşamaz.

Gereksinimler

Kurulum için aşağıdaki dört gereksinimi hazırlayın.

  • PostgreSQL bağlantısı. YEKE_DB_URL, kurumun kendi PostgreSQL'ine — bkz. PostgreSQL bağlantısı sayfası.
  • Snapshot anahtarı Secret'tan, zorunlu. PostgreSQL modunda core anahtarı üretmez — SQLite kipindeki "core üretip veri dizinine yazar" yedeği burada yoktur. Anahtar YEKE_SNAPSHOT_KEY üzerinden dışarıdan verilmek zorundadır.
  • Headless Service. Replikalar birbirine, sahibi olmayan bir replikanın gelen bir isteği tünel sahibi olan replicaya iç vekâletle ilettiği bir mekanizmayla ulaşır; bu vekâlet pod'lara doğrudan adresle ulaşmayı gerektirir.
  • ha-postgres özelliğini açan lisans. Dosya olarak mount edilen imzalı bir lisans bloğu (YEKE_LICENSE_PATH).

Tek-node ile farklar

Tek replica ve HA kurulumunun ayarlarını karşılaştırın.

Tek-nodeHA
strategyRecreateRollingUpdate (maxUnavailable: 0, maxSurge: 1)
replicas12
Kalıcı veri diziniPVCyok — kalıcılık PostgreSQL'de
YEKE_DB_URLverilmez (SQLite)Secret'tan zorunlu
YEKE_SNAPSHOT_KEYopsiyonel (core üretebilir)Secret'tan zorunlu
Lisansgerekmezha-postgres özelliği zorunlu
readOnlyRootFilesystemyokvar — PostgreSQL modunda core dosya sistemine hiçbir şey yazmaz

Kurulum

Tek-node kurulumdan iki dosya (01-pvc.yaml, tek-node 02-core-deployment.yaml) bilerek dışarıda bırakılır.

# 1) namespace (tek-node kurulumla aynı)
kubectl apply -f deploy/kubernetes/00-namespace.yaml

# 2) PostgreSQL bağlantısı + snapshot anahtarı — İKİSİ DE ZORUNLU
kubectl -n yeke-system create secret generic yeke-core-secrets \
  --from-literal=YEKE_DB_URL="postgres://<kullanici>:<parola>@<pg-host>:5432/<db>" \
  --from-literal=YEKE_SNAPSHOT_KEY="$(openssl rand -hex 32)"

# 3) ha-postgres özelliğini açan imzalı lisans bloğu
kubectl -n yeke-system create secret generic yeke-license \
  --from-file=license.block=/yol/license.block

# 4) sürüm + host yer tutucularını doldurun
sed -i '' 's/<YEKE_VERSION>/0.51.2/' deploy/kubernetes/ha/02-core-deployment.yaml
# YEKE_PUBLIC_URL / YEKE_ALLOWED_ORIGINS (ha/02-core-deployment.yaml)
# ve host (06-ingress.yaml) — tek-node kurulumdaki AYNI adım

# 5) uygulayın: base Service + Ingress + HA dizini
kubectl apply -f deploy/kubernetes/03-core-service.yaml \
              -f deploy/kubernetes/06-ingress.yaml \
              -f deploy/kubernetes/ha/

Namespace, Service ve Ingress tek-node ile HA arasında aynı dosyalardır; Service app: yeke-core etiketiyle seçim yapar ve bu etiket bir ya da iki replikada da geçerlidir. Yalnız ha/ dizinindeki iki dosya (deployment + headless service) tek-node'un 01-pvc.yaml + 02-core-deployment.yaml ikilisinin yerine geçer; ikisi aynı anda uygulanmaz.

Sürüm geçişinde ne olur

İki farklı yüzey, iki farklı davranış.

  • HTTP/SPA yüzeyi. RollingUpdate boyunca en az bir replica her zaman istek karşılar; arayüz ve API güncelleme sırasında erişilebilir kalır.
  • Agent tüneli. Her cluster'ın tüneli tek bir replicaya (sahibe) bağlıdır. Sahip replica güncellenirken agent bağlantısı kopar ve kısa bir pencere içinde yeniden kurulur; bu pencere boyunca o cluster'a giden istekler geçici olarak başarısız olabilir.

Sınırlar

Satılan katman YEKE'dir, altındaki veritabanı değil.

  • PostgreSQL'in kendi yüksek erişilebilirliği kurumun işidir. Kümeleme, replikasyon, failover ve yedekleme: PostgreSQL bağlantısı sayfasındaki sınırın aynısı.
  • Compose kurulumu HA kapsamında değildir. Tek makinede iki replica koşturmak gerçek bir erişilebilirlik artışı vermez; HA yalnız Kubernetes deploy'unda anlamlıdır.
  • Lisanssız kurulumda hiçbir şey çalışmaz. ha-postgres olmadan PostgreSQL sürücüsünün kendisi açılmaz — bkz. lisans kapısı.

Silinen kayıtların arşivi de PostgreSQL modunda

HA'nın ön koşulu olan aynı PostgreSQL bağlantısı, uzun saklama ve arşiv özelliğinin de önkoşuludur.