VMware’in bugları: NSX-T ve Advanced Load Balancer

Merhaba arkadaşlar,

Bu anlatımda sizlere NSX-T 3.2.1.2’de yaşadığım sorundan dolayı sistemimi neden bu kadar acil bir şekilde NSX-T 3.2.2’ye upgrade ettiğimi, Advanced Load Balancer’da ne gibi sorunlar yaşadığım anlatmaya çalışacağım.

NSX-T 3.1.3.5 versiyonunu kullanırken artık 3.2.1.2’ye geçilebileceğinin bilgisini almıştım. Kullananların bir sorun yaşamadığını söylüyorlardı. NSX-T 3.2.1.2 versiyonuna geçmek benim için başka bir öneme daha sahipti. Artık Advanced Load Balancer (Avi) NSX-T UI ile yönetilebiliyordu. Bunun asıl önemli olma sebebi de Avi ‘de yaşadığım Upgrade sorunuydu. Avi 21.1.3 kullanıyordum ve patch 2p2’den 2p14’e kadar upgrade etmiştim ama ne yaparsam yapayım ne Avi 21.1.4 ne Avi 21.1.5 ne de Avi 22.1’ye upgrade edemiyordum. Avi controllerlar upgrade sırasında her bir controller “Unable to complate task migrate_config on [‘node1.controller.local’]” şeklinde hata veriyordu. Uzun arayışlar sonucunda bir çözüme ulaşamadım. Artık yorulmuştum. Yeni bir avi controller cluster kurup virtual service’lerimi yeni clusterda oluşturduğum load balancerlara taşımak daha kolay görünmeye başlamıştı.

Halihazırda 3.2.1.2’ye geçmek kulağa hoş gelirken upgrade işlemi sonrası NSX-T ui üzerinden Advanced Load Balancer 22.1.2 cluster kurup yoluma devam etmeye karar verdim. Ama bu çok kötü bir karar ve çözüm yolu olmuştu.

İlk olarak NSX-T 3.2.1.2’ye geçişimi sağladım. Sorunsuz bir geçiş olacağını düşünüyordum. Tüm ön kontrollerimi yaptıktan sonra upgrade işlemine başladım. Önce edgeler sonra hostlar derken upgrade tamamlanmak üzereydi. Artık sıra NSX controller’lara gelmişti. Upgrade tamamlanmak üzereyken ne olsun? Avi controller’lar NSX-T controller’lara erişemediği için bazı load balancerların üzerindeki virtual serviceler cevap vermemeye başladı.

Avi’ye giriş yaptığımda ilgili virtual service’lerin poolları down olmuştu. Peki sebep neydi? Pool serverlar olarak NSX Security Group kullanıyordum. Onlarca pool üzerinde security group kullanmama rağmen bazı poollardaki server ipleri gitmişti. Avi controller’lar NSX-T controller’lara erişememiş, security groupları boşaltmıştı. Ama neden? tüm poollarda security group kullanıyordum ama ne büyük şanstır ki hiç bir iş kritik VS etkilenmemiş, sadece iş kritik olmayan VS’ler düşmüştü. Çok şanslıydım. Tüm kesinti 3-4 dakika sürdü NSX-T controllerlar geri geldiğinde düzeldi ama bu da bir sorundu. Daha sonrasında Advanced Load Balancer 22.1’e geçince gördüm ki bu kullanım kaldırılmış, kullanmaya çalışıldığında alttaki hatayı vermekte:

Static IP for Servers and NSX Security Group can't be configured together.

Artık NSX-T 3.2.1.2 kullanıyordum. Kontrollerimi yaptıktan sonra hemen NSX-T ui üzerinden 22.1.2 versiyonunda yeni bir Avi cluster kurulumu gerçekleştirdim. Upgrade olmayan 21.1.3 avi’deki VS’leri NSX-T ui üzerindeki Advanced Load Balancer bölümünden oluşturduğum SE’ler üzerine aktarmaya başladım. Bu sırada ne göreyim? Modül arızalıydı! Oluşturduğum VS’ler oluşuyordu oluşmasına ama NSX-T UI üzerinde hatalı duruma düşüyordu. Daha yeni bir sürüm de yoktu. Güncelleyip düzeltemiyordum. Sorun ne diye araştırırken NSX-T 4.0 release notes okuyayım dedim. Ne göreyim? NSX-T UI üzerindeki Advanced Load Balancer bölümü deprecated olmuş:

https://docs.vmware.com/en/VMware-NSX/4.0/rn/vmware-nsx-4001-release-notes/index.html#feature-deprecation

NSX-T ui üzerinde oluşturduğum her şey neredeyse boşuna gitmişti. Bu olay hiç hoşuma gitmedi. Üçüncü kez avi cluster kurup tüm vsleri yenisine aktarmak istedim. Bu sefer ne göreyim? 22.1.2 Avi ui üzerinde VS oluştururken VS’in pooldaki placement network’ünü seçerken networklerim gelmiyordu:

Teşekkürler VMware! diyerek araştırmaya başladım. Ne bir KB ne bir forum konusuna rastladım. NSX-T ui üzerinde oluştururken sorun çıkmadığına göre apiler üzerinden pool oluşturabileceğimi dşündüm ve başardım. Administration-> Settings->Access Settings bölümünden Allow Basic Authentication seçeneğini aktif ettikten sonra alttaki api ile pool oluşturmayı başardım:

https://avi_vip_adres/api/pool
Bknz: https://avinetworks.com/docs/18.2/api-guide/pool.html veya https://avi_vip_adres/api/

Tüm VS’leri 3. avi clusterına taşıdım ve sonrasındaki 3. patchte çözüm nihayet yayınlanmıştı:

https://avinetworks.com/docs/22.1/release-notes/#issues-resolved-in-2212-2p3
AV-152343: Virtual service placement is stuck at OPER_RESOURCES due to an internal race condition which clears the discovered networks on the virtual services.

Nihayetinde Advanced load balancer kısmı rayına oturmuştu ama tüm bu süreç boyunca beni yalnız bırakmayan başka bir NSX-T bug’ı benimleydi:

Fixed Issue 2942961: The "nestdb_remedy" plug-in of SHA introduces an extra disk read to ESXi host.


https://docs.vmware.com/en/VMware-NSX/3.2.2/rn/vmware-nsxt-data-center-322-release-notes/index.html#resolved-issues

Bu sorunda ise hostlar storage üzerinde sürekli read operasyonu yapıyordu. Her host clusterımda da datastore clusterlarında bulunan ilk 6-8 datastore üzerinde 140-180 MB arasında ek yük oluşturuyordu. VMware yayınladığı KB’de 2 mb diyordu ama benim sistemimde bu rakam bunun çok üzerindeydi. Saniyede toplam yaklaşık 6 GB/S read. Tabi bu iş bu kadar kolay tespit edilip çözüme kavuşturulmadı. altta paylaştığım KB bile 3.2.2 yayınlandığı zaman yayınlandı. Tespit etmek için günlerimi harcayıp başarısız olmuştum. Host ve datastore maintenance modda olsa bile sürekli read yapılıyordu. Sorun neredeydi? storage üreticimle bile saatlerce baktık ama sorun nereden kaynaklıydı bulamadık. Sorun storage’i monitör edince NSX-T 3.2.1.2 upgrade anıyla örtüşüyordu. Sadece biraz beklemeye karar verdim ve patch yayınlandı

ilgili KB:

https://kb.vmware.com/s/article/89461

Bu ek yükü alttaki görsel üzerinden değerlendirebilirsiniz:

3.1.3.5’te her şey yolundayken 3.2.1.2 de read tavan yapmış, 3.2.2’ye geçince her şey rayına girmişti.

Şu an durum ne diye sorarsanız NSX-T 3.2.2 ve ALB 22.1.2-2p3 uyumluluğu fazlasıyla başarılı görünüyor. En azından kendi yapım için söyleyebilirim ki henüz DFW bölümünde groups filtreleme dışında bug ile karşılaşmadım. 3.2.2 de bir çok takılma sorunu düzeltilmiş, daha akıcı bir ui sağlanmış. Sorunların çözülmesi dışında beni en mutlu eden şey bu oldu. Zaten release notes’da yazdıkları fixlerin sayısına bakarsak aksini düşünmek istemiyorum.

Umarım sizlere faydalı olabilecek bir yazı oluşturabilmişimdir. Görüşmek üzere…