Azure Virtual Machine Scale Set
Bir çok sunucudan oluşan bir web siteniz olduğunu hayal edin. Bir load balancer arkasında gelen taleplere cevap verirler. Peki daha fazla sunucuya ihtiyacınız olursa ne yapacaksınız veya sunucular üzerindeki trafiğin en az olduğu zamanlarda kullanılmayan sunucuların kapanmasını istemez misiniz? İşte tam da burada Azure’da Virtual Machine Scale Set bizim yardımımıza koşuyor. Sanal sunucularınızı ister manuel ister belirleyeceğiniz kurallara göre ölçeklendirip hem ihtiyaç anında taleplere cevap verecek sunucular oluşturuyor hem de kullanılmayan sunucuları kapatarak maliyetlerden sizi kurtarıyor.
Ölçekleme, yatay ve dikey olarak ikiye ayrılıyor. Yatay ölçekleme, sunucularınızın bulunduğu kümeye yeni sunucular ekleyerek load balancer üzerinden yükün diğer sunuculara dağıtılmasıdır. Genel itibariyle web sunucularında çok iş görüyor. Dikey ölçekleme ise, sunucu kaynaklarının (CPU, RAM vs.) artırılmasıdır. Bu ölçekleme tipi ise veritabanı gibi kaynak tüketime çok olan sunucular üzerinde kullanışlıdır.
Bir uygulama üzerinden Azure tarafındaki ölçeklendirme nasıl oluyor görelim. Her zamanki gibi bu işlemleri gerçekleştirmek için bir Azure hesabınız olmalı. Ücretsiz bir hesap alabilirsiniz. Ya da benim gibi eğer öğrenci iseniz bir öğrenci hesabı üzerinden ilerleyebilirsiniz.
Azure Portal üzerinden Cloud Shell’i açalım.
Yeni bir kaynak grubu yaratalım.
az group create --location westus2 --name olcekleme
Ölçekleme için bir Virtual Machine Scale Set (VMSS) oluşturuyoruz. Set’in oluşturulacağı kaynak grubumuzun ismini yazdık. VMSS’e bir isim verdik. Ben nginx yüklü bir imaj kullandım. Cloud-init ile boş bir imajın üzerine de nginx yüklenebilir. Ancak o başka bir makalenin konusu J upgrade-policy-mode değişkeni sunucuların nasıl güncelleneceğini belirtiyor. Automatic’de bütün set aynı anda güncelleniyor. Bu durumda kesinti oluyor. Rolling’de sunucular sırayla güncelleniyor. Manual da ise kendimiz güncelliyoruz. Güncellemeden kastımız sadece işletim sistemi güncellemesi değil, barındırdıkları uygulamalar üzerindeki güncellemelerde bu işleme dahildir. Bu güncellemeler bir extension dosyası ile yapılmaktadır. Son olarak VM’lere erişim için kullanıcı adı ve parola belirliyoruz.
az vmss create --resource-group olcekleme --name webserverset --image al-tamamunitedtradingcontractingcompany:ubuntu_nginx:plan1:18.04.0 --upgrade-policy-mode automatic --admin-username testuser --admin-password Q1w2e3r4t5!*
VMSS sadece VM’lerin kurulumunu yapmıyor. Portaldan da kontrol ettiğimizde hem VM Set hem de load balancer kurulumu gerçekleştirilmiş.
Load Balancer’da 80 portu için bir Healt Probe oluşturalım. Bu şekilde load balancer, sunucuların 80 portunu kontrol ederek talepleri yönlendirecek.
az network lb probe create --lb-name webserversetLB --resource-group olcekleme --name webserverhealth --port 80 --protocol Http --path /
Oluşturduğumuz VM setine trafiğin yönlenmesi için load balancer da bir kural yazıyoruz.
az network lb rule create --resource-group olcekleme --name webserverrule --lb-name webserversetLB --probe-name webserverhealth --backend-pool-name webserversetlbbepool --backend-port 80 --frontend-ip-name loadbalancerfrontend --frontend-port 80 --protocol tcp
Portaldan kontrol ettiğimizde 2 VM’imizi görüyoruz. Aynı zamanda load balancerda overview bölümünden Public IP’yi görebilirsiniz.
Public IP’yi tarayıcınızla açtığınızda nginx varsayılan ekranını görebilirsiniz.
Manuel Ölçekleme
Haftanın belirli günlerinde setiniz çok fazla trafik alıyor ve sunucularınız bu taleplere cevap vermekte zorlanıyor. Bu gibi bir durumda dakikalar içerisinde yeni bir sunucu açarak diğer makineleriniz üzerindeki yükü azaltarak daha verimli çalışmalarını sağlayabilirsiniz. Bu sayıyı portal üzerinden de değiştirebilirsiniz.
az vmss scale --name webserverset --resource-group olcekleme --new-capacity 3
3 üncü sunucuya ihtiyacınız kalmadığında kapasite sayısı 2 yaparak VM’lerin bir tanesini kapatabilirsiniz.
Otomatik Ölçekleme
Ölçeklemeye server setimiz içerisindeki Scaling menüsünden ulaşabilirsiniz. Eğer belirli bir tarih veya dönemde iş yükünüzün artacağını biliyorsanız ölçeklemenizi zamana göre belirleyebilirsiniz. Örneğin hafta içi mesai saatlerinde vm sayısının 4 olmasını isteyebilirsiniz. Belirlediğiniz saatlerde 4 adet VM çalışırken diğer saatlerde fazla olan 2 VM silinerek kaldırılacaktır.
Sunucuların metriklerini kullanarak bir ölçekleme yapabilirsiniz. Örneğin sunucuların CPU kullanımı %80’i geçerse VM setine 1 adet sunucu ekle diyebilirsiniz. Birden fazla kural ekleyerek daha keskin sınırlarda belirleyebilirsiniz.
Faydalı olması dileğiyle,
Eline sağlık.
Bilgi paylaşımı için teşekkürler.