Openstack-тегі жүктемені теңестіру (2-бөлім)

В соңғы мақала біз Watcher қолданбасын пайдалану әрекеттері туралы әңгімелестік және сынақ есебін ұсындық. Біз ірі кәсіпорынның немесе оператор бұлтының теңгеріміне және басқа да маңызды функцияларына осындай сынақтарды кезеңді түрде жүргіземіз.

Шешілетін мәселенің күрделілігі біздің жобаны сипаттау үшін бірнеше мақаланы қажет етуі мүмкін. Бүгін біз бұлттағы виртуалды машиналарды теңестіруге арналған серияның екінші мақаласын жариялаймыз.

Кейбір терминология

VmWare компаниясы өздері әзірлеген және ұсынған виртуализация ортасының жүктемесін теңестіру үшін DRS (Таратылған ресурстарды жоспарлаушы) утилитасын ұсынды.

Ол жазады searchvmware.techtarget.com/definition/VMware-DRS
«VMware DRS (Distributed Resource Scheduler) – виртуалды ортадағы қолжетімді ресурстармен есептеу жүктемелерін теңестіретін утилита. Утилита VMware Infrastructure деп аталатын виртуализация жиынтығының бөлігі болып табылады.

VMware DRS көмегімен пайдаланушылар виртуалды машиналар (VM) арасында физикалық ресурстарды тарату ережелерін анықтайды. Утилитаны қолмен немесе автоматты басқару үшін конфигурациялауға болады. VMware ресурс пулдарын оңай қосуға, жоюға немесе қайта ұйымдастыруға болады. Қажет болса, ресурс пулдарын әртүрлі құрылымдық бөлімшелер арасында оқшаулауға болады. Бір немесе бірнеше виртуалды машиналардағы жұмыс жүктемесі күрт өзгерсе, VMware DRS виртуалды машиналарды физикалық серверлер бойынша қайта таратады. Егер жалпы жұмыс жүктемесі азайса, кейбір физикалық серверлер уақытша офлайн режиміне алынып, жұмыс жүктемесі біріктірілуі мүмкін."

Неліктен теңгерім қажет?


Біздің ойымызша, DRS міндетті бұлттық мүмкіндік болып табылады, дегенмен бұл DRS әрқашан және барлық жерде қолданылуы керек дегенді білдірмейді. Бұлттың мақсаты мен қажеттіліктеріне байланысты DRS және теңдестіру әдістеріне әртүрлі талаптар болуы мүмкін. Теңестіру мүлдем қажет емес жағдайлар болуы мүмкін. Немесе тіпті зиянды.

DRS қайда және қандай клиенттерге қажет екенін жақсырақ түсіну үшін олардың мақсаттары мен міндеттерін қарастырайық. Бұлттарды жалпы және жеке деп бөлуге болады. Міне, осы бұлттар мен тұтынушылардың мақсаттары арасындағы негізгі айырмашылықтар.

Жеке бұлттар / Ірі кәсіпорын клиенттері
Қоғамдық бұлттар / Орта және шағын бизнес, адамдар

Оператордың негізгі критерийі мен мақсаттары
Сенімді қызмет немесе өнімді ұсыну
Бәсекелестік нарықтағы күресте қызметтердің құнын төмендету

Қызметке қойылатын талаптар
Барлық деңгейлерде және барлық жүйе элементтерінде сенімділік

Кепілдендірілген өнімділік

Виртуалды машиналарға бірнеше санаттарға басымдық беріңіз 

Ақпараттық және физикалық деректердің қауіпсіздігі

SLA және тәулік бойы қолдау көрсету
Қызметті алудың максималды жеңілдігі

Салыстырмалы түрде қарапайым қызметтер

Деректер үшін жауапкершілік клиентке жүктеледі

VM басымдылығы қажет емес

Стандартты қызмет деңгейінде ақпараттық қауіпсіздік, клиентке жауапкершілік

Ақаулар болуы мүмкін

SLA жоқ, сапаға кепілдік берілмейді

Электрондық пошта арқылы қолдау көрсету

Сақтық көшірме қажет емес

Клиент мүмкіндіктері
Қолданулардың өте кең ауқымы.

Компанияда мұраға қалған ескі қолданбалар.

Әрбір клиент үшін күрделі теңшелетін архитектуралар.

Сәйкестік ережелері.

Бағдарлама 7x24 режимінде тоқтаусыз жұмыс істейді. 

Сақтық көшірме жасау құралдары.

Тұтынушының болжамды циклдік жүктемесі.
Типтік қолданбалар – желіні теңестіру, Apache, WEB, VPN, SQL

Қолданба біраз уақытқа тоқтауы мүмкін

Бұлтта виртуалды құрылғыларды еркін таратуға мүмкіндік береді

Клиенттің сақтық көшірмесі

Клиенттердің үлкен саны бар болжамды статистикалық орташа жүктеме.

Сәулет үшін салдары
Геокластерлеу

Орталықтандырылған немесе бөлінген қойма

Сақталған IBS
Есептеу түйіндеріндегі жергілікті деректерді сақтау

Теңдестіру мақсаттары
Жүктемені біркелкі бөлу

Қолданбаның максималды жауап беруі 

Теңдестірудің ең аз кешігу уақыты

Нақты қажет болғанда ғана теңгерімдеу

Профилактикалық қызмет көрсету үшін кейбір жабдықты әкелу
Қызмет көрсету және оператор шығындарын азайту 

Төмен жүктеме жағдайында кейбір ресурстарды өшіру

Қуатты үнемдеу

Персонал шығындарын азайту

Біз өзіміз үшін келесі қорытындыларды жасаймыз:

Жеке бұлттар үшінІрі корпоративтік тұтынушыларға берілген DRS келесі шектеулерге сәйкес қолданылуы мүмкін:

  • теңгерімдеу кезінде ақпараттық қауіпсіздік және жақындық ережелерін ескеру;
  • авария кезінде резервте жеткілікті ресурстардың болуы;
  • виртуалды машина деректері орталықтандырылған немесе бөлінген сақтау жүйесінде орналасқан;
  • уақыт бойынша таңқаларлық басқару, резервтік көшіру және теңгерімдеу процедуралары;
  • тек клиенттік хосттар жиынтығында теңдестіру;
  • күшті теңгерімсіздік болған кезде ғана теңгерімдеу, ең тиімді және қауіпсіз VM көшірулері (ақыр соңында, көшу сәтсіз болуы мүмкін);
  • салыстырмалы түрде «тыныш» виртуалды машиналарды теңдестіру («шулы» виртуалды машиналарды көшіру өте ұзақ уақыт алуы мүмкін);
  • «құнды» ескере отырып теңгерімдеу - сақтау жүйесі мен желіге жүктеме (ірі клиенттер үшін теңшелген архитектурамен);
  • әрбір VM-нің жеке мінез-құлық ерекшеліктерін ескере отырып теңгерімдеу;
  • Баланстау жұмыстан тыс уақытта (түнгі, демалыс, мереке күндері) жақсырақ орындалады.

Қоғамдық бұлттар үшінкішігірім тұтынушыларға қызмет көрсете отырып, DRS кеңейтілген мүмкіндіктері бар әлдеқайда жиі қолданылуы мүмкін:

  • ақпараттық қауіпсіздік шектеулерінің және жақындық ережелерінің болмауы;
  • бұлт ішінде теңдестіру;
  • кез келген қолайлы уақытта теңгерімдеу;
  • кез келген VM теңдестіру;
  • «шулы» виртуалды машиналарды теңдестіру (басқаларға кедергі жасамау үшін);
  • виртуалды машина деректері көбінесе жергілікті дискілерде орналасады;
  • сақтау жүйелері мен желілерінің орташа өнімділігін ескере отырып (бұлттық архитектура бірыңғайланған);
  • жалпы ережелерге және қол жетімді деректер орталығының мінез-құлық статистикасына сәйкес теңгерімдеу.

Мәселенің күрделілігі

Теңестірудің қиындығы - DRS көптеген белгісіз факторлармен жұмыс істеуі керек:

  • клиенттердің әрбір ақпараттық жүйесін пайдаланушылардың мінез-құлқы;
  • ақпараттық жүйе серверлерінің жұмыс істеу алгоритмдерін;
  • ДҚБЖ серверлерінің әрекеті;
  • есептеу ресурстарына, сақтау жүйелеріне, желіге жүктеме;
  • бұлтты ресурстар үшін күресте серверлердің бір-бірімен әрекеттесуі.

Виртуалды қолданбалы серверлер мен дерекқорлардың көп санының бұлттық ресурстарға жүктелуі уақыт өте келе пайда болады, салдарлар өздерін көрсетуі және күтпеген уақыт ішінде болжанбайтын әсермен бір-бірімен қабаттасуы мүмкін. Тіпті салыстырмалы түрде қарапайым процестерді басқару үшін (мысалы, қозғалтқышты, үйдегі су жылыту жүйесін басқару үшін) автоматты басқару жүйелері күрделі қолдануды қажет етеді. пропорционал-интегралдық-дифференциалдаушы кері байланыс бар алгоритмдер.

Openstack-тегі жүктемені теңестіру (2-бөлім)

Біздің міндетіміз көптеген күрделірек және пайдаланушылардың сыртқы әсерлері болмаса да, жүйенің жүктемені белгіленген мәндерге қисынды уақытта теңестіре алмау қаупі бар.

Openstack-тегі жүктемені теңестіру (2-бөлім)

Біздің дамуымыздың тарихы

Бұл мәселені шешу үшін біз нөлден емес, бар тәжірибеге сүйенуді ұйғардық және осы салада тәжірибесі бар мамандармен араласа бастадық. Бақытымызға орай, біздің мәселені түсінуіміз толығымен сәйкес келді.

кезеңі 1

Біз нейрондық желі технологиясына негізделген жүйені қолдандық және соның негізінде ресурстарымызды оңтайландыруға тырыстық.

Бұл кезеңнің қызығушылығы жаңа технологияны сынау болды, ал оның маңыздылығы стандартты емес тәсілді қолдануда болды, онда басқа нәрселер тең болса, стандартты тәсілдер іс жүзінде өздерін таусылған.

Біз жүйені іске қостық және біз шынымен теңдестіруді бастадық. Біздің бұлттың ауқымы әзірлеушілер айтқан оптимистік нәтижелерге қол жеткізуге мүмкіндік бермеді, бірақ теңгерім жұмыс істеп жатқаны анық болды.

Сонымен қатар, бізде айтарлықтай шектеулер болды:

  • Нейрондық желіні үйрету үшін виртуалды машиналар апталар немесе айлар бойы елеулі өзгерістерсіз жұмыс істеуі керек.
  • Алгоритм бұрынғы «тарихи» деректерді талдау негізінде оңтайландыруға арналған.
  • Нейрондық желіні оқыту өте үлкен көлемдегі деректер мен есептеу ресурстарын қажет етеді.
  • Оңтайландыру және теңдестіру салыстырмалы түрде сирек жасалуы мүмкін - бірнеше сағатта бір рет, бұл жеткіліксіз.

кезеңі 2

Жағдай бізді қанағаттандырмағандықтан, біз жүйені өзгертуді шештік және бұл үшін жауап береміз. негізгі сұрақ - Біз оны кім үшін жасап жатырмыз?

Біріншіден - корпоративтік клиенттер үшін. Бұл бізге енгізуді жеңілдететін корпоративтік шектеулермен жылдам жұмыс істейтін жүйе қажет екенін білдіреді.

Екінші мәселе – «тез арада» деген сөзді қалай түсінесіңдер? Қысқа пікірталас нәтижесінде біз қысқа мерзімді толқындар жүйені резонансқа келтірмеуі үшін 5–10 минуттық жауап беру уақытынан бастауға болады деп шештік.

Үшінші мәселе – серверлердің теңдестірілген санының қандай өлшемін таңдау керек?
Бұл мәселе өздігінен шешілді. Әдетте, клиенттер серверлік біріктірулерді тым үлкен етіп жасамайды және бұл біріктірулерді 30-40 серверге шектеу туралы мақаланың ұсыныстарына сәйкес келеді.

Сонымен қатар, сервер пулын сегменттеу арқылы біз теңгерімдеу алгоритмінің тапсырмасын жеңілдетеміз.

Төртінші сұрақ – Ұзақ оқу процесі және сирек теңдестіру арқылы нейрондық желі бізге қаншалықты қолайлы? Бірнеше секунд ішінде нәтиже алу үшін біз одан қарапайым операциялық алгоритмдердің пайдасына бас тартуды шештік.

Openstack-тегі жүктемені теңестіру (2-бөлім)

Мұндай алгоритмдерді қолданатын жүйенің сипаттамасын және оның кемшіліктерін табуға болады осында

Біз бұл жүйені енгізіп, іске қостық және көңіл қуантарлық нәтиже алдық – қазір ол бұлтты жүктемені жүйелі түрде талдап, виртуалды машиналарды жылжыту бойынша ұсыныстар береді, бұл негізінен дұрыс. Қазірдің өзінде біз жаңа виртуалды машиналар үшін ресурстарды 10-15% босатуға қол жеткізе алатынымыз анық, сонымен бірге қолданыстағылардың жұмыс сапасын жақсарта аламыз.

Openstack-тегі жүктемені теңестіру (2-бөлім)

ЖЖҚ немесе процессордағы теңгерімсіздік анықталғанда, жүйе қажетті виртуалды машиналарды тікелей тасымалдауды орындау үшін Tionix жоспарлаушысына пәрмендер береді. Мониторинг жүйесінен көрініп тұрғандай, виртуалды машина бір (жоғарғы) екінші (төменгі) хостқа жылжып, жоғарғы хосттағы жадты босатты (сары шеңберлермен бөлектелген), сәйкесінше оны төменгі жағында (ақ түспен белгіленген) алады. шеңберлер).

Енді біз қолданыстағы алгоритмнің тиімділігін дәлірек бағалауға тырысамыз және ондағы мүмкін қателерді табуға тырысамыз.

кезеңі 3

Бұған сабыр етіп, дәлелденген тиімділікті күтіп, тақырыпты жабуға болатын сияқты.
Бірақ біз келесі айқын оңтайландыру мүмкіндіктері арқылы жаңа кезеңді жүзеге асыруға итермелеп отырмыз

  1. Статистика, мысалы, осында и осында екі және төрт процессорлы жүйелердің өнімділігі жағынан бір процессорлы жүйелерге қарағанда айтарлықтай төмен екенін көрсетеді. Бұл барлық пайдаланушылар бір процессорлы жүйелермен салыстырғанда мультипроцессорлық жүйелерде сатып алынған CPU, RAM, SSD, LAN, FC-ден айтарлықтай аз шығыс алатынын білдіреді.
  2. Ресурстарды жоспарлаушылардың өзінде елеулі қателер болуы мүмкін, мақалалардың бірі осында осы тақырыпқа.
  3. Жедел жады мен кэшті бақылау үшін Intel және AMD ұсынатын технологиялар виртуалды машиналар әрекетін зерттеуге және оларды «шулы» көршілер «тыныш» виртуалды машиналарға кедергі жасамайтындай етіп орналастыруға мүмкіндік береді.
  4. Параметрлер жинағын кеңейту (желі, сақтау жүйесі, виртуалды машинаның басымдығы, көшіру құны, оның көшуге дайындығы).

Барлығы

Біздің теңгерімдеу алгоритмдерін жетілдіру бойынша жұмысымыздың нәтижесі қазіргі заманғы алгоритмдерді пайдалану деректер орталығының ресурстарын айтарлықтай оңтайландыруға (25-30%) қол жеткізуге және сонымен бірге тұтынушыларға қызмет көрсету сапасын жақсартуға болатыны туралы нақты қорытынды болды.

Нейрондық желілерге негізделген алгоритм, әрине, қызықты шешім, бірақ одан әрі дамытуды қажет ететін шешім және бар шектеулерге байланысты ол жеке бұлттарға тән көлемдердегі мұндай мәселені шешуге жарамайды. Сонымен қатар, алгоритм айтарлықтай көлемдегі қоғамдық бұлттарда жақсы нәтиже көрсетті.

Процессорлардың, жоспарлаушылардың және жоғары деңгейлі теңгерімдеудің мүмкіндіктері туралы келесі мақалаларда толығырақ айтып береміз.

Ақпарат көзі: www.habr.com

пікір қалдыру