Bu makalede varsayılan olarak, bir Failover Cluster her node’un sağlıklı olduğundan emin olmak için bir “sinyal” ve “yanıt” mekanizması kullanır. Her node, clusterdaki diğer tüm nodelara sinyal gönderir ve ardından yanıtları bekler. Yanıtların alınma süresine ve yanıtların kendisine bağlı olarak, Cluster bir node’un sağlıklı olup olmadığını veya başarısız olup olmadığını belirler. Burada anlatılan mekanizma heartbeat (kalp atışı) mekanizmasıdır.
Bu işlem Failover işleminin tetiklenmesi için olan Layer 1 katmanıdır. Aşağıda belirtilen yapılar node-to-node heartbeat ayarlarıdır. Bu işlem failover işlemi için en alt katmandır.
Varsayılan sinyal ve yanıt zaman aşımları, Cluster’ın farklı ağ gecikmelerine sahip ortamlarda çalışabilmesi için tasarlanmıştır. Ancak, ortamınızın gereksinimlerine bağlı olarak bu zaman aşımlarını değiştirmek isteyebilirsiniz.
Bu ayarın düşük seçilmesi failover işleminin kısa süre içerisinde tetiklenmesine sebebiyet verecektir. Aşağıdaki komut ile kurulu olan cluster üzerinde ayarları görebiliriz.
get-cluster | f1 *subnet*

Yukarıdaki kavramların ne işe yaradığına değinmek gerekirse:
Eğer cluster’daki sunucular (node’lar) aynı ağda değilse, yani farklı IP grubundalarsa, birbirlerinden “yaşıyor musun?” mesajına daha uzun süre cevap beklenir. Yani sistem hemen “bu sunucu kapandı” demez, biraz daha bekler.
Kısacası:
Eğer cluster node’ları farklı subnet’lerdeyse, heartbeat için belirlenen zaman aşımı süresi daha uzundur. Böylece ağ gecikmeleri yüzünden node yanlışlıkla başarısız olarak işaretlenmez.
- CrossSubnetDelay:Farklı subnet’teki node’lara heartbeat gönderme aralığıdır. Varsayılan değer 1000 ms = 1 saniye’dir.
- CrossSubnetThreshold: Farklı subnet’teki node’dan kaç cevap gelmezse down sayılacağıdır. Belirtilen sayı kez yanıt gelmezse başarısız kabul edilir. Varsayılan değer 5’tir.
Aşağıdaki ayarlar, aynı ağdaki düğümler arasındaki sinyaller için kullanılır. Bu, aynı alt ağdaki bir düğüm için toplam zaman aşımının varsayılan olarak 1000ms * 10 = 10 saniye olduğu anlamına gelir.
- SameSubnetDelay: Aynı subnet’teki node’lara heartbeat gönderme aralığıdır. Milisaniye cinsindendir. Yani aynı ağdaki node’a her belirli saniyede bir kontrol sinyali gider.
- SameSubnetThreshold: Aynı subnet’teki node’dan kaç heartbeat cevabı alınmazsa node down kabul edilir. Örnek vermek gerekirse 20 demek → 20 kez üst üste cevap gelmezse başarısız sayılır.
Peki bu ayarları ne zaman değiştirmeliyiz. Clusterdaki nodeların ağ bağlantılarının kısa süreliğine kesildiği durumlarda ilgili node’un failover olmasının önüne geçmek için bu değer artırılabilir. Bu sebepten aynı ağdan olan clusterların failover işleminin geç olmasını istiyorsak bu değer artırılabilir.
Bu ayarları PowerShell kullanarak değiştirebilirsiniz. Örneğin, CrossSubnetDelay ve CrossSubnetThreshold değerlerini değiştirmek için aşağıdaki komutu kullanırsınız:
(Get-Cluster).SameSubnetDelay = 2000
(Get-Cluster).SameSubnetThreshold = 20

Bu, toplam zaman aşımını 2000ms * 10 = 20 saniyeye çıkaracaktır.
Bu ayarları değiştirirken dikkatli olunması gerekmektedir. Bu değerleri çok yüksek ayarlamak, clusterın gerçek bir node arızasını tespit etmesinin çok daha uzun süreceği anlamına gelir. Bu, uzun süreli hizmet kesintilerine yol açabilir. Bu ayarları yalnızca, ağ gecikmenizin veya paket kaybınızın neden olduğu sorunları gidermeniz gerektiğinde değiştirin. Cluster üzerinden anormal bir durum olduğunda geçici süreliğine değiştirilmesi gerekmektedir.
Bu makalede Windows Server Failover Cluster’da Heartbeat(Network Threshold) Ayarlarının yapılandırılması konusunu görmüş olduk. Başka bir makalede görüşmek dileğiyle..
Ey iman edenler, sabırla ve namazla yardım dileyin. Gerçekten Allah, sabredenlerle beraberdir.
Bakara Suresi, 153. Ayet
