Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

Birinchi qism. kirish
Ikkinchi qism. Faervol va NAT qoidalarini sozlash
Uchinchi qism. DHCP sozlanmoqda
To'rtinchi qism. Marshrutni sozlash

O'tgan safar biz statik va dinamik marshrutlash nuqtai nazaridan NSX Edge imkoniyatlari haqida gapirgan edik va bugun biz yuk balansi bilan shug'ullanamiz.
O'rnatishni boshlashdan oldin, men balanslashning asosiy turlari haqida qisqacha eslatib o'tmoqchiman.

Nazariya

Bugungi kunda foydali yukni muvozanatlash bo'yicha barcha echimlar ko'pincha ikkita toifaga bo'linadi: modelning to'rtinchi (transport) va ettinchi (dastur) darajalarida balanslash. YoKI. OSI modeli balanslash usullarini tavsiflashda eng yaxshi mos yozuvlar nuqtasi emas. Misol uchun, agar L4 balanslagichi TLSni tugatishni ham qo'llab-quvvatlasa, u L7 balansiga aylanadimi? Lekin bu nima bo'lsa.

  • Balanslashtiruvchi L4 ko'pincha mijoz va mavjud backendlar to'plami o'rtasida joylashgan o'rta proksi-server bo'lib, u TCP ulanishlarini tugatadi (ya'ni, SYN-ga mustaqil ravishda javob beradi), backend-ni tanlaydi va SYN-ni mustaqil ravishda yuborib, o'z yo'nalishi bo'yicha yangi TCP seansini boshlaydi. Ushbu tur asosiy turlardan biridir, boshqa variantlar ham mumkin.
  • Balanslashtiruvchi L7 trafikni L4 balanslagichiga qaraganda "murakkabroq" mavjud bo'lgan backendlar bo'ylab taqsimlaydi. U, masalan, HTTP xabarining mazmuni (URL, cookie va boshqalar) asosida qaysi backendni tanlashni hal qilishi mumkin.

Turi qanday bo'lishidan qat'i nazar, balanser quyidagi funktsiyalarni qo'llab-quvvatlashi mumkin:

  • Xizmatni aniqlash - bu mavjud backendlar to'plamini aniqlash jarayoni (Static, DNS, Consul, etcd va boshqalar).
  • Aniqlangan backendlarning funksionalligini tekshirish (HTTP so'rovidan foydalangan holda backendning faol "ping", TCP ulanishlarida muammolarni passiv aniqlash, javoblarda bir nechta 503 HTTP kodlarining mavjudligi va boshqalar).
  • Balanslashning o'zi (davriy robin, tasodifiy tanlash, manba IP hash, URI).
  • TLSni tugatish va sertifikatni tekshirish.
  • Xavfsizlik bilan bog'liq variantlar (autentifikatsiya, DoS hujumining oldini olish, tezlikni cheklash) va boshqalar.

NSX Edge ikkita yuk balansini joylashtirish rejimini qo'llab-quvvatlaydi:

Proksi rejimi yoki bitta qo'l. Ushbu rejimda NSX Edge serverlardan biriga so'rov yuborishda o'zining IP manzilidan manba manzili sifatida foydalanadi. Shunday qilib, balanslashtiruvchi bir vaqtning o'zida Source va Destination NAT funktsiyalarini bajaradi. Backend balanslashtiruvchidan yuborilgan barcha trafikni ko'radi va unga to'g'ridan-to'g'ri javob beradi. Bunday sxemada balanslashtiruvchi ichki serverlar bilan bir xil tarmoq segmentida bo'lishi kerak.

Bu shunday bo'ladi:
1. Foydalanuvchi Edge-da sozlangan VIP-manzilga (balanser manzili) so'rov yuboradi.
2. Edge backendlardan birini tanlaydi va VIP manzilni tanlangan backend manzili bilan almashtirib, NAT manzilini amalga oshiradi.
3. Edge so'rov yuborgan foydalanuvchining manzilini o'z manziliga almashtirib, NAT manbasini bajaradi.
4. Paket tanlangan backendga yuboriladi.
5. Backend to'g'ridan-to'g'ri foydalanuvchiga emas, balki Edgega javob beradi, chunki foydalanuvchining asl manzili balanslashtiruvchi manziliga o'zgartirilgan.
6. Edge serverning javobini foydalanuvchiga uzatadi.
Diagramma quyida keltirilgan.
Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

Shaffof yoki inline rejimi. Ushbu stsenariyda balanslashtiruvchi ichki va tashqi tarmoqlarda interfeyslarga ega. Shu bilan birga, tashqi tarmoqdan ichki tarmoqqa to'g'ridan-to'g'ri kirish imkoni yo'q. O'rnatilgan yuk balanslagichi ichki tarmoqdagi virtual mashinalar uchun NAT shlyuzi vazifasini bajaradi.

Mexanizm quyidagicha:
1. Foydalanuvchi Edge-da sozlangan VIP-manzilga (balanser manzili) so'rov yuboradi.
2. Edge backendlardan birini tanlaydi va VIP manzilni tanlangan backend manzili bilan almashtirib, NAT manzilini amalga oshiradi.
3. Paket tanlangan backendga yuboriladi.
4. Backend foydalanuvchining asl manzili (manba NAT bajarilmagan) bilan so'rovni oladi va unga to'g'ridan-to'g'ri javob beradi.
5. Trafik yana yuk balansi tomonidan qabul qilinadi, chunki inline sxemada u odatda server fermasi uchun standart shlyuz vazifasini bajaradi.
6. Edge manba IP manzili sifatida VIP-dan foydalanib, foydalanuvchiga trafik jo'natish uchun NAT manbasini amalga oshiradi.
Diagramma quyida keltirilgan.
Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

Amaliyot

Mening sinov stolimda HTTPS orqali ishlash uchun sozlangan Apache bilan ishlaydigan 3 ta server mavjud. Edge har bir yangi so'rovni yangi serverga proksi-server orqali HTTPS so'rovlari bo'yicha aylana bo'ylab balanslashni amalga oshiradi.
Keling, boshlaymiz.

NSX Edge tomonidan ishlatiladigan SSL sertifikatini yaratish
Siz joriy CA sertifikatini import qilishingiz yoki o'zingiz imzolagan sertifikatdan foydalanishingiz mumkin. Ushbu test uchun men o'z-o'zidan imzolangandan foydalanaman.

  1. vCloud Director interfeysida Edge xizmatlari sozlamalariga o'ting.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash
  2. Sertifikatlar yorlig'iga o'ting. Amallar ro'yxatidan yangi CSR qo'shishni tanlang.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash
  3. Kerakli maydonlarni to'ldiring va Saqlash tugmasini bosing.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash
  4. Yangi yaratilgan CSR-ni tanlang va o'z-o'zidan imzolangan CSR variantini tanlang.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash
  5. Sertifikatning amal qilish muddatini tanlang va Saqlash tugmasini bosing
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash
  6. O'z-o'zidan imzolangan sertifikat mavjudlar ro'yxatida paydo bo'ladi.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

Ilova profilini sozlash
Ilova profillari sizga tarmoq trafigini to'liqroq boshqarish imkonini beradi va uni boshqarishni sodda va samarali qiladi. Ular trafikning muayyan turlari uchun xatti-harakatni aniqlash uchun ishlatilishi mumkin.

  1. Load Balancer yorlig'iga o'ting va muvozanatlashtiruvchini yoqing. Bu yerda Tezlashtirish yoqilgan variant balanserga L4 o‘rniga L7 balansini tezroq ishlatish imkonini beradi.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash
  2. Ilova profilini o'rnatish uchun Ilova profili yorlig'iga o'ting. + tugmasini bosing.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash
  3. Profil nomini o'rnating va profil qo'llaniladigan trafik turini tanlang. Ba'zi parametrlarni tushuntirib beraman.
    Barqarorlik – seans ma’lumotlarini saqlaydi va kuzatib boradi, masalan: hovuzdagi qaysi maxsus server foydalanuvchi so‘roviga xizmat ko‘rsatmoqda. Bu foydalanuvchi so'rovlari butun sessiya yoki keyingi sessiyalar uchun bir xil hovuz a'zosiga yo'naltirilishini ta'minlaydi.
    SSL orqali o'tishni yoqing – Ushbu parametr tanlansa, NSX Edge SSL-ni tugatishni to'xtatadi. Buning o'rniga, tugatish to'g'ridan-to'g'ri muvozanatlashtirilayotgan serverlarda sodir bo'ladi.
    X-Forwarded-For HTTP sarlavhasini kiriting – yuk balanslagichi orqali veb-serverga ulanadigan mijozning manba IP-manzilini aniqlash imkonini beradi.
    Pool Side SSL-ni yoqing – tanlangan hovuz HTTPS serverlaridan iborat ekanligini belgilash imkonini beradi.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash
  4. Men HTTPS trafigini muvozanatlashtirganim uchun Pool Side SSL-ni yoqishim va Virtual Server sertifikatlari -> Xizmat sertifikati yorlig'ida avval yaratilgan sertifikatni tanlashim kerak.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash
  5. Xuddi shunday Hovuz sertifikatlari uchun -> Xizmat sertifikati.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

Biz serverlar pulini yaratamiz, ularga trafik muvozanatli hovuzlar bo'ladi

  1. Hovuzlar yorlig'iga o'ting. + tugmasini bosing.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash
  2. Biz hovuz nomini o'rnatamiz, algoritmni (men round robin ishlataman) va sog'lig'ini tekshirish backend uchun monitoring turini tanlaymiz Shaffof opsiyasi mijozlarning boshlang'ich IP-manbalari ichki serverlarga ko'rinib turishini ko'rsatadi.
    • Agar parametr o'chirilgan bo'lsa, ichki serverlar uchun trafik balanslashtiruvchining IP manbasidan keladi.
    • Agar parametr yoqilgan bo'lsa, ichki serverlar mijozlarning manba IP manzilini ko'radi. Ushbu konfiguratsiyada NSX Edge qaytarilgan paketlar NSX Edge orqali o'tishini ta'minlash uchun standart shlyuz sifatida ishlashi kerak.

    NSX quyidagi muvozanatlash algoritmlarini qo'llab-quvvatlaydi:

    • IP_HASH – har bir paketning manba va maqsad IP uchun xesh funksiyasi natijalari asosida server tanlash.
    • LEASTCONN - ma'lum bir serverda mavjud bo'lgan raqamga qarab, kiruvchi ulanishlarni muvozanatlash. Yangi ulanishlar eng kam ulanishga ega serverga yo'naltiriladi.
    • ROUND_ROBIN - yangi ulanishlar har bir serverga o'z navbatida, unga tayinlangan vaznga muvofiq yuboriladi.
    • URI – URI ning chap qismi (savol belgisidan oldin) xeshlanadi va hovuzdagi serverlarning umumiy og‘irligiga bo‘linadi. Natija qaysi server so'rovni qabul qilishini ko'rsatadi va barcha serverlar mavjud bo'lsa, so'rov har doim bir xil serverga yo'naltirilishini ta'minlaydi.
    • HTTPHEADER - parametr sifatida ko'rsatilishi mumkin bo'lgan ma'lum bir HTTP sarlavhasi asosida balanslash. Agar sarlavha mavjud bo'lmasa yoki hech qanday qiymatga ega bo'lmasa, ROUND_ROBIN algoritmi qo'llaniladi.
    • URL – Har bir HTTP GET so‘rovi argument sifatida ko‘rsatilgan URL parametrini qidiradi. Agar parametrdan keyin tenglik belgisi va qiymat bo'lsa, u holda qiymat xeshlanadi va ishlaydigan serverlarning umumiy og'irligiga bo'linadi. Natija qaysi server so'rovni qabul qilishini ko'rsatadi. Ushbu jarayon so'rovlardagi foydalanuvchi identifikatorlarini kuzatib borish va barcha serverlar mavjud bo'lganda bir xil foydalanuvchi identifikatori doimo bir xil serverga yuborilishini ta'minlash uchun ishlatiladi.

    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

  3. Aʼzolar blokida hovuzga server qoʻshish uchun + tugmasini bosing.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

    Bu erda siz quyidagilarni ko'rsatishingiz kerak:

    • server nomi;
    • Server IP manzili;
    • server trafikni qabul qiladigan port;
    • salomatlikni tekshirish porti (Monitor Healthcheck);
    • og'irlik - ushbu parametr yordamida siz ma'lum bir hovuz a'zosi uchun qabul qilingan trafikning proportsional miqdorini sozlashingiz mumkin;
    • Maksimal ulanishlar - serverga ulanishlarning maksimal soni;
    • Minimal ulanishlar - trafik keyingi hovuz a'zosiga yo'naltirilgunga qadar server qayta ishlashi kerak bo'lgan minimal ulanishlar soni.

    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

    Uch serverning yakuniy hovuzi shunday ko'rinadi.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

Virtual server qo'shish

  1. Virtual serverlar yorlig'iga o'ting. + tugmasini bosing.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash
  2. Virtual serverni Enable Virtual Server yordamida faollashtiramiz.
    Biz unga nom beramiz, avval yaratilgan Ilova profilini, Hovuzni tanlaymiz va Virtual Server tashqaridan so'rovlarni qabul qiladigan IP-manzilni ko'rsatamiz. Biz HTTPS protokoli va 443 portini belgilaymiz.
    Bu yerda ixtiyoriy parametrlar:
    Ulanish chegarasi – virtual server qayta ishlay oladigan bir vaqtda ulanishlarning maksimal soni;
    Ulanish tezligi chegarasi (CPS) – soniyada yangi kiruvchi so‘rovlarning maksimal soni.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

Bu balans moslamasining konfiguratsiyasini yakunlaydi, siz uning funksionalligini tekshirishingiz mumkin. Serverlar oddiy konfiguratsiyaga ega bo'lib, u hovuzdan qaysi server so'rovni qayta ishlaganligini tushunishga imkon beradi. O'rnatish vaqtida biz Round Robin balanslash algoritmini tanladik va har bir server uchun Og'irlik parametri bittaga teng, shuning uchun har bir keyingi so'rov hovuzdan keyingi server tomonidan qayta ishlanadi.
Brauzerga balanserning tashqi manzilini kiritamiz va quyidagilarni ko'ramiz:
Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

Sahifani yangilagandan so'ng, so'rov quyidagi server tomonidan qayta ishlanadi:
Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

Va yana - uchinchi serverni hovuzdan tekshirish uchun:
Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

Tekshirish paytida siz Edge bizga yuboradigan sertifikat biz boshida yaratgan sertifikat ekanligini ko'rishingiz mumkin.

Edge shlyuz konsolidan balanschi holati tekshirilmoqda. Buning uchun kiriting xizmat yuk balansi hovuz ko'rsatish.
Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

Hovuzdagi serverlar holatini tekshirish uchun Service Monitorni sozlash
Service Monitor yordamida biz backend hovuzidagi serverlar holatini kuzatishimiz mumkin. Agar so'rovga javob kutilgandek bo'lmasa, server yangi so'rovlarni olmasligi uchun hovuzdan olib tashlanishi mumkin.
Odatiy bo'lib, uchta tekshirish usuli sozlangan:

  • TCP-monitor,
  • HTTP monitori,
  • HTTPS-monitor.

Keling, yangisini yarataylik.

  1. Xizmat monitoringi yorlig'iga o'ting, + tugmasini bosing.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash
  2. Tanlang:
    • yangi usulning nomi;
    • so'rovlar yuboriladigan interval,
    • javob kutish vaqti tugashi,
    • monitoring turi - GET usuli yordamida HTTPS so'rovi, kutilayotgan holat kodi - 200 (OK) va so'rov URL manzili.
  3. Bu yangi Xizmat monitorini sozlashni yakunlaydi; endi biz uni hovuz yaratishda ishlatishimiz mumkin.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

Ilova qoidalarini o'rnatish

Ilova qoidalari - ma'lum triggerlar asosida trafikni manipulyatsiya qilish usuli. Ushbu vosita yordamida biz Edge Gateway-da mavjud bo'lgan ilova profillari yoki boshqa xizmatlar orqali imkonsiz bo'lishi mumkin bo'lgan kengaytirilgan yuk balanslash qoidalarini yaratishimiz mumkin.

  1. Qoida yaratish uchun balanslashtiruvchining Ilova qoidalari yorlig'iga o'ting.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash
  2. Nomni, qoidadan foydalanadigan skriptni tanlang va Saqlash tugmasini bosing.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash
  3. Qoida yaratilgandan so'ng, biz allaqachon sozlangan Virtual Serverni tahrirlashimiz kerak.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash
  4. Kengaytirilgan yorlig'ida biz yaratgan qoidani qo'shing.
    Kichkintoylar uchun VMware NSX. 5-qism: Yuk balanslagichini sozlash

Yuqoridagi misolda biz tlsv1 yordamini yoqdik.

Yana bir nechta misol:

Trafikni boshqa hovuzga yo'naltirish.
Ushbu skript yordamida biz asosiy hovuz ishlamay qolgan bo'lsa, trafikni boshqa balanslash hovuziga yo'naltirishimiz mumkin. Qoida ishlashi uchun balanslashtirgichda bir nechta hovuzlar sozlanishi va asosiy hovuzning barcha aʼzolari past holatda boʻlishi kerak. Hovuzning identifikatorini emas, balki nomini ko'rsatishingiz kerak.

acl pool_down nbsrv(PRIMARY_POOL_NAME) eq 0
use_backend SECONDARY_POOL_NAME if PRIMARY_POOL_NAME

Trafikni tashqi manbaga yo'naltirish.
Bu erda biz asosiy hovuzning barcha a'zolari ishlamay qolgan bo'lsa, trafikni tashqi veb-saytga yo'naltiramiz.

acl pool_down nbsrv(NAME_OF_POOL) eq 0
redirect location http://www.example.com if pool_down

Yana ko'proq misollar shu yerda.

Men uchun balanschi haqida hammasi shu. Agar sizda biron bir savol bo'lsa, so'rang, men javob berishga tayyorman.

Manba: www.habr.com

a Izoh qo'shish