Бұлттық қызмет болған кезде қалай тыныш ұйықтауға болады: негізгі архитектуралық кеңестер

Бұлттық қызмет болған кезде қалай тыныш ұйықтауға болады: негізгі архитектуралық кеңестерsophiagworld ЖОҒАЛДЫ

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

Автордың тәжірибесінде бұл толық тізім емес, бірақ шын мәнінде тиімді кеңес беру. Сонымен, бастайық.

Қолдау арқылы аударылған Mail.ru бұлтты шешімдері.

Бастапқы деңгей

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

Инфрақұрылым код ретінде

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

100 виртуалды машинаны орналастыру

  • Ubuntu көмегімен
  • Әрқайсысы 2 ГБ жедел жады
  • оларда келесі код болады
  • осы параметрлермен

Инфрақұрылымдағы өзгерістерді бақылап, нұсқаларды басқару арқылы оларға жылдам оралуға болады.

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

Бұған қоса, Chef, Puppet немесе Terraform көмегімен автоматтандыруды қамтамасыз ете аласыз.

Үздіксіз интеграция және жеткізу

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

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

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

Бұл технология үшін Github, CircleCI немесе Дженкинсті бағалауға болады.

Жүктеме балансы

Сонымен, біз трафикті қайта бағыттау және барлық түйіндерге бірдей жүктемені қамтамасыз ету үшін жүктеме балансын іске қосқымыз келеді немесе сәтсіз жағдайда қызмет жалғасады:

Бұлттық қызмет болған кезде қалай тыныш ұйықтауға болады: негізгі архитектуралық кеңестер
Жүктеме теңестіруші әдетте трафикті таратуда жақсы жұмыс істейді. Ең жақсы тәжірибе - бірде-бір сәтсіздікке ұшырамас үшін шамадан тыс теңестіру.

Әдетте, жүк теңгергіштері сіз пайдаланатын бұлтта конфигурацияланады.

RayID, корреляция идентификаторы немесе сұраулар үшін UUID

Сіз келесідей хабары бар қолданба қатесін кездестірдіңіз бе: «Бірдеңе дұрыс болмады. Осы идентификаторды сақтап, оны қолдау көрсету тобына жіберіңіз»?

Бұлттық қызмет болған кезде қалай тыныш ұйықтауға болады: негізгі архитектуралық кеңестер
Бірегей идентификатор, корреляция идентификаторы, RayID немесе вариациялардың кез келгені сұрауды өмірлік циклі бойы бақылауға мүмкіндік беретін бірегей идентификатор болып табылады. Бұл журналдардағы бүкіл сұрау жолын қадағалауға мүмкіндік береді.

Бұлттық қызмет болған кезде қалай тыныш ұйықтауға болады: негізгі архитектуралық кеңестер
Пайдаланушы A жүйесіне сұраныс жасайды, содан кейін А В контактілерімен байланысады, ол C контактісін X жүйесінде сақтайды, содан кейін сұрау A жүйесіне қайтарылады.

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

Орташа деңгей

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

Орталықтандырылған журнал жүргізу

Құттықтаймыз! Сіз 100 виртуалды машинаны орналастырдыңыз. Келесі күні бас директор келіп, қызметті сынау кезінде алған қате туралы шағымданады. Ол жоғарыда біз айтқан сәйкес идентификаторды хабарлайды, бірақ апатқа себеп болған құрылғыны табу үшін 100 машинаның журналдарын қарау керек. Ал оны ертеңгі тұсаукесерге дейін табу керек.

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

Бұлттық қызмет болған кезде қалай тыныш ұйықтауға болады: негізгі архитектуралық кеңестер
ELK стек функциясы

Бақылау агенттері

Енді сіздің қызметіңіз жұмыс істеп тұрғандықтан, оның біркелкі жұмыс істейтініне көз жеткізуіңіз керек. Мұны істеудің ең жақсы жолы - бірнеше іске қосу агенттер, ол параллель жұмыс істейді және оның жұмыс істеп тұрғанын және негізгі операциялардың орындалғанын тексеріңіз.

Осы кезде сіз оны тексересіз жүгіру құрылымы жақсы сезінеді және жақсы жұмыс істейді.

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

Жүктемеге байланысты автоматты масштабтау

Бұл өте оңай. Егер сізде VM қызмет көрсету сұраулары болса және ол жадты пайдалану 80%-ға жақындаса, оның ресурстарын көбейтуге немесе кластерге көбірек VM қосуға болады. Бұл операцияларды автоматты түрде орындау жүктеме кезінде икемді қуаттың өзгеруі үшін тамаша. Бірақ сіз әрқашан қанша ақша жұмсайтыныңызға абай болып, ақылға қонымды шектеулер қоюыңыз керек.

Бұлттық қызмет болған кезде қалай тыныш ұйықтауға болады: негізгі архитектуралық кеңестер
Көптеген бұлттық қызметтерде оны көбірек серверлерді немесе күштірек серверлерді пайдаланып автоматты масштабтау үшін конфигурациялауға болады.

Эксперимент жүйесі

Жаңартуларды қауіпсіз шығарудың жақсы жолы - бір сағат ішінде пайдаланушылардың 1% үшін бір нәрсені сынау. Сіз, әрине, мұндай механизмдердің жұмыс істеп жатқанын көрдіңіз. Мысалы, Facebook аудитория бөліктерін басқа түспен көрсетеді немесе пайдаланушылардың өзгерістерді қалай қабылдағанын көру үшін қаріп өлшемін өзгертеді. Бұл A/B сынағы деп аталады.

Тіпті жаңа мүмкіндікті шығаруды эксперимент ретінде бастауға болады, содан кейін оны қалай шығару керектігін анықтауға болады. Сондай-ақ қызметіңіздің нашарлауын тудыратын функция негізінде конфигурацияны «есте сақтау» немесе өзгерту мүмкіндігін аласыз.

Жоғары деңгей

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

Көк-жасыл орналастырулар

Мен мұны «Ерлаң» жолын ашу деп атаймын. Ерланг телефон компаниялары пайда болған кезде кеңінен қолданыла бастады. Телефон қоңырауларын бағыттау үшін жұмсақ қосқыштар қолданыла бастады. Бұл қосқыштардағы бағдарламалық құралдың негізгі мақсаты жүйені жаңарту кезінде қоңырауларды түсірмеу болды. Erlang-те алдыңғы модульді бұзбай жаңа модульді жүктеудің жақсы әдісі бар.

Бұл қадам жүктеме балансының болуына байланысты. Сізде бағдарламалық құралдың N нұсқасы бар деп елестетіп көрейік, содан кейін N+1 нұсқасын қолданғыңыз келеді. 

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

Егер сіз шынымен осындай көрсеткіштерге қол жеткізгіңіз келсе, сізге бір уақытта екі орналастыру қажет: 

  • дәл қазір (N);
  • келесі нұсқа (N+1). 

Сіз жүктемені теңестірушіге регрессияларды белсенді түрде бақылаған кезде трафиктің бір пайызын жаңа нұсқаға (N+1) қайта бағыттауын айтасыз.

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

Алдымен біз N+1 орналастыруымыз трафиктің аз мөлшерімен жұмыс істейтінін білу үшін шынымен шағын сынақ жібереміз:

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

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

Аномалияны анықтау және автоматты түрде азайту

Сізде орталықтандырылған журнал жүргізу және жақсы журнал жинау бар екенін ескере отырып, жоғарырақ мақсаттар қоюға болады. Мысалы, сәтсіздіктерді алдын ала болжаңыз. Функциялар мониторларда және журналдарда бақыланады және әртүрлі диаграммалар құрастырылады - және сіз ненің дұрыс емес болатынын алдын ала болжай аласыз:

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

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

Осымен болды!

Бұл басымдықтардың тізімі бұлттық қызметті көтерсеңіз, сізді көптеген мәселелерден құтқарады.

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

Тақырып бойынша тағы не оқу керек:

  1. Өтіңіз және CPU кэштері
  2. Жүзеге асыруға арналған шаблонмен пираттық рухтағы Кубернетес
  3. Telegram-дағы Kubernetes айналасындағы арнамыз

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

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