İÇİNDEKİLER
- •Sunucularınızı konsolide etmeyi mi düşünüyorsunuz?
- •Neden Birden Fazla Instance Kurulur?
- •Riskler
- •Birden Fazla Instance Kaçınılmazsa
- •Belleği paylaştırın
- •CPU’yu değerlendirin
- •Diski ve TempDB’yi ayırın
- •Sabit port ve belgeleme
- •Alternatifler
- •Sunucudaki Instance’ları Görmek
- •Konsolidasyonu ölçümle planlayın
Aynı Windows sunucusuna birden fazla SQL Server instance’ı kurmak (instance stacking) cazip görünür: tek işletim sistemi, tek sunucu, bazen tek lisans. Farklı uygulamalar farklı collation, farklı sürüm ya da ayrı sysadmin yetkisi istediğinde de akla ilk gelen çözümdür. Ancak aynı donanımı paylaşan instance’lar, bir gün birinin diğerinin kaynaklarını tüketmesiyle sonuçlanabilir; yamalar ve yeniden başlatmalar da hepsini birden etkiler.
Bu yazıda instance stacking’in gerçek avantajlarını, risklerini, birden fazla instance kaçınılmazsa nasıl yönetileceğini ve alternatifleri anlatıyoruz.
Sunucularınızı konsolide etmeyi mi düşünüyorsunuz?
Aryasoft, iş yüklerinizi ölçer; instance, veritabanı ve sanal makine düzeyinde en uygun konsolidasyon modelini ve lisans etkisini çıkarır.
Neden Birden Fazla Instance Kurulur?
- Farklı sunucu ayarları: Sunucu collation’ı, tempdb yapılandırması ya da sp_configure ayarları uygulamalar arasında çakışıyorsa.
- Yetki ayrımı: Bir uygulama ekibi sysadmin yetkisi istiyor ve diğer veritabanlarına erişmemesi gerekiyorsa.
- Farklı sürümler: Eski bir uygulama yalnızca eski bir SQL Server sürümünü destekliyorsa.
- Maliyet: Tek bir Windows lisansı ve yönetilecek tek bir sunucu.
Lisans açısından: fiziksel bir sunucu ya da sanal makine çekirdek bazında lisanslandığında, o işletim sistemi ortamında istediğiniz sayıda instance çalıştırabilirsiniz. Ayrıntılar lisanslama rehberimizde.
Riskler
- Bellek rekabeti: Her instance, kendisine bir sınır verilmezse kullanılabilir belleğin tamamını almaya çalışır. İki instance aynı belleği isteyince biri diğerini sıkıştırır ve işletim sistemi de baskı altına girer.
- CPU ve disk paylaşımı: Bir instance’ta çalışan ağır bir rapor ya da index bakımı, diğerindeki kritik uygulamayı yavaşlatır. Disk gecikmesi tüm instance’lara yansır.
- Ortak bakım penceresi: Windows yaması ya da sunucu yeniden başlatması tüm instance’ları aynı anda etkiler.
- Tek arıza noktası: Donanım ya da işletim sistemi sorunu tüm uygulamaları birlikte durdurur.
- Sorun giderme zorluğu: “Sunucu yavaş” şikâyetinde hangi instance’ın neden olduğunu bulmak daha uzun sürer.
- Port ve ağ yönetimi: Adlandırılmış instance’lar dinamik port kullanır; güvenlik duvarı ve bağlantı dizeleri için sabit portlar planlamak gerekir.
Birden Fazla Instance Kaçınılmazsa
Belleği paylaştırın
Her instance için max server memory ayarlayın. Tüm instance’ların toplamı, işletim sistemine ve diğer servislere yeterli pay kalacak şekilde fiziksel belleğin altında olmalıdır. Kritik instance’a min server memory ile bir taban da verebilirsiniz.
-- Her instance'ta ayrı ayrı çalıştırın; değerleri iş yüküne göre belirleyin
EXEC sys.sp_configure N'show advanced options', 1;
RECONFIGURE;
EXEC sys.sp_configure N'max server memory (MB)', 40960; -- örnek: 64 GB sunucuda 1. instance
RECONFIGURE;
Uyarı
max server memory ayarlanmamış iki instance aynı sunucuda çalışıyorsa, yoğun saatlerde biri diğerinin belleğini sıkıştırır ve sayfalama başlar. Bu, instance stacking’de en sık gördüğümüz performans sorunudur ve çoğu zaman yalnızca bir instance’ın yavaşlığı olarak fark edilir.
CPU’yu değerlendirin
Çoğu durumda MAXDOP’u her instance için ayrı ayarlamak yeterlidir. Kritik bir instance’ın CPU’sunu kesin olarak korumak gerekiyorsa process affinity kullanılabilir; ancak bu, boşta kalan çekirdeklerin diğer instance tarafından kullanılmasını da engeller ve dikkatli bir planlama gerektirir.
Diski ve TempDB’yi ayırın
Mümkünse her instance’ın veri, log ve TempDB dosyalarını ayrı volume’lara yerleştirin; en azından TempDB’leri paylaşmayın.
Sabit port ve belgeleme
Her instance’a sabit bir port atayın, güvenlik duvarı kurallarını buna göre yazın ve hangi uygulamanın hangi instance’ta olduğunu belgeleyin.
Alternatifler
| Seçenek | Ne zaman uygun |
|---|---|
| Tek instance, çok veritabanı | Uygulamalar aynı sürümde ve sunucu ayarlarında anlaşabiliyorsa; en verimli ve yönetimi en kolay model |
| Ayrı sanal makineler | Yalıtım, farklı bakım pencereleri ve kaynak garantisi gerekiyorsa |
| Instance stacking | Farklı collation, sürüm ya da yetki gereksinimi varsa ve kaynaklar dikkatle paylaştırılabiliyorsa |
| Konteynerler | Geliştirme ve test ortamlarında hızlı ve izole kurulumlar için |
İpucu
Üretim ortamında varsayılan tercih, işletim sistemi başına tek instance ve gerekiyorsa çok sayıda veritabanıdır. Instance stacking’i ancak somut bir ihtiyaç (collation, sürüm, yetki) varsa ve kaynak paylaşımı planlandıysa seçin; geliştirme ve test sunucularında ise rahatlıkla kullanılabilir.
Sunucudaki Instance’ları Görmek
# Bu sunucudaki tüm SQL Server Database Engine servisleri
Get-Service -Name 'MSSQLSERVER', 'MSSQL$*' -ErrorAction SilentlyContinue |
Select-Object Name, Status, StartType
Kullanılmayan instance’ları ve servisleri (Reporting Services, Analysis Services, Browser) kapatmak, kaynakları serbest bırakır ve saldırı yüzeyini küçültür. Ayrıntılar yapılandırma rehberimizde.
İlgili Yazılar
SQL Server Danışmanlığı
Konsolidasyonu ölçümle planlayın
Aryasoft’un kıdemli DBA ekibi iş yüklerinizi ve kaynak kullanımınızı ölçer; instance, veritabanı ya da sanal makine düzeyinde en uygun konsolidasyon modelini lisans etkisiyle birlikte çıkarır ve uygular.