VMware NSX Advanced Load Balancer (Avi) Service Engine Group Oluşturma

Merhaba arkadaşlar,

Bu anlatımımda sizlere VMware Avi üzerinde Service Engine Group nasıl oluşturulur ve nelere dikkat etmemiz gerektiğini anlatacağım. Bir önceki anlatımımda sizlere Avi hakkında genel bilgiler vermiştim. Öncelikle ilgili yazımı incelemenizi tavsiye ederim:

Üstte linkini paylaştığım yazıyı okuduğunuzu düşünerek anlatımıma devam edeceğim. Service Engine Group oluşturmak için alttaki menüye giriş yapıyoruz:

Infrastructure-> Cloud Resources-> Service Engine Group

Select Cloud:” bölümünden Service Engine oluşturmak istediğimiz Cloud’ı seçiyoruz ve “Create” butonuna basıyoruz:

Bu aşamada karşımıza 2 adet menü çıkmaktadır. Buradaki seçenekleri sırasıyla elimden geldiğinde anlatmaya çalışacağım:

  • Basic Settings
  • Advenced

Basic Settings:

Adından da anlayabileceğimiz gibi basit, temel ayarlar buradan yapılmaktadır. Buradaki seçenekler daha çok Service Engine Group’taki sanal makinelerin kapasitelerini ve HA özelliklerini belirlediğimiz seçeneklerdir.

  • Service Engine Group Name: Buradan Service Engine Group’a isim vermekteyiz. Bunu sadece Virtual Service oluştururken ve Service Engine Groups bölümünde kullanmaktayız. Bu şekilde dememin sebebi Advenced bölümünde prefix bölümünde verdiğimiz ismin vCenter’da oluşan vm isimlerinde geçmesidir. Group Name Avi dışında görünmemektedir.
  • High Availability Mode: Bu bölümde Service Engine’ların hangi yüksek erişilebilirlik modunda kullanılacağını seçmekteyiz. Bu bölümü biraz önce belirttiğim ve üstte linkini paylaştığım yazımda “Avi Service Engine Group Nedir?” bölümünde detaylı olarak anlatmıştım. Orayı detaylı olarak inceleyebilirsiniz En yüksek performans için Active/Active ve Distributed seçeneklerini seçebilirsiniz.
  • VS Placement across Service Engines: Buradan Virtual Servicelerin Service Enginelar üzerinde nasıl dağıtılacağını seçiyoruz. Compact seçersek bunun varsayılan değeri 10 dur. Bunu bir sonraki maddede anlatacağım Virtual Services per Service Engine bölümünden değiştirebilirsiniz. Yani Service Engine Groupta 3 tane Service Engine olduğunu varsayalım. Bir virtual service oluşturduğumuda sadece 1 service engine üzerinde çalışacaktır. Diğer 2 Service Engine boşta duracaktır. Ta ki 2. virtual service oluşturulana kadar. 11. virtual service boştaki service engine’a atanacak ve o da dolana kadar 3. service engine boşta bekleyecektir. Ama Distributed seçersek tüm virtual serviceler tüm service enginelarda çalışacak ve daha yüksek kapasiteye sahip olacaksınız. Evet yanlış anlamadınız. Active/Active ve Distributed seçildiği zaman inanılmaz kapasitelere ulaşabilirsiniz. Ama burada dikkat etmeniz gereken önemli nokta, düşük ihtimal de olsa uygulamalarınız Distributed seçeneğini desteklemiyor olabilir. Bu yüzden Compact seçeneğini seçmeniz gerekebilir.
  • Virtual Services per Service Engine: Bu bölüm bir önceki madde ile bağlantılıdır. Tek bir Service Engine’a yerleştirilebilecek maksimum Virtual Service sayısını buradan belirlemekteyiz.
  • Service Engine Self-Election: Buradan eğer Service Enginelar ile Avi Controller makineleri arasında bağlantı kesilirse birincil Service Engine seçimini SE’ler kendi aralarında yapabilirler mi onu seçiyoruz. Bunu aktif ettiğinizde dikkat etmeniz gereken şey NSX’te Distributed Firewall’da Service Enginelar arasında TCP 9001 Portları arasındaki trafiğe izin vermeniz gerekmektedir.
  • Max Number of Service Engines: Oluşturduğumuz Service Engine Group içerisinde en fazla kaç adet SE olacağını belirlediğimiz alan. Auto scale yaparken belirlediğimiz bu sayıyı aşmayacaktır.
  • Memory per Service Engine, vCPU per Service Engine ve Disk per Service Engine: Bu üç başlıkta oluşan her bir Service Engine’ın disk cpu ve ram miktarını ayarlıyoruz. Buranın basit bir matematiği vardır. Eğer Ram miktarını artırdıysanız, disk miktarını da artırmak zorundasınızdır. Bunun hesabı (Ram*2)+5GB şeklindedir.
  • Memory for Caching: Cache yapmak için bir önceki adımda belirlediğimiz Service Engine ram miktarından yüzde kaç ayrılacağının seçildiği bölüm. Varsayılanda %10 gelmektedir. Geriye kalan %90 ise Connections ve Buffers için kullanılmaktadır.
  • Connections and Buffers Memory Distribution: Service Engine için atanmış ramin Cacheye ayrılmış yüzdesinden gerye kalan bölümünün Connection ve Buffer için yüzdesel olarak ayarlandığı kısımdır. Yeşil çubuğu kaydırarak ayarlanmaktadır.
  • Enable Per-app Service Engine Mode: Her bir uygulama için Service Engine oluşturulması seçeneğidir.
  • Service Engine Bandwidth Type: Her bir Service Engine için bandwidth limiti koyma bölümüdür.
  • Number of Service Engine Data Paths: Trafiği yöneten maksimum DataPath işlem sayısını yapılandırır. Yapılandırılmazsa, Service Engine’daki CPU sayısı varsayılandır.
  • Use Hyperthreading: CPUda Hyperthreading kullanılıp kullanılmayacağının seçildiği bölümdür.

Service Engine Capacity and Limit Settings bölümünde yptığımız kapasite ayarlarını daha iyi anlayabilmek için aşağıdaki dökümanları inceleyebilirsiniz:

https://avinetworks.com/docs/latest/sizing-service-engines/

https://avinetworks.com/docs/21.1/se-memory-consumption/

https://docs.vmware.com/en/VMware-Cloud-Foundation/services/vcf-nsx-advanced-load-balancer-v1/GUID-149D3FFA-BF77-4B6F-B73D-A42D5375E9CF.html

Advanced:

Advenced ayarlar bölümünde daha çok oluşturulan Service Engine’ların yerleşim ayarları için kullanılmaktadır.

  • Service Engine Name Prefix: Burada yazdığımız prefix, oluşan Service Engine’ların vCenter inventoryinde görünen isminde geçen ön ektir. Örnek vermek gerekirse Service Engine adı, Cloud’u Avi’ye eklerken yazdığımız Object Name Prefix + Service Engine Name Prefix + random üretilmiş isim şeklinde olacaktır. Mesela NSX-T_Cloud_(+)API_SE_(+)bsetd
  • Placement Scope: Bu bölümden Service Engine’ların hangi vCenter, ardından hangi host, datastore ve klasörde bulunacakları seçilmektedir.
  • Buffer Service Engines: HA sırasında yük devretme için hazırda bekletilen Service Engine sayısı. Bu bölüm, ‘N + M’ içindeki ‘M’dir.
  • Scale per Virtual Service: Her bir Virtual Service için kaç adet Service Engine kullanılacağının seçildiği bölümdür. Minimum ve Maksimum seçenekleri belirlenmelidir.
  • CPU socket Affinity: Bu seçeneği seçtiğimizde Avi, Service Enginelar için tüm çekirdekleri çok soketli bir hostta CPUları aynı soketten tahsis etmesine neden olur. Bu seçenek sadece vCenter cloudta geçerlidir. NSX-T cloud kullanırken bir işlevi bulunmamaktadır
  • Dedicated dispatcher CPU: Ağdan paket alma/gönderme işlemlerini gerçekleştiren çekirdeği yalnızca gönderme işlevine ayırır. TCP/IP ve SSL işlevleri için kullanılması tavsiye edilmez. Diğer durumlarda eğer Service Engine’a 3 veya daha fazla vCPU atandıysa kullanılması önerilir.
  • Significant Log Throttle: Saniye başına önemli loglardan kaç tanesinin tutulacağının limitlendiği yerdir. Limiti kaldırmak isterseniz 0 olarak belirlemelisiniz. Ama bu önemli miktarda yük oluşturabilir.
  • Non-significant Log Throttle: Saniye başına önemsiz loglardan kaç tanesinin tutulacağının limitlendiği yerdir. Limiti kaldırmak isterseniz 0 olarak belirlemelisiniz. Bu aşırı miktarda yük oluşturabilir.
  • Number of Streaming Threads: Log akışı için kullanılacak thread sayısının belirlendiği bölümdür.

Kişisel öneri: Küçük bir not olarak belirtmem gerekirse advanced bölümünde ayarladığımız loglama ayarlarını minimum loglama yapacak şekilde ayarlamanızdır. Çünkü zaten bu şekilde bir ortamınız varsa büyük ihtimalle de log insight ürününü kullandığınız için aynı logları tekrar toplamanıza gerek olmadığını düşünmekteyim. Burada artırdığınız loglama sayıları log insighta göre aşırı miktarda yük bindirmektedir. Çünkü loglar Service Enginelar üzerinde elastic search veri tabanınında tutulmaktadır. Arayüzde sorgu attığınızda sorgular SE’ler üzerinde koşmakta, sonuçlar avi controller üzerine gönderilmektedir. Bu da Performans olarak geri tepebilmektedir.

İstediğimiz ayarları yaptıktan sonra Save butonuna tıklıyoruz ve Service Engine Group oluşturulmuş oluyor.

Bir başka anlatımda görüşmek üzere…