SQL Server Sunucuların Network Konfigurasyonu ve Always ON Senkronizasyonunu Farklı Bir Ethernet Kartından Yaptırmak

17 Kas by NURULLAH ÇAKIR

SQL Server Sunucuların Network Konfigurasyonu ve Always ON Senkronizasyonunu Farklı Bir Ethernet Kartından Yaptırmak

Bu makaleyi okumadan önce Always ON’un çalışma mantığını anlamak için “SQL Server Always ON AG(Availability Group) Oluşturmak” isimli makalemi okumanızı tavsiye ederim.

 

Always ON’da 3 tip network trafiği vardır.

 

  1. Uygulamaların veritabanına eriştiği trafik. Client olarak geçer.
  2. Always ON’un primary veritabanından secondary veritabanına senkronizasyonu sağladığı trafik. Endpoint’ler üzerinden geçer. “SQL Server Always ON AG(Availability Group) Oluşturmak” isimli makalemde endpoint’lerin nasıl oluşturulduğundan bahsetmiştim.
  3. Heartbeat trafiği. Windows Cluster, Cluster’daki node’ların ayakta olup olmadığı ve connection kabul edip etmediği kontrol eder ve Primary node yanıt vermiyorsa otomatik failover işlemi gerçekleştirilir.

 

Best Practice olarak Microsoft bu 3 network için 3 ayrı ethernet kartı tavsiye eder. Tabi her ethernet kartı kendi içinde teaming(aşağıda anlattım) ile yedekli olmalıdır ve ethernet omurgasına çıkarken de yedekli olmalıdır(aşağıda anlattım). Yani her sunucuda 3×4=12 tane ethernet portu olması gerekir.

 

 

  1. Client trafiği için uygulamaların yaptığı trafik yüksekse 10gbps x 4 tane
  2. Always On Senkronizasyon trafiği için uygulamaların yaptığı trafik yüksekse 10gbps x 4 tane
  3. Heartbeat trafiği için 1gbps x 4 tane

 

 

Teaming Nedir?

 

Sunucu üzerindeki 2 tane ethernet portu üzerinden kurumunuzdaki network switch’e bağlandığınızı düşünün. Bu 2 ethernet portunu teaming yaparsanız biri bozulsa trafik diğerinden devam eder. 2 side çalışıyorsa trafik 10+10=20gbps hızda yapılabilir. Yani hem yedek hem de yapılabilecek trafiğin ikiye katlanması olarak düşünebilirsiniz.

 

Ethernet omurgasına çıkarken yedekli olmak nedir?

 

Teaming yaparken kurumunuzdaki network switch’inize(omurga olarak geçer) nasıl bağlanacağınızı yukarda anlattım. Peki bağlandığınız omurga genel olarak bozulursa ne olacak? Bu yüzden kurumlarda birbiri ile yedekli çalışabilen 2 tane network switch vardır. Biri bozulursa diğeri devreye girer. Bu şekilde Teaming ile 1 port 2 ye çıkarken, omurgada da yedekliliği sağlayabilmek için ihtiyacımız olan port 2 iken 4’e çıkar.

 

 

SQL Server kullanılacak bir sunucu alacaksanız sunucu üzerindeki ethernet port’larının sayısını ve kapasitesini yukardaki açıklamaları okuduktan sonra belirlemenizi tavsiye ederim.

 

Failover Cluster Manager’ı açarak sizin cluster’ınızdaki network konfigurasyonuna bakabilirsiniz. Aşağıdaki gibi Failover Cluster Manager üzerinden Networks sekmesine gelirseniz windows cluster’da tanımlı ethernet kartlarını görebilirsiniz. Bizim örneğimizde bir tanesi Cluster Only(heartbeat trafiği için), diğeri Cluster And Client(heartbeat,alwayson senkronizasyon ve client trafiği)

 

 

 

Cluster Only olana sağ tıklayıp properties derseniz aşağıdaki ekran gelecektir.

 

 

 

  • Allow cluster network communication on this network derseniz bu ethernet üzerinde heartbeat trafiğinin geçmesini sağlamış olursunuz. Hemen altındaki checkbox’ı işaretlemezseniz ve ok’e basarsanız Cluster only olarak gözükecektir.
  • Yukarıdaki maddeyle beraber Allow clients to connect through this network checkbox’ını da işaretlerseniz client ve always on trafiğine de izin vermiş olacaksınız.
  • Do not allow cluster network communication on this network’ü seçerseniz heartbeat trafiğini engellemiş olursunuz. Bu seçeneği çok önermiyorum. Heartbeat için Cluster only, client trafiği için Cluster and Client şeklinde ayarlayabilirsiniz.

Normal şartlar altında Always On için farklı bir ethernet kartı ayarlamadıysanız always on’un senkronizasyon trafiği Cluster and Client olarak ayarladığınız ethernet kartı üzerinden yapılacaktır. Ama always on ‘un senkronizasyon trafiğini ayırmak bazı durumlarda daha faydalı olabilir.

 

  • Always On senkronizasyon trafiğini ölçülebilir hale getirirsiniz. Network trafiğini izleyen third party uygulamalarla bu trafiklerin history’sini izleyebilirsiniz. Anlık olarak task manager’da da görebilirsiniz.
  • Senkronizasyona özel bir port ayırdığınız için çok yoğun transaction içeren uygulamalarınızın performansı artabilir.(Artabilir diyorum çünkü bu işlemi sadece test ortamında gerçekleştirdim. Gerçek ortamdaki performans artışını henüz ölçme fırsatım olmadı.)

SQL Server Always ON kullanan bir sunucunun örnek network bağlantı şekli nasıl olur?

2 sunucunuz var ve bu 2 sunucu üzerinde always on kullanıyorsunuz.

Heartbeat için her sunucu üzerinde 4 tane 1 gbps kapasitesinde port ayırdınız.(2 si teaming ile primary network switch’e gidiyor. Diğer ikiside teaming ile yedek network switch’e gidiyor.) Heartbeat bağlantısı için yukarda anlattığım gibi Cluster only yapmanız gerekiyor.

Heartbeat ve client trafiği için 4 tane 10 gbps kapasitesinde port ayırdınız.(2 si teaming ile primary network switch’e gidiyor. Diğer ikiside teaming ile yedek network switch’e gidiyor.) Bu ethernet kartı için hem heartbeat hemde client trafiği için Cluster and client yapmanız gerekiyor.

Always On senkronizasyon trafiği için 4 tane 10 gbps kapasitesinde port ayırdınız.(2 si teaming ile primary network switch’e gidiyor. Diğer ikiside teaming ile yedek network switch’e gidiyor.) Bu ethernet kartı için Do not allow cluster network communication on this network’ü seçebilirsiniz. Ama teaming ile verilen IP’yi always on endpoint’lerine göstermelisiniz.

Bu işlem için endpoint’i aşağıdaki script yardımıyla oluştururken LISTENER_IP = ALL kısmındaki ALL yerine teaming ile verilen IP’yi yazmanız gerekiyor. IP’yi yazarken parantez içinde yazmanız gerekiyor. Örnek-> (10.6.132.45)

USE [master]
GO
CREATE ENDPOINT [Hadr_endpoint] 
	STATE=STARTED
	AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
	FOR DATA_MIRRORING (ROLE = ALL, AUTHENTICATION = WINDOWS NEGOTIATE
, ENCRYPTION = REQUIRED ALGORITHM AES)
GO

Eğer endpoint’inizi daha önce oluşturduysanız SSMS üzerinden aşağıdaki gibi endpoint’inizin create script’ini alarak Create ifadesi yerine ALTER yazarak ve ALL kısmına yukarda anlattığım şekilde IP girerek bu işlemi gerçekleştirebilirsiniz.

 

 

 

Eğer endpoint’inizin IP’sini drop create yöntemi ile değiştirirseniz bu işlemi yaptıktan sonra secondary veritabanınız not synchronizing mode’a düşecektir. Tekrar senkronize duruma geçmesi için secondary veritabanınızı aşağıdaki gibi önce suspend mode’a alıp,

 

 

Daha sonra da aşağıdaki gibi resume data movement demelisiniz,

 

 

Bu işlemleri always on’un primary ve secondary replikalarında yapmalısınız. Her sunucuda always on için tanımladığınız ethernet kartının IP’si neyse o sunucuda çalışacak endpoint için o IP’yi vermelisiniz.

Örneğin;

Primary olacak Test1 sunucunuzda always on için tanımlanan ethernet kartının teaming IP’si(teaming yapmadıysanız IP’si) 10.6.123.41       Bu sunucudaki primary instance’ın endpoint’ini yukarda anlattığım şekilde alter ederken ALL kısmına (10.6.123.41) yazmalısınız.

Secondary olacak Test2 sunucunuzda always on için tanımlanan ethernet kartının teaming IP’si(teaming yapmadıysanız IP’si) 10.6.123.42       Bu sunucudaki secondary instance’ın endpoint’ini yukarda anlattığım şekilde alter ederken ALL kısmına (10.6.123.42) yazmalısınız.

Bu makalede Ethernet Altyapısından bahsettim. “SQL Server Sunucuların Kullandığı SAN Altyapısı” makalemde de SQL Server Sunucuların storage’lar ile arasındaki SAN altyapısından bahsedeceğim.

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir