Өткен жолы біз статикалық және динамикалық бағыттау тұрғысынан NSX Edge мүмкіндіктері туралы айттық, ал бүгін біз жүктемені теңестірушімен айналысамыз.
Орнатуды бастамас бұрын, теңгерімдеудің негізгі түрлері туралы қысқаша еске салғым келеді.
Теория
Бүгінгі барлық пайдалы жүктемені теңестіру шешімдері көбінесе екі санатқа бөлінеді: модельдің төртінші (көлік) және жетінші (қолданбалы) деңгейлеріндегі теңгерімдеу.
- Теңгерім L4 Көбінесе бұл TCP қосылымдарын тоқтататын (яғни SYN-ге дербес жауап беретін), серверді таңдайтын және SYN-ді дербес жібере отырып, өз бағытында жаңа TCP сеансын бастайтын клиент пен қол жетімді серверлер жиынтығының арасында орналасқан ортаңғы прокси. Бұл түр негізгілердің бірі болып табылады, басқа нұсқалар мүмкін.
- Теңгерім L7 трафикті қол жетімді серверлер бойынша L4 балансизаторына қарағанда «күрделі» таратады. Ол, мысалы, HTTP хабарының мазмұнына (URL, cookie, т.б.) негізделген қай серверді таңдау керектігін шеше алады.
Түріне қарамастан, балансизатор келесі функцияларды қолдай алады:
- Қызметті табу – қол жетімді серверлер жиынын анықтау процесі (Static, DNS, Consul, Etcd және т.б.).
- Анықталған серверлердің функционалдығын тексеру (HTTP сұрауы арқылы сервердің белсенді «пингі», TCP қосылымдарындағы ақаулықтарды пассивті анықтау, жауаптарда бірнеше 503 HTTP кодтарының болуы және т.б.).
- Теңдестірудің өзі (дөңгелек режим, кездейсоқ таңдау, бастапқы IP хэші, URI).
- TLS тоқтату және сертификатты тексеру.
- Қауіпсіздікке қатысты опциялар (аутентификация, DoS шабуылының алдын алу, жылдамдықты шектеу) және т.б.
NSX Edge екі жүктеме балансын орналастыру режиміне қолдау көрсетеді:
Прокси режимі немесе бір қол. Бұл режимде NSX Edge серверлердің біріне сұрау жіберу кезінде бастапқы мекенжай ретінде өзінің IP мекенжайын пайдаланады. Осылайша, баланстауыш бір уақытта Source және Destination NAT функцияларын орындайды. Backend барлық трафикті балансизатордан жіберілген ретінде көреді және оған тікелей жауап береді. Мұндай схемада теңгеруші ішкі серверлермен бір желі сегментінде болуы керек.
Бұл қалай жүреді:
1. Пайдаланушы Edge-де конфигурацияланған VIP мекенжайына (теңгерім мекенжайы) сұрау жібереді.
2. Edge серверлердің бірін таңдайды және VIP мекенжайын таңдалған сервер мекенжайымен ауыстыра отырып, тағайындалған NAT орнын орындайды.
3. Edge сұрауды жіберген пайдаланушының мекенжайын өзінің мекен-жайымен ауыстыра отырып, NAT көзін орындайды.
4. Бума таңдалған серверге жіберіледі.
5. Қолданушының бастапқы мекенжайы теңгеруші мекенжайына өзгертілгендіктен, сервер пайдаланушыға тікелей емес, Edge-ге жауап береді.
6. Edge сервердің жауабын пайдаланушыға жібереді.
Диаграмма төменде берілген.
Мөлдір немесе кірістірілген режим. Бұл сценарийде балансизатордың ішкі және сыртқы желілерде интерфейстері бар. Бұл ретте сыртқы желіден ішкі желіге тікелей қол жеткізу мүмкін емес. Кірістірілген жүктеме балансы ішкі желідегі виртуалды машиналар үшін NAT шлюзі ретінде әрекет етеді.
Механизм келесідей:
1. Пайдаланушы Edge-де конфигурацияланған VIP мекенжайына (теңгерім мекенжайы) сұрау жібереді.
2. Edge серверлердің бірін таңдайды және VIP мекенжайын таңдалған сервер мекенжайымен ауыстыра отырып, тағайындалған NAT орнын орындайды.
3. Бума таңдалған серверге жіберіледі.
4. Сервер пайдаланушының бастапқы мекенжайы бар сұрауды алады (NAT көзі орындалмады) және оған тікелей жауап береді.
5. Трафик қайтадан жүктемені теңестірушімен қабылданады, өйткені кірістірілген схемада ол әдетте сервер фермасы үшін әдепкі шлюз ретінде әрекет етеді.
6. Edge бастапқы IP мекенжайы ретінде өзінің VIP протоколын пайдаланып, пайдаланушыға трафик жіберу үшін NAT көзін орындайды.
Диаграмма төменде берілген.
Тәжірибе
Менің сынақ үстелімде HTTPS арқылы жұмыс істеуге конфигурацияланған Apache жұмыс істейтін 3 сервер бар. Edge әрбір жаңа сұрауды жаңа серверге прокси арқылы жібере отырып, HTTPS сұрауларының теңдестірілуін орындайды.
Бастайық.
NSX Edge пайдаланатын SSL сертификатын жасау
Жарамды CA сертификатын импорттауға немесе өздігінен қол қойылған сертификатты пайдалануға болады. Бұл сынақ үшін мен өздігінен қол қоюды қолданамын.
- vCloud Director интерфейсінде Edge қызметтерінің параметрлеріне өтіңіз.
- Сертификаттар қойындысына өтіңіз. Әрекеттер тізімінен жаңа CSR қосуды таңдаңыз.
- Қажетті өрістерді толтырып, «Сақтау» түймесін басыңыз.
- Жаңадан жасалған CSR таңдаңыз және өзін-өзі қол қою CSR опциясын таңдаңыз.
- Сертификаттың жарамдылық мерзімін таңдап, «Сақтау» түймесін басыңыз
- Өздігінен қол қойылған сертификат қолжетімділер тізімінде пайда болады.
Қолданба профилін орнату
Қолданба профильдері желі трафигін толық бақылауға мүмкіндік береді және оны басқаруды қарапайым және тиімді етеді. Оларды трафиктің белгілі бір түрлері үшін мінез-құлықты анықтау үшін пайдалануға болады.
- «Жүктеме теңестіруші» қойындысына өтіп, теңгерімді қосыңыз. Мұндағы Acceleration қосулы опция теңгерушіге L4 орнына жылдамырақ L7 теңдестіруді пайдалануға мүмкіндік береді.
- Қолданба профилін орнату үшін Қолданба профилі қойындысына өтіңіз. + түймесін басыңыз.
- Профиль атын орнатыңыз және профиль қолданылатын трафик түрін таңдаңыз. Кейбір параметрлерді түсіндірейін.
Тұрақтылық – сеанс деректерін сақтайды және қадағалайды, мысалы: бассейндегі нақты сервер пайдаланушы сұрауына қызмет көрсетеді. Бұл пайдаланушы сұрауларының сеанстың немесе кейінгі сеанстардың өмір бойы бірдей пул мүшесіне бағытталуын қамтамасыз етеді.
SSL арқылы өту мүмкіндігін қосыңыз – Бұл опция таңдалғанда, NSX Edge SSL қызметін тоқтатуды тоқтатады. Оның орнына тоқтату теңдестіріліп жатқан серверлерде тікелей орын алады.
X-Forwarded-For HTTP тақырыбын енгізіңіз – жүктеме балансы арқылы веб-серверге қосылатын клиенттің бастапқы IP мекенжайын анықтауға мүмкіндік береді.
Pool Side SSL қосыңыз – таңдалған пул HTTPS серверлерінен тұратынын көрсетуге мүмкіндік береді.
- Мен HTTPS трафигін теңестіретін болғандықтан, Pool Side SSL мүмкіндігін қосып, Виртуалды сервер сертификаттары -> Қызмет сертификаты қойындысында бұрын жасалған сертификатты таңдауым керек.
- Сол сияқты Пул сертификаттары -> Қызмет сертификаты үшін.
Біз серверлер пулын жасаймыз, оған трафик теңдестірілген Пулдар болады
- Бассейндер қойындысына өтіңіз. + түймесін басыңыз.
- Пулдың атын орнатамыз, алгоритмді (дөңгелек режимді қолданамын) және денсаулықты тексеру сервері үшін бақылау түрін таңдаймыз. Transparent опциясы клиенттердің бастапқы IP мекенжайларының ішкі серверлерге көрінетінін көрсетеді.
- Опция өшірілсе, ішкі серверлерге арналған трафик балансизатордың бастапқы IP мекенжайынан келеді.
- Опция қосылса, ішкі серверлер клиенттердің бастапқы IP мекенжайын көреді. Бұл конфигурацияда NSX Edge қайтарылған пакеттердің NSX Edge арқылы өтуін қамтамасыз ету үшін әдепкі шлюз ретінде әрекет етуі керек.
NSX келесі теңдестіру алгоритмдерін қолдайды:
- IP_HASH – әрбір пакеттің бастапқы және тағайындалған IP үшін хэш функциясының нәтижелеріне негізделген серверді таңдау.
- LEASTCONN – белгілі бір серверде бұрыннан бар нөмірге байланысты кіріс қосылымдарын теңестіру. Жаңа қосылымдар ең аз қосылымы бар серверге бағытталады.
- ROUND_ROBIN – жаңа қосылымдар әрбір серверге берілген салмаққа сәйкес кезекпен жіберіледі.
- URI – URI сол жақ бөлігі (сұрақ белгісінің алдында) хэштеліп, пулдағы серверлердің жалпы салмағына бөлінеді. Нәтиже сұрауды қай сервер қабылдайтынын көрсетеді, бұл барлық серверлер қолжетімді болған кезде сұраудың әрқашан бір серверге бағытталуын қамтамасыз етеді.
- HTTPHEADER – параметр ретінде көрсетуге болатын арнайы HTTP тақырыбына негізделген теңгерімдеу. Егер тақырып жоқ болса немесе ешқандай мән болмаса, ROUND_ROBIN алгоритмі қолданылады.
- URL – Әрбір HTTP GET сұрауы аргумент ретінде көрсетілген URL параметрін іздейді. Параметрден кейін теңдік белгісі және мән болса, мән хэштеліп, іске қосылған серверлердің жалпы салмағына бөлінеді. Нәтиже сұрауды қай сервер алатынын көрсетеді. Бұл процесс сұраулардағы пайдаланушы идентификаторларын қадағалау және барлық серверлер қолжетімді болған кезде бірдей пайдаланушы идентификаторы әрқашан бір серверге жіберілуін қамтамасыз ету үшін пайдаланылады.
- Пулға серверлерді қосу үшін Мүшелер блогында + түймесін басыңыз.
Мұнда сіз мыналарды көрсетуіңіз керек:- сервер атауы;
- Сервердің IP мекенжайы;
- сервер трафикті қабылдайтын порт;
- денсаулықты тексеру порты (Monitor Healthcheck);
- салмақ – осы параметрді пайдалана отырып, белгілі бір пул мүшесі үшін алынған трафиктің пропорционалды мөлшерін реттеуге болады;
- Max Connections – серверге қосылулардың максималды саны;
- Мин қосылымдар – трафик келесі пул мүшесіне жіберілмес бұрын сервер өңдеуі тиіс қосылымдардың ең аз саны.
Үш сервердің соңғы пулы осылай көрінеді.
Виртуалды серверді қосу
- Виртуалды серверлер қойындысына өтіңіз. + түймесін басыңыз.
- Виртуалды серверді қосу Виртуалды серверді пайдалану арқылы белсендіреміз.
Біз оған ат береміз, бұрын жасалған қолданба профилін, пулды таңдаймыз және Виртуалды сервер сырттан сұрауларды қабылдайтын IP мекенжайын көрсетеміз. Біз HTTPS протоколын және 443 портын көрсетеміз.
Мұнда қосымша параметрлер:
Қосылу шегі – виртуалды сервер өңдей алатын бір уақыттағы қосылымдардың максималды саны;
Байланыс жылдамдығының шегі (CPS) – секундына жаңа кіріс сұрауларының максималды саны.
Бұл балансизатордың конфигурациясын аяқтайды, оның жұмысын тексеруге болады. Серверлерде сұрауды пулдан қай сервер өңдегенін түсінуге мүмкіндік беретін қарапайым конфигурация бар. Орнату кезінде біз Round Robin теңдестіру алгоритмін таңдадық және әрбір сервер үшін салмақ параметрі біреуге тең, сондықтан әрбір келесі сұрауды пулдан келесі сервер өңдейді.
Біз браузерге балансизатордың сыртқы мекенжайын енгіземіз және көреміз:
Бетті жаңартқаннан кейін сұрау келесі сервермен өңделеді:
Тағы да - пулдан үшінші серверді тексеру үшін:
Тексеру кезінде Edge бізге жіберетін сертификаттың біз ең басында жасаған куәлік екенін көре аласыз.
Edge шлюз консолінен баланстауыш күйін тексеру. Мұны істеу үшін енгізіңіз жүк теңестіруші пулын көрсету.
Пулдағы серверлердің күйін тексеру үшін Қызмет мониторын теңшеу
Сервис мониторын пайдалану арқылы біз серверлік пулдағы серверлердің күйін бақылай аламыз. Егер сұрауға жауап күтілгендей болмаса, сервер жаңа сұрауларды қабылдамауы үшін пулдан шығарылуы мүмкін.
Әдепкі бойынша үш тексеру әдісі конфигурацияланады:
- TCP-монитор,
- HTTP мониторы,
- HTTPS-мониторы.
Жаңасын жасайық.
- Қызметті бақылау қойындысына өтіп, + түймесін басыңыз.
- Таңдау:
- жаңа әдістің атауы;
- сұраулар жіберілетін аралық,
- жауап күту күту уақыты,
- бақылау түрі – GET әдісін пайдаланатын HTTPS сұрауы, күтілетін күй коды – 200(OK) және сұрау URL мекенжайы.
- Бұл жаңа қызмет мониторын орнатуды аяқтайды; енді біз оны пул жасаған кезде пайдалана аламыз.
Қолданба ережелерін орнату
Қолдану ережелері - белгілі бір триггерлерге негізделген трафикті манипуляциялау тәсілі. Бұл құралдың көмегімен біз қолданба профильдері немесе Edge шлюзінде қолжетімді басқа қызметтер арқылы мүмкін болмауы мүмкін қосымша жүктемені теңестіру ережелерін жасай аламыз.
- Ереже жасау үшін теңгерім құралының Қолданба ережелері қойындысына өтіңіз.
- Ережені пайдаланатын атауды, сценарийді таңдап, «Сақтау» түймесін басыңыз.
- Ереже жасалғаннан кейін біз конфигурацияланған виртуалды серверді өңдеуіміз керек.
- Қосымша қойындысында біз жасаған ережені қосыңыз.
Жоғарыдағы мысалда біз tlsv1 қолдауын қостық.
Тағы бірнеше мысал:
Трафикті басқа пулға қайта бағыттаңыз.
Бұл сценарий арқылы біз негізгі пул жұмыс істемей тұрса, трафикті басқа теңдестіру пулына қайта бағыттай аламыз. Ереженің жұмыс істеуі үшін теңгерімде бірнеше пулдар конфигурациялануы керек және негізгі пулдың барлық мүшелері төмен күйде болуы керек. Пулдың идентификаторын емес, атын көрсету керек.
acl pool_down nbsrv(PRIMARY_POOL_NAME) eq 0
use_backend SECONDARY_POOL_NAME if PRIMARY_POOL_NAME
Трафикті сыртқы ресурсқа қайта бағыттау.
Мұнда негізгі пулдың барлық мүшелері жұмыс істемей тұрса, трафикті сыртқы веб-сайтқа бағыттаймыз.
acl pool_down nbsrv(NAME_OF_POOL) eq 0
redirect location http://www.example.com if pool_down
Одан да көп мысалдар
Мен үшін теңгерімші туралы бәрі осы. Егер сізде сұрақтар болса, сұраңыз, мен жауап беруге дайынмын.
Ақпарат көзі: www.habr.com