Apache Cassandra ile N katmanlı uygulama

Azure DNS
Azure Load Balancer
Azure Monitor
Azure Virtual Machines
Azure Virtual Network

Bu başvuru mimarisi, veri katmanı için Linux üzerinde Apache Cassandra kullanarak N katmanlı bir uygulama için yapılandırılmış sanal makinelerin (VM) ve sanal ağın nasıl dağıtıldığını gösterir.

Mimari

Diagram that shows the N-tier architecture using Microsoft Azure.

Bu mimarinin bir Visio dosyasını indirin.

İş Akışı

Mimari aşağıdaki bileşenlere sahiptir.

Genel

  • Kaynak grubu. Kaynak grupları Azure kaynaklarını gruplayarak yaşam süresi, sahip veya diğer ölçütlere göre yönetilebilmeleri için kullanılır.

  • Kullanılabilirlik alanları. Kullanılabilirlik alanları , bir Azure bölgesi içindeki fiziksel konumlardır. Her bölge bağımsız güç, soğutma ve ağ ile bir veya daha fazla veri merkezinden oluşur. Vm'leri bölgeler arasında yerleştirerek uygulama, bir bölge içindeki hatalara dayanıklı hale gelir.

Ağ ve yük dengeleme

  • Sanal ağ ve alt ağlar. Her Azure VM, alt ağlara bölünebilen bir sanal ağa dağıtılır. Her katman için ayrı bir alt ağ oluşturun.

  • Uygulama ağ geçidi. Application Gateway bir katman 7 yük dengeleyicidir. Bu mimaride HTTP isteklerini web ön ucuna yönlendirir. Application Gateway ayrıca, uygulamayı yaygın açıklardan ve güvenlik açıklarından koruyan bir web uygulaması güvenlik duvarı (WAF) sağlar.

  • Yük dengeleyiciler. Ağ trafiğini web katmanından iş katmanına dağıtmak için Azure Standart Load Balancer kullanın.

  • Ağ güvenlik grupları (NSG). Sanal ağ içindeki ağ trafiğini kısıtlamak için NSG'leri kullanın. Örneğin, burada gösterilen üç katmanlı mimaride veritabanı katmanı web ön ucundan gelen trafiği kabul etmez, yalnızca iş katmanından ve yönetim alt ağından gelen trafiği kabul etmez.

  • DDoS Koruması. Azure platformu dağıtılmış hizmet reddi (DDoS) saldırılarına karşı temel koruma sağlasa da DDoS azaltma özelliklerini geliştiren Azure DDoS Ağ Koruması'nı kullanmanızı öneririz. Güvenlikle ilgili dikkat edilmesi gerekenler bölümüne bakın.

  • Azure DNS. Azure DNS, DNS etki alanları için bir barındırma hizmetidir. Microsoft Azure altyapısını kullanarak ad çözümlemesi sağlar. Etki alanlarınızı Azure'da barındırarak DNS kayıtlarınızı diğer Azure hizmetlerinde kullandığınız kimlik bilgileri, API’ler, araçlar ve faturalarla yönetebilirsiniz.

Sanal makineler

  • Apache Cassandra veritabanı. Veri katmanında yüksek kullanılabilirlik sağlayarak çoğaltmaya ve yük devretmeye olanak tanır.

  • OpsCenter. Cassandra kümesini izlemek için DataStax OpsCenter gibi bir izleme çözümü dağıtın.

  • Sıçrama kutusu. Kale burcu ana bilgisayarı olarak da bilinir. Ağ üzerinde yer alan ve yöneticilerin diğer VM’lere bağlanmak için kullandıkları güvenli bir VM’dir. Sıçrama kutusunun sadece güvenli bir listede yer alan genel IP adreslerinden gelen uzak trafiğe izin veren bir NSG’si vardır. NSG, uzak masaüstü (RDP) trafiğine izin vermelidir.

Öneriler

Gereksinimleriniz, burada açıklanan mimariden farklı olabilir. Bu önerileri bir başlangıç noktası olarak kullanın.

Sanal makineler

VM'leri yapılandırmayla ilgili öneriler için bkz . Azure'da Linux VM çalıştırma.

Sanal ağ

Sanal ağı oluşturduğunuzda, her alt ağdaki kaynaklarınızın kaç IP adresi gerektirdiğini belirleyin. CIDR gösterimini kullanarak gerekli IP adresleri için yeterince büyük bir alt ağ maskesi ve ağ adresi aralığı belirtin. Standart özel IP adresi blokları (10.0.0.0/8, 172.16.0.0/12 ve 192.168.0.0/16) dahilinde bir adres alanını kullanın.

Daha sonra sanal ağ ile şirket içi ağınız arasında bir ağ geçidi ayarlamanız gerekmesi durumunda şirket içi ağınızla çakışmayan bir adres aralığı seçin. Sanal ağı oluşturduktan sonra adres aralığını değiştiremezsiniz.

Alt ağları tasarlarken işlev ve güvenlik gereksinimlerini göz önünde bulundurun. Aynı katmandaki veya roldeki tüm VM’ler, güvenlik sınırı olabilecek aynı alt ağa eklenmelidir. Sanal ağları ve alt ağları tasarlama hakkında daha fazla bilgi için bkz. Azure Sanal Ağları planlama ve tasarlama.

Application Gateway

Application Gateway'i yapılandırma hakkında bilgi için bkz . Application Gateway yapılandırmasına genel bakış.

Yük dengeleyiciler

VM'leri doğrudan İnternet'te kullanıma sunma. Bunun yerine, her VM'ye özel bir IP adresi verin. İstemciler Application Gateway ile ilişkilendirilmiş IP adresini kullanarak bağlanır.

Ağ trafiğini sanal makinelere yönlendirmek için yük dengeleyici kuralları tanımlayın. Örneğin, HTTP trafiğini etkinleştirmek için ön uç yapılandırmasından 80 numaralı bağlantı noktasını arka uç adres havuzundaki 80 numaralı bağlantı noktasıyla eşleyen bir kural oluşturun. Bir istemci 80 numaralı bağlantı noktasına bir HTTP isteği gönderdiğinde, yük dengeleyici kaynak IP adresini içeren bir karma algoritması kullanarak arka uç IP adresi seçer. İstemci istekleri tüm VM'ler arasında dağıtılır.

Ağ güvenlik grupları

Katmanlar arasında trafiği kısıtlamak için NSG kurallarını kullanın. Örneğin, yukarıda gösterilen üç katmanlı mimaride web katmanı doğrudan veritabanı katmanıyla iletişim kurmaz. Bunu zorunlu kılmak için veritabanı katmanı, web katmanı alt ağından gelen trafiği engellemelidir.

  1. Sanal ağdan gelen tüm trafiği reddeder. (Kuralda VIRTUAL_NETWORK etiketini kullanın.)
  2. İş katmanı alt ağından gelen trafiğe izin verin.
  3. Veritabanı katmanı alt ağından gelen trafiğe izin verin. Bu kural, veritabanı çoğaltması ve yük devretme için gereken veritabanı VM'leri arasında iletişime izin verir.
  4. Sıçrama kutusu alt ağından ssh trafiğine (bağlantı noktası 22) izin verin. Bu kural; yöneticilerin, sıçrama kutusundan veritabanı katmanına bağlanmasını sağlar.

İlk kuraldan daha yüksek önceliğe sahip 2 - 4 kuralları oluşturarak geçersiz kılarlar.

Cassandra

Üretim amaçlı kullanım için DataStax Enterprise’ı öneririz ancak bu öneriler tüm Cassandra sürümleri için geçerlidir. DataStax’i Azure’da çalıştırma hakkında daha fazla bilgi için bkz. Azure için DataStax Enterprise Dağıtım Kılavuzu.

Düğümleri rafa duyarlı modda yapılandırın. Hata etki alanlarını cassandra-rackdc.properties dosyasındaki raflarla eşleyin.

Kümenin önünde bir yük dengeleyici bulundurmanıza gerek yoktur. İstemci, kümedeki düğüme doğrudan bağlanır.

Bu mimarinin dağıtım betikleri, küme içi iletişim (dedikodu) için çekirdek düğümünü başlatmak için ad çözümlemesini kullanır. Ad çözümlemesini etkinleştirmek için dağıtım, Cassandra düğümleri için A kayıtları içeren bir Azure Özel DNS bölgesi oluşturur. Başlatma betiklerinize bağlı olarak, bunun yerine statik IP adresini kullanabilirsiniz.

Dekont

Azure Özel DNS şu anda genel önizleme aşamasındadır.

Sıçrama kutusu

Genel İnternet'ten uygulama iş yükünü çalıştıran VM'lere ssh erişimine izin verme. Bunun yerine, bu VM'lere tüm ssh erişimi sıçrama kutusundan gelmelidir. Bir yönetici, sıçrama kutusunda oturum açar ve sonra sıçrama kutusundan diğer VM’de oturum açar. Sıçrama kutusu İnternet'ten gelen ssh trafiğine izin verir, ancak yalnızca bilinen, güvenli IP adreslerinden gelen trafiğe izin verir.

Sıçrama kutusunun en düşük performans gereksinimleri vardır, bu nedenle küçük bir VM boyutu seçin. Sıçrama kutusu için bir genel IP adresi oluşturun. Sıçrama kutusunu diğer VM’lerle aynı sanal ağa ancak ayrı bir yönetim alt ağına yerleştirin.

Sıçrama kutusunun güvenliğini sağlamak için, yalnızca güvenli bir genel IP adresleri kümesinden ssh bağlantılarına izin veren bir NSG kuralı ekleyin. Diğer alt ağların NSG'lerini, yönetim alt ağından gelen ssh trafiğine izin verecek şekilde yapılandırın.

Dikkat edilmesi gereken noktalar

Ölçeklenebilirlik

Ölçek kümeleri

Web ve iş katmanları için, bir kullanılabilirlik kümesine ayrı VM'ler dağıtmak yerine Sanal Makine Ölçek Kümeleri kullanmayı göz önünde bulundurun. Ölçek kümesi, bir dizi özdeş VM'yi dağıtmayı ve yönetmeyi ve performans ölçümlerine göre VM'leri otomatik ölçeklendirmeyi kolaylaştırır. VM’lerin üzerindeki yük arttıkça yük dengeleyiciye otomatik olarak ek VM’ler eklenir.

Bir ölçek kümesinde dağıtılmış VM'leri yapılandırmanın iki temel yolu vardır:

  • Vm dağıtıldıktan sonra yapılandırmak için uzantıları kullanın. Bu yaklaşımda, yeni VM örneklerinin başlatılması uzantı içermeyen bir VM ile karşılaştırıldığında daha uzun sürebilir.

  • Özel bir disk görüntüsü ile yönetilen disk dağıtma. Bu seçenek daha hızlı dağıtılabilir. Ancak, görüntüyü güncel tutmanızı gerektirir.

Daha fazla bilgi için bkz . Ölçek kümeleri için tasarım konuları.

Bahşiş

Kullanacağınız herhangi bir otomatik ölçeklendirme çözümünü çok önceden üretim düzeyi iş yükleriyle test edin.

Abonelik sınırları

Her Azure aboneliğinin bölge başına en fazla VM sayısı dahil olmak üzere varsayılan limitleri vardır. Bir destek isteği göndererek limiti artırabilirsiniz. Daha fazla bilgi için bkz. Azure aboneliği ile hizmet limitleri, kotalar ve kısıtlamalar.

Application Gateway

Application Gateway, sabit kapasite modunu veya otomatik ölçeklendirme modunu destekler. Sabit kapasite modu, tutarlı ve öngörülebilir iş yüklerine sahip senaryolar için kullanışlıdır. Değişken trafiği olan iş yükleri için otomatik ölçeklendirme modunu kullanmayı göz önünde bulundurun. Daha fazla bilgi için bkz . Otomatik Ölçeklendirme ve Alanlar arası yedekli Application Gateway v2.

Performans verimliliği

Azure VM'lerinde Cassandra'dan en iyi performansı elde etmek için Azure VM'lerinde Apache Cassandra'yı çalıştırma sayfasındaki önerilere bakın.

Kullanılabilirlik

Kullanılabilirlik alanları tek bir bölge içinde en iyi dayanıklılığı sağlar. Daha da yüksek kullanılabilirliğe ihtiyacınız varsa uygulamayı iki bölgeye çoğaltmayı göz önünde bulundurun.

Tüm bölgeler kullanılabilirlik alanlarını desteklemez ve tüm VM boyutları tüm bölgelerde desteklenmez. Bir bölge içindeki her VM boyutu için desteklenen bölgeleri bulmak için aşağıdaki Azure CLI komutunu çalıştırın:

az vm list-skus --resource-type virtualMachines --zone false --location <location> \
    --query "[].{Name:name, Zones:locationInfo[].zones[] | join(','@)}" -o table

Bu mimariyi kullanılabilirlik alanlarını desteklemeyen bir bölgeye dağıtırsanız, her katmanın VM'lerini bir kullanılabilirlik kümesinin içine yerleştirin. Aynı kullanılabilirlik içindeki VM'ler yedeklilik için birden çok fiziksel sunucuya, işlem raflarına, depolama birimlerine ve ağ anahtarlarına dağıtılır. Ölçek kümeleri, örtük bir kullanılabilirlik kümesi gibi davranan yerleştirme gruplarını otomatik olarak kullanır.

Kullanılabilirlik alanlarına dağıtım yaparken Azure Load Balancer'ın Standart SKU'su ve Application Gateway'in v2 SKU'su kullanın. Bu SKU'lar alanlar arası yedekliliği destekler. Daha fazla bilgi için bkz.

Tek bir Application Gateway dağıtımı, ağ geçidinin birden çok örneğini çalıştırabilir. Üretim iş yükleri için en az iki örnek çalıştırın.

Cassandra kümesi

Cassandra kümesi için yük devretme senaryoları, uygulama tarafından kullanılan tutarlılık düzeylerine ve çoğaltma sayısına bağlıdır. Cassandra'da tutarlılık düzeyleri ve kullanım için bkz . Veri tutarlılığını yapılandırma ve Cassandra: Çekirdek ile kaç düğümle konuşulur? Cassandra'da veri kullanılabilirliği, uygulama ve çoğaltma mekanizması tarafından kullanılan tutarlılık düzeyine göre belirlenir. Cassandra’da çoğaltma için bkz. NoSQL Veritabanlarında Veri Çoğaltma Açıklaması.

Durum araştırmaları

Application Gateway ve Load Balancer vm örneklerinin kullanılabilirliğini izlemek için sistem durumu yoklamalarını kullanır.

  • Application Gateway her zaman bir HTTP yoklaması kullanır.
  • Load Balancer HTTP veya TCP'yi test edebilir. Genel olarak, bir VM bir HTTP sunucusu çalıştırıyorsa, bir HTTP yoklaması kullanın. Aksi takdirde TCP kullanın.

Yoklama bir zaman aşımı süresi içinde bir örneğe ulaşamazsa, ağ geçidi veya yük dengeleyici bu VM'ye trafik göndermeyi durdurur. Yoklama denetlemeye devam eder ve VM yeniden kullanılabilir hale gelirse VM'yi arka uç havuzuna döndürür.

HTTP yoklamaları, belirtilen yola bir HTTP GET isteği gönderir ve http 200 yanıtlarını dinler. Bu yol, kök yol ("/") veya uygulamanın durumunu denetlemek için bazı özel mantık uygulayan bir sistem durumu izleme uç noktası olabilir. Uç nokta anonim HTTP isteklerine izin vermelidir.

Sistem durumu yoklamaları hakkında daha fazla bilgi için bkz:

Sistem durumu yoklaması uç noktası tasarlama hakkında dikkat edilmesi gerekenler için bkz . Sistem Durumu Uç Noktası İzleme düzeni.

Maliyet iyileştirme

Maliyetleri tahmin etmek için Azure Fiyatlandırma Hesaplayıcısı'nı kullanın. Burada dikkat edilmesi gereken diğer bazı noktalar bulunmaktadır.

Sanal makine ölçek kümeleri

Sanal makine ölçek kümeleri tüm Linux VM boyutlarında kullanılabilir. Yalnızca dağıttığınız Azure VM’lerin yanı sıra depolama ve ağ gibi, kullanılan, temel alınan ek altyapı kaynakları için ücretlendirilirsiniz. Sanal Makine Ölçek Kümeleri hizmetinde artımlı ücretlendirme yoktur.

Tek VM fiyatlandırma seçenekleri için bkz. Linux VM fiyatlandırması.

Yük dengeleyiciler

Yalnızca yapılandırılmış yük dengeleme ve giden kuralları için ücretlendirilirsiniz. Gelen NAT kuralları ücretsizdir. Yapılandırılmış herhangi bir kural yoksa Standart Load Balancer için saatlik bir ücret alınmaz.

Daha fazla bilgi için Microsoft Azure İyi Oluşturulmuş Mimari Çerçevesi makalesindeki maliyet bölümüne bakın.

Güvenlik

Azure’daki sanal ağlar birer trafik yalıtımı sınırdır. Tek bir sanal ağdaki VM'ler, farklı bir VNet'teki VM'lerle doğrudan iletişim kuramaz. Aynı VNet’teki VM’ler, trafiği kısıtlamak için ağ güvenlik grupları (NSG) oluşturmadığınız sürece birbiriyle iletişim kurabilir. Daha fazla bilgi için bkz. Microsoft bulut hizmetleri ve ağ güvenliği.

Yük dengeleyici kuralları, gelen İnternet trafiğinin hangi arka uca ulaşabileceğini tanımlar. Bununla birlikte, yük dengeleyici kuralları güvenli IP listelerini desteklemediğinden, belirli genel IP adreslerini bir güvenilen adresler listesine eklemek istiyorsanız alt ağa bir NSG ekleyin.

DMZ. İnternet ile Azure sanal ağı arasında bir DMZ oluşturmak için bir ağ sanal gereci (NVA) eklemeyi deneyin. NVA; güvenlik duvarı, paket inceleme, denetim ve özel yönlendirme gibi ağ ile ilgili görevleri gerçekleştirebilen bir sanal gereci tanımlamak için kullanılan genel bir terimdir. Daha fazla bilgi için bkz. Azure ile İnternet arasında DMZ uygulama.

Şifreleme. Bekleyen hassas verileri şifreleyin ve veritabanı şifreleme anahtarlarını yönetmek için Azure Key Vault’u kullanın. Key Vault, şifreleme anahtarlarını donanım güvenlik modüllerinde (HSM’ler) depolayabilir. Veritabanı bağlantı dizesi gibi uygulama gizli dizilerinin Key Vault'ta depolanması da önerilir.

DDoS koruması. Azure platformu varsayılan olarak temel DDoS koruması sağlar. Bu temel koruma, Azure altyapısının bir bütün olarak korunmasını hedefler. Temel DDoS koruması otomatik olarak etkinleştirilse de Azure DDoS Ağ Koruması'nın kullanılmasını öneririz. Ağ Koruması, tehditleri algılamak için uygulamanızın ağ trafiği desenlerine göre uyarlamalı ayarlamayı kullanır. Bu, altyapı genelindeki DDoS ilkeleri tarafından farkında olunmayan DDoS saldırılarına karşı risk azaltmaları uygulamasına olanak tanır. Ağ Koruması ayrıca Azure İzleyici aracılığıyla uyarı, telemetri ve analiz sağlar. Daha fazla bilgi için bkz . Azure DDoS Koruması: En iyi yöntemler ve başvuru mimarileri.

Operasyonel mükemmellik

Tüm ana kaynaklar ve bağımlılıkları bu mimaride aynı sanal ağda olduğundan, bunlar aynı temel iş yükünde yalıtılır. Bu durum, iş yükünün belirli kaynaklarını bir DevOps ekibiyle ilişkilendirmeyi kolaylaştırır, böylece ekip bu kaynakların tüm yönlerini bağımsız olarak yönetebilir. Bu yalıtım, DevOps Teams ve Hizmetlerinin sürekli tümleştirme ve sürekli teslim (CI/CD) gerçekleştirmesini sağlar.

Ayrıca, farklı dağıtım şablonlarını kullanabilir ve bunları Azure DevOps Services ile tümleştirerek dakikalar içinde farklı ortamlar sağlayabilirsiniz. Örneğin, senaryolar veya yük testi ortamları gibi üretim ortamlarını yalnızca gerektiğinde çoğaltarak maliyet tasarrufu sağlayabilirsiniz.

Bu senaryoda sanal makineleriniz, Apache Cassandra gibi belirli ek yazılımları yükleme olanağı sunduğundan Sanal Makine Uzantıları kullanılarak yapılandırılır. Özel Betik Uzantısı özellikle sanal makinede rastgele kodun indirilmesine ve yürütülmesine olanak tanıyarak Bir Azure VM'nin İşletim Sistemi'nin sınırsız özelleştirmesine olanak tanır. VM Uzantıları yalnızca VM oluşturma zamanında yüklenir ve yürütülür. Başka bir deyişle, İşletim Sistemi daha sonraki bir aşamada yanlış yapılandırılırsa, onu doğru durumuna geri taşımak için el ile müdahale gerekir. Bu sorunu gidermek için Yapılandırma Yönetimi Araçları kullanılabilir.

Altyapınızın performansını analiz etmek ve iyileştirmek, sanal makinelerinizde oturum açmadan ağ sorunlarını izlemek ve tanılamak için Azure İzleyici'yi kullanmayı göz önünde bulundurun. Uygulama Analizler aslında Azure İzleyici'nin bileşenlerinden biridir ve tam Azure ortamınızın durumunu doğrulamak için size zengin ölçümler ve günlükler sağlar. Azure İzleyici, altyapınızın durumunu izlemenize yardımcı olur.

Bir uygulamanın veri katmanının düşük performansı ciddi sonuçlara neden olabileceğinden, yalnızca uygulama kodunuzu destekleyen işlem öğelerinizi değil veri platformunuzu da , özellikle de veritabanlarınızı izlediğinizden emin olun.

Uygulamaların çalıştığı Azure ortamını test etmek için, uygulama koduyla aynı mekanizmalar aracılığıyla sürüm denetimi yapılıp dağıtılmalıdır, ardından DevOps test paradigmaları kullanılarak test edilebilir ve doğrulanabilir.

Daha fazla bilgi için Microsoft Azure İyi Mimari Çerçevesi'nin Operasyonel Mükemmellik bölümüne bakın.

Sonraki adımlar