Yüksek Erişebilirlik Nedir?
Yüksek Erişebilirlik ya da Yüksek Kullanılabilirlik (HA – High Availability), bir sistemin veya uygulamanın olası arızalara veya kesintilere rağmen kullanıcılar için çalışır durumda ve erişilebilir kalma yeteneğini ifade eder. Yüksek kullanılabilirliğin uygulanması, kesinti süresini en aza indirmek ve sürekli hizmet kullanılabilirliğini sağlamak için yedeklilik, hata toleransı ve yük devretme mekanizmalarının devreye alınmasını içerir.
Windows Sistemleri için Yüksek Kullanılabilirlik:
- Yük Devretme Kümelemesi: Windows Sunucu Yük Devretme Kümelemesi (WSFC), hizmetlerin ve uygulamaların yüksek düzeyde kullanılabilirliğini korumak için birden fazla sunucunun birlikte çalışmasına olanak tanır. Bir donanım veya yazılım arızası durumunda kümelenmiş sunucular arasında otomatik yük devretmeye olanak tanır.
- Ağ Yükü Dengeleme (NLB): NLB, gelen ağ trafiğini birden fazla sunucuya dağıtarak ağ tabanlı hizmetler için ölçeklenebilirliği ve hata toleransını artırır. Tek bir sunucunun aşırı yüklenmesini önlemeye yardımcı olur ve sürekli kullanılabilirlik sağlar.
- Windows Sunucu Güncelleme Hizmetleri (WSUS): Yöneticiler, WSUS’yi kullanarak, kontrolsüz güncellemeler nedeniyle beklenmedik kesinti sürelerini önlemek amacıyla Windows sunucuları için güncellemeler ve yamalar planlayabilir.
- Dağıtılmış Dosya Sistemi (DFS): DFS, dosyaları birden fazla sunucu ve konum arasında paylaşmanın bir yolunu sağlayarak, bir sunucu kullanılamaz hale gelse bile dosyalara erişim sağlar.
- Depolama Alanları Doğrudan (S2D): Windows Server’daki bu özellik, kümeleme sunucularının yerel depolamalarını paylaşmalarına olanak tanıyarak, depolama kaynakları için hata toleransı ve yüksek kullanılabilirlik sağlar.
Linux Sistemleri için Yüksek Kullanılabilirlik:
- Pacemaker: Pacemaker, Linux için açık kaynaklı, yüksek kullanılabilirliğe sahip bir küme kaynak yöneticisidir. Kaynak izleme, otomatik kurtarma, arıza durumunda yük devretme gibi hizmetler sağlar.
- Corosync ve Heartbeat: Yüksek kullanılabilirlik amacıyla küme düğümleri arasında iletişim ve koordinasyonu sağlamak için küme mesajlaşma ve kalp atışı mekanizmaları sağlayan Linux tabanlı yazılım paketleridir.
- Keepalived: Birden fazla makineye tek bir sanal IP adresi atayarak yük dengeleme ve yüksek kullanılabilirlik için basit ve sağlam olanaklar sağlamak için kullanılır.
- DRBD (Dağıtılmış Çoğaltılmış Blok Cihazı): DRBD, verilerin birden fazla Linux sunucusu arasında yansıtılmasını ve çoğaltılmasını kolaylaştırarak veri kullanılabilirliği ve yedeklilik sağlar.
Uygulamalar için Yüksek Kullanılabilirlik (Hem Windows hem de Linux):
- Yük Dengeleyiciler: Uygulama Yük Dengeleyicileri (ALB’ler), gelen trafiği bir uygulamanın birden çok örneğine dağıtarak ölçeklenebilirlik ve hata toleransı sağlar. Örnekler arasında HAProxy (Linux) ve Microsoft Azure Yük Dengeleyici (Windows) bulunur.
- Veritabanı Kümeleme: SQL Server’da (Windows) MySQL Cluster, AlwaysOn Availability Groups veya PostgreSQL’in Linux’ta yerleşik çoğaltması gibi veritabanı kümeleme çözümlerinin uygulanması, veritabanı kullanılabilirliğini ve yedekliliğini sağlar.
- Sanallaştırma Yüksek Kullanılabilirlik Özellikleri: VMware vSphere High Availability (vSphere HA) veya Hyper-V Replica gibi sanallaştırma platformları, sanal makinenin kullanılabilirliğini ve kurtarılabilirliğini sağlamak için araçlar sağlar.
- Bulut Tabanlı Yüksek Kullanılabilirlik Hizmetleri: Bulut hizmet sağlayıcıları, iş yüklerini otomatik olarak dağıtan ve çalışma süresi sağlayan AWS Auto Scaling, Azure Availability Sets ve Google Cloud’un yönetilen örnek grupları gibi yönetilen yüksek kullanılabilirlik çözümleri sunar.
VMware vSphere için Yüksek Kullanılabilirlik:
- vSphere High Availability (vSphere HA): Bir vSphere kümesindeki ESXi ana bilgisayarlarının ve VM’lerin sağlığını izler. Bir ana bilgisayar arızası durumunda vSphere HA, etkilenen VM’leri sağlıklı ana bilgisayarlar üzerinde yeniden başlatarak minimum kesinti süresini garanti eder.
- vSphere Fault Tolerance (FT): Birincil VM’nin işlemlerini yansıtan ikincil bir VM oluşturarak sürekli kullanılabilirlik sunar. Birincil VM arızalanırsa, ikincil VM anında devreye girerek kesintisiz hizmet sağlar.
- vSphere Dağıtılmış Kaynak Zamanlayıcı (DRS): Bir kümedeki ana bilgisayarlar arasındaki VM iş yüklerini dinamik olarak dengeleyerek performansı ve kaynak kullanımını optimize eder. VM’leri daha sağlıklı ana bilgisayarlara taşıyarak ana bilgisayar arızalarının azaltılmasına yardımcı olur.
- vMotion: Çalışan VM’lerin vSphere ana bilgisayarları arasında hizmet kesintisi olmadan canlı geçişini kolaylaştırır. vMotion iş yükü yönetimini, donanım bakımını ve yük dengelemeyi destekleyerek yüksek kullanılabilirliğe katkıda bulunur.
Microsoft Hyper-V için Yüksek Kullanılabilirlik:
- Hyper-V Yük Devretme Kümelemesi: Birden fazla Hyper-V ana bilgisayarının bir küme oluşturmasına olanak tanır. Bir ana bilgisayar arızalanırsa, o ana bilgisayarda çalışan VM’ler otomatik olarak küme içindeki diğer sağlıklı ana bilgisayarlara taşınabilir (yük devretme), böylece minimum düzeyde kesinti sağlanır.
- Canlı Geçiş: vMotion’a benzer şekilde, Hyper-V’deki Canlı Geçiş, çalışan VM’lerin Hyper-V ana bilgisayarları arasında kesinti olmadan taşınmasını sağlar. Hizmet kullanılabilirliğini etkilemeden yük dengelemeye ve bakıma yardımcı olur.
- Hyper-V Çoğaltma: VM’lerin ikincil bir Hyper-V ana bilgisayarına eşzamansız çoğaltılmasını sağlar. Birincil ana bilgisayar arızası durumunda yöneticiler, replika VM’ye yük devretme işlemini başlatarak kesinti süresini en aza indirebilir.
- Windows Server Yük Devretme Kümelemesi (WSFC): WSFC, yüksek düzeyde kullanılabilir VM’ler oluşturmak için Hyper-V ile birlikte kullanılabilir. Bu genellikle sürekli kullanılabilirlik gerektiren kritik uygulamalar için kullanılır.
Docker için Yüksek Erişilebilirlik Yöntemleri:
- Docker Sürü Modu:
- Yönetici Düğümü Yedekliliği: Docker Swarm kümeleri birden fazla yönetici düğümüyle yapılandırılabilir. Bir yönetici düğümü arızalanırsa, başka bir düğüm otomatik olarak görevi devralarak konteynerlerin sürekli orkestrasyonunu ve yönetimini sağlar.
- Hizmet Yedekliliği ve Çoğaltma:
- Çoğaltılmış Hizmetler: Hizmetleri birden çok düğümde çoğaltılmış örnekler olarak dağıtın. Docker Swarm, bu kopyaları küme genelinde otomatik olarak dağıtarak yüksek kullanılabilirlik sağlar. Bir düğüm başarısız olursa Swarm, diğer sağlıklı düğümlerdeki kapsayıcıları yeniden planlar.
- Yük dengeleme:
- Harici Yük Dengeleyiciler: Gelen trafiği Docker Swarm’daki sağlıklı konteynerler arasında dağıtmak için HAProxy, Traefik veya NGINX gibi harici yük dengeleyicileri kullanın, böylece dengeli yükler ve iyileştirilmiş kullanılabilirlik sağlayın.
- Otomatik Sağlık Kontrolleri ve Kendi Kendini İyileştirme:
- Sağlık Denetimleri: Konteyner sağlığını izlemek için Docker Compose veya Dockerfiles’ta durum denetimlerini tanımlayın. Docker Swarm, sağlıksız konteynerleri otomatik olarak tespit etmek ve değiştirmek için bu kontrolleri kullanır.
Kubernetes için Yüksek Erişilebilirlik Yöntemleri:
- ReplicaSet’ler ve Dağıtımlar:
- ReplicaSets: İstediğiniz sayıda kapsül replikasını korumak için ReplicaSets’i tanımlayın. Kubernetes, arızalı veya sonlandırılan bölmeleri otomatik olarak değiştirerek, belirtilen sayıda aynı bölmenin her zaman çalışmasını sağlar.
- Dağıtımlar: Güncellemeleri ve geri almaları kolayca yönetmek ve yükseltmeler sırasında uygulamanın kullanılabilirliğini sağlamak için ReplicaSets’i yöneten daha üst düzey bir soyutlama olan Dağıtımları kullanın.
- Kapsül Kesinti Bütçeleri (PDB’ler):
- PDB’ler: Gönüllü kesintiler, yükseltmeler veya bakım sırasında kullanılabilir kalması gereken minimum bölme sayısını tanımlamak ve operasyonlar sırasında belirli bir düzeyde kullanılabilirlik sağlamak için Bölme Kesinti Bütçelerini belirtin.
- Düğüm ve Pod Anti-Afinitesi:
- Benzerlik Karşıtı Kurallar: Bölmelerin aynı düğümde veya aynı uygulamadaki bölmelerle çalışmasını önlemek için benzeşme karşıtı kuralları yapılandırarak düğümler arasında dağıtım sağlayın ve hata toleransını artırın.
- Kubernetes Hizmetleri ve Yük Dengeleme:
- Hizmetler: Pod’lara erişim için kararlı bir uç nokta soyutlamak ve sağlamak için Kubernetes Hizmetlerini kullanın. Hizmetler, trafiğin otomatik olarak sağlıklı bölmelere yönlendirilmesini sağlar ve kopyalar arasında yük dengelemeyi kolaylaştırır.
- Durum Bilgili Uygulamalar için StatefulSets:
- StatefulSets: StatefulSets’i kullanarak durum bilgisi olan uygulamaları dağıtın, benzersiz tanımlayıcılar, kararlı ağ kimlikleri ve kalıcı depolama sağlayın. Bu, ölçeklendirme veya kesintiler sırasında durumu ve kullanılabilirliği korur.
- Multi-Master ve vb. Yüksek Kullanılabilirlik:
- Çoklu Ana Yapılandırma: Kontrol düzlemi bileşenleri için HA sağlamak amacıyla Kubernetes kümelerini çok ana yöneticili bir yapılandırmada kurun.
- etcd Kümesi: Küme durumunun depolanmasında tek hata noktalarını önlemek için etcd’yi (Kubernetes’in dağıtılmış anahtar/değer deposu) yüksek düzeyde kullanılabilir modda yapılandırın.