
Салом, Хабр! Ман Артем Карамышев, сардори дастаи маъмурияти система . Мо дар давоми як соли охир бисьёр махсулоти навро ба рох мондем. Мо мехостем боварӣ ҳосил кунем, ки хидматҳои API ба осонӣ миқёспазир, ба хатоҳо таҳаммулпазиранд ва барои афзоиши босуръати сарбории корбар омодаанд. Платформаи мо дар OpenStack амалӣ карда мешавад ва ман мехоҳам ба шумо бигӯям, ки барои ба даст овардани системаи ба хатогиҳо таҳаммулпазир кадом мушкилотро ҳал кардан лозим буд. Ман фикр мекунам, ки ин барои онҳое, ки дар OpenStack маҳсулот таҳия мекунанд, ҷолиб хоҳад буд.
Таҳаммулпазирии умумии хатогиҳои платформа аз устувории ҷузъҳои он иборат аст. Ҳамин тавр, мо тадриҷан аз тамоми сатҳҳое мегузарем, ки дар он ҷо хатарҳоро муайян карда, онҳоро бастаем.
Версияи видеоии ин ҳикоя, ки сарчашмаи асосии он гузориш дар конфронси Uptime day 4 буд, ки аз ҷониби созмон ташкил карда шудааст , шумо мебинед .
Муқовимати меъмории физикӣ
Қисми ҷамъиятии абри MCS ҳоло дар ду маркази додаҳои Tier III ҷойгир аст, ки дар байни онҳо нахи торикии худ мавҷуд аст, ки дар сатҳи физикӣ бо масирҳои гуногун бо интиқоли 200 Гбит/с ҳифз шудаанд. Сатҳи III сатҳи зарурии таҳаммулпазирии хатогиҳоро барои инфрасохтори физикӣ таъмин мекунад.
Нахи торик ҳам дар сатҳи физикӣ ва ҳам мантиқӣ нигоҳ дошта мешавад. Раванди фармоиши каналҳо такроршаванда буд, мушкилот ба миён омад ва мо пайваста алоқаро байни марказҳои додаҳо такмил медиҳем.
Масалан, чанде пеш хангоми кор дар чохи назди яке аз марказхои маълумотй экскаватор кубурро шикаста, дар дохили ин кубур хам сими магистрали ва хам сими эхтиётй мавчуд буд. Канали муоширати мо бо маркази додаҳо, ки ба хатогиҳо тобовар аст, дар як лаҳза, дар чоҳ осебпазир шуд. Аз ин ру, мо як кисми инфраструктураро аз даст додем. Мо хулоса бароварда, як катор тадбирхо андешидем, аз чумла дар чохи хамсоя монтаж кардани оптикаи иловагй.
Дар марказҳои додаҳо нуқтаҳои ҳузури провайдерҳои алоқа мавҷуданд, ки мо префиксҳои худро тавассути BGP пахш мекунем. Барои ҳар як самти шабака беҳтарин метрик интихоб карда мешавад, ки имкон медиҳад муштариёни гуногун бо сифати беҳтарини пайваст таъмин карда шаванд. Агар иртибот тавассути як провайдер қатъ шавад, мо масири худро тавассути провайдерҳои дастрас аз нав барқарор мекунем.
Агар провайдер ноком шавад, мо ба таври худкор ба дигараш мегузарем. Дар сурати аз кор баромадани яке аз марказҳои додаҳо, мо нусхаи оинаи хидматҳои худро дар маркази дуюми додаҳо дорем, ки тамоми сарбориро ба дӯш мегирад.

Муқовимати инфрасохтори физикӣ
Он чизе ки мо барои таҳаммулпазирии хатогиҳо дар сатҳи барнома истифода мебарем
Хидмати мо дар як қатор ҷузъҳои кушодаасос сохта шудааст.
ExaBGP хидматест, ки як қатор вазифаҳоро бо истифода аз протоколи масири динамикӣ дар асоси BGP амалӣ мекунад. Мо онро барои таблиғи суроғаҳои IP-и рӯйхати сафедшудаи худ, ки тавассути онҳо корбарон ба API дастрасӣ доранд, фаъолона истифода мебарем.
HAProxy як мувозинати сарбории баланд аст, ки ба шумо имкон медиҳад, ки қоидаҳои хеле чандири мувозинати трафикро дар сатҳҳои гуногуни модели OSI танзим кунед. Мо онро барои мувозинат дар назди ҳама хидматҳо истифода мебарем: пойгоҳи додаҳо, брокерҳои паёмҳо, хидматҳои API, хидматҳои веб, лоиҳаҳои дохилии мо - ҳама чиз дар паси HAProxy аст.
барномаи API — замимаи веб, ки бо забони python навишта шудааст, ки бо он корбар инфрасохтор ва хидмати худро идора мекунад.
Аризаи коргар (минбаъд танҳо коргар) - дар хидматҳои OpenStack, ин як демони инфрасохтор аст, ки ба шумо имкон медиҳад фармонҳои API-ро ба инфрасохтор пахш кунед. Масалан, эҷоди диск дар коргар рух медиҳад ва дархости эҷод дар API барнома ба амал меояд.
Меъмории барномаи стандартии OpenStack
Аксарияти хидматҳое, ки барои OpenStack таҳия шудаанд, кӯшиш мекунанд, ки парадигмаи ягонаро риоя кунанд. Хидмат одатан аз 2 қисм иборат аст: API ва коргарон (иҷрокунандагони пушти сар). Чун қоида, API як барномаи WSGI дар python мебошад, ки ё ҳамчун раванди мустақил (демон) ё бо истифода аз веб-сервери тайёри Nginx ё Apache оғоз мешавад. API дархости корбарро коркард мекунад ва дастурҳои минбаъдаро ба барномаи коргар барои иҷро мефиристад. Интиқол бо истифода аз брокери паёмӣ, одатан RabbitMQ сурат мегирад, дигарон суст дастгирӣ карда мешаванд. Вақте ки паёмҳо ба брокер мерасад, онҳо аз ҷониби коргарон коркард карда мешаванд ва дар ҳолати зарурӣ ҷавоб бармегардонанд.
Ин парадигма нуқтаҳои ҷудошудаи умумии нокомиро дар бар мегирад: RabbitMQ ва пойгоҳи додаҳо. Аммо RabbitMQ дар як хидмат ҷудо карда шудааст ва дар назария метавонад барои ҳар як хидмат инфиродӣ бошад. Ҳамин тавр, дар MCS мо ин хидматҳоро ба қадри имкон ҷудо мекунем; барои ҳар як лоиҳаи инфиродӣ мо махзани алоҳида, RabbitMQ-и алоҳида эҷод мекунем. Ин равиш хуб аст, зеро дар сурати рух додани садама дар баъзе нуқтаҳои осебпазир на тамоми хидмат, балки танҳо як қисми он вайрон мешавад.
Шумораи барномаҳои коргарӣ номаҳдуд аст, аз ин рӯ API метавонад ба осонӣ ба таври уфуқӣ паси мувозинатҳоро васеъ кунад, то иҷрои кор ва таҳаммулпазирии хатогиҳоро афзоиш диҳад.
Баъзе хидматҳо ҳамоҳангсозии дохили хидматро талаб мекунанд, вақте ки амалиёти мураккаби пайдарпай байни API ва коргарон ба амал меоянд. Дар ин ҳолат, як маркази ягонаи ҳамоҳангсозӣ, системаи кластерӣ ба монанди Redis, Memcache ва ғайра истифода мешавад, ки ба як коргар имкон медиҳад, ки ба дигараш гӯяд, ки ин вазифа ба ӯ гузошта шудааст (лутфан онро қабул накунед)). Мо ғайраро истифода мебарем. Чун қоида, коргарон бо базаи маълумот фаъолона муошират мекунанд, аз он ҷо маълумот менависанд ва мехонанд. Мо mariadb-ро ҳамчун пойгоҳи додаҳо истифода мебарем, ки дар кластери мултимастерӣ ҷойгир аст.
Ин хидмати классикии ягона бо тарзе ташкил карда шудааст, ки барои OpenStack маъмул аст. Онро метавон ҳамчун системаи пӯшида ҳисоб кард, ки барои он усулҳои миқёс ва таҳаммулпазирии хатогиҳо хеле равшананд. Масалан, барои таҳаммулпазирии хатогиҳои API, дар назди онҳо гузоштани мувозинат кофӣ аст. Миқёси коргарон аз ҳисоби зиёд кардани шумораи онҳо ба даст меояд.
Нуқтаи заиф дар тамоми нақша RabbitMQ ва MariaDB мебошад. Меъмории онҳо сазовори мақолаи алоҳида аст.Дар ин мақола ман мехоҳам ба таҳаммулпазирии хатогиҳои API тамаркуз кунам.

Архитектураи Барномаҳои Openstack. Мувозинат ва таҳаммулпазирии хатогиҳои платформаи абр
Бо истифода аз ExaBGP тавозуни HAProxy-ро ба хатогиҳо тобовар созед
Барои он ки API-ҳои мо миқёспазир, зуд ва ба хатоҳо тобовар бошанд, мо дар назди онҳо мувозинати сарборӣ мегузорем. Мо HAProxy-ро интихоб кардем. Ба андешаи ман, он дорои тамоми хусусиятҳои зарурӣ барои вазифаи мост: мувозинат дар якчанд сатҳҳои OSI, интерфейси идоракунӣ, чандирӣ ва миқёспазирӣ, миқдори зиёди усулҳои мувозинат, дастгирии ҷадвалҳои сессия.
Мушкилоти аввалине, ки бояд ҳал карда шавад, ин таҳаммулпазирии хатогиҳои худи балансатор буд. Танҳо насб кардани мувозинат инчунин нуқтаи нокомиро ба вуҷуд меорад: мувозинат мешиканад ва хидмат вайрон мешавад. Барои пешгирии ин ҳодиса, мо HAProxy-ро дар якҷоягӣ бо ExaBGP истифода бурдем.
ExaBGP ба шумо имкон медиҳад, ки механизми санҷиши ҳолати хидматро амалӣ намоед. Мо ин механизмро барои санҷидани фаъолияти HAProxy истифода бурдем ва дар ҳолати мушкилот хидмати HAProxy-ро аз BGP ғайрифаъол созем.
Нақшаи ExaBGP+HAProxy
- Мо нармафзори зарурӣ ExaBGP ва HAProxy -ро дар се сервер насб мекунем.
- Мо дар ҳар як сервер интерфейси бозгашт эҷод мекунем.
- Дар ҳар се сервер мо ба ин интерфейс як суроғаи IP-и сафедро таъин мекунем.
- Суроғаи IP-и сафед тавассути ExaBGP ба Интернет эълон карда мешавад.
Таҳаммулпазирии хатогӣ тавассути таблиғи як суроғаи IP аз ҳар се сервер ба даст оварда мешавад. Аз нуқтаи назари шабака, ҳамон як суроға аз се ҳопи оянда дастрас аст. Роутер се масири якхеларо мебинад, афзалияти баландтарини онҳоро дар асоси метрикаи худ интихоб мекунад (ин одатан як вариант аст) ва трафик танҳо ба яке аз серверҳо меравад.
Дар сурати мушкилот бо кори HAProxy ё нокомии сервер, ExaBGP эълони масирро қатъ мекунад ва трафик ба осонӣ ба сервери дигар мегузарад.
Ҳамин тариқ, мо ба таҳаммулпазирии хатогиҳои балансатор ноил гардидем.

Таҳаммулпазирии хатогиҳои тавозуни HAProxy
Нақша номукаммал шуд: мо фаҳмидем, ки чӣ тавр захира кардани HAProxy-ро омӯзем, аммо чӣ гуна тақсим кардани сарборро дар дохили хидматҳо ёд нагирифтаем. Аз ин рӯ, мо ин схемаро каме васеъ кардем: мо ба мувозинат байни якчанд суроғаҳои IP сафед гузаштем.
Мувозинат дар асоси DNS ва BGP
Масъалаи мувозинати сарборӣ барои HAProxy мо ҳалношуда боқӣ мемонад. Бо вуҷуди ин, онро метавон хеле содда ҳал кард, чунон ки мо дар ин ҷо кардем.
Барои мувозинати се сервер ба шумо 3 суроғаи IP сафед ва DNS-и хуби кӯҳна лозим аст. Ҳар яке аз ин суроғаҳо дар интерфейси бозгашти ҳар як HAProxy муайян карда мешавад ва дар Интернет эълон карда мешавад.
Дар OpenStack барои идоракунии захираҳо, феҳристи хидматрасонӣ истифода мешавад, ки API нуқтаи ниҳоии хидмати мушаххасро муайян мекунад. Дар ин феҳрист мо номи доменро сабти ном мекунем - public.infra.mail.ru, ки тавассути DNS бо се суроғаҳои гуногуни IP ҳал карда мешавад. Дар натиҷа мо тақсимоти сарборро байни се суроға тавассути DNS ба даст меорем.
Аммо азбаски ҳангоми эълони суроғаҳои IP сафед мо афзалиятҳои интихоби серверро назорат намекунем, ин ҳоло ҳам мувозинат нест. Одатан, танҳо як сервер аз рӯи собиқаи суроғаи IP интихоб карда мешавад ва дуи дигар бекор хоҳанд буд, зеро дар BGP ягон ченак нишон дода нашудааст.
Мо фиристодани хатсайрҳоро тавассути ExaBGP бо ченакҳои гуногун оғоз кардем. Ҳар як мувозинат ҳар се суроғаи IP-и сафедро таблиғ мекунад, аммо яке аз онҳо, ки барои ин мувозинат асосӣ аст, бо ҳадди ақали метрика таблиғ карда мешавад. Ҳамин тавр, дар ҳоле, ки ҳар се мувозинат дар кор ҳастанд, зангҳо ба суроғаи IP-и аввал ба баланси якум, занг ба дуюм ба дуюм ва ба сеюм ба сеюм занг мезанад.
Вақте ки яке аз мувозинатҳо меафтад, чӣ мешавад? Агар ягон мувозинат кор накунад, суроғаи асосии он то ҳол аз дуи дигар эълон карда мешавад ва трафик байни онҳо дубора тақсим карда мешавад. Ҳамин тариқ, мо ба корбар якбора якчанд суроғаҳои IP-ро тавассути DNS медиҳем. Бо мувозинат аз рӯи DNS ва ченакҳои гуногун, мо тақсимоти яксони сарборро дар ҳар се мувозинат ба даст меорем. Ва дар баробари ин мо таҳаммулпазирии айбро аз даст намедиҳем.

Мувозинати HAProxy дар асоси DNS + BGP
Муносибати байни ExaBGP ва HAProxy
Ҳамин тавр, мо таҳаммулпазирии хатогиҳоро дар сурати тарк кардани сервер дар асоси қатъи эълони хатсайрҳо амалӣ кардем. Аммо HAProxy метавонад бо дигар сабабҳо, ба истиснои нокомии сервер хомӯш шавад: хатогиҳои маъмурӣ, нокомиҳо дар дохили хидмат. Мо мехоҳем, ки дар ин мавридҳо ҳам баланси вайроншударо аз зери бори бардорем ва ба мо механизми дигар лозим аст.
Аз ин рӯ, васеъ кардани нақшаи қаблӣ, мо набзи дилро байни ExaBGP ва HAProxy амалӣ кардем. Ин амалисозии нармафзори ҳамкории байни ExaBGP ва HAProxy мебошад, вақте ки ExaBGP скриптҳои фармоиширо барои тафтиши ҳолати барномаҳо истифода мебарад.
Барои ин ба шумо лозим аст, ки санҷандаи саломатиро дар конфигуратсияи ExaBGP танзим кунед, ки метавонад ҳолати HAProxy-ро тафтиш кунад. Дар ҳолати мо, мо пуштибони саломатиро дар HAProxy танзим кардем ва аз ҷониби ExaBGP мо бо дархости оддии GET тафтиш мекунем. Агар эълон қатъ шавад, пас HAProxy эҳтимолан кор намекунад ва ба таблиғи он ниёзе нест.

Санҷиши саломатии HAProxy
HAProxy Peers: ҳамоҳангсозии сессия
Чизи навбатии бояд ҳамоҳангсозии сессияҳо буд. Ҳангоми кор тавассути мувозинатҳои тақсимшуда, ташкили нигоҳдории маълумот дар бораи сессияҳои муштарӣ душвор аст. Аммо HAProxy яке аз чанд мувозинатист, ки ин корро бо сабаби функсияи Peers - қобилияти интиқоли ҷадвалҳои сессия байни равандҳои гуногуни HAProxy иҷро карда метавонад.
Усулҳои гуногуни мувозинат мавҷуданд: усулҳои оддӣ ба монанди , ва васеъ карда мешавад, вақте ки ҷаласаи муштарӣ ба ёд оварда мешавад ва ҳар дафъае, ки ӯ дар ҳамон сервере, ки қаблан буд, хотима меёбад. Мо мехостем, ки варианти дуюмро амалӣ кунем.
HAProxy барои захира кардани сессияҳои муштарии ин механизм ҷадвалҳои чӯбро истифода мебарад. Онҳо суроғаи аслии IP-и муштарӣ, суроғаи мавриди ҳадафи интихобшуда (паспоя) ва баъзе иттилооти хидматиро захира мекунанд. Одатан, ҷадвалҳои часпак барои нигоҳ доштани ҷуфти манбаъ-IP + таъинот-IP истифода мешаванд, ки махсусан барои барномаҳое муфид аст, ки наметавонанд контексти сеанси корбарро ҳангоми гузаштан ба тавозуни дигар интиқол диҳанд, масалан, дар ҳолати мувозинати RoundRobin.
Агар ба ҷадвали чӯб таълим дода шавад, ки дар байни равандҳои гуногуни HAProxy ҳаракат кунад (дар байни онҳо мувозинат ба амал меояд), мувозинатҳои мо метавонанд бо як ҳавзи ҷадвалҳои чӯб кор кунанд. Ин имкон медиҳад, ки шабакаи муштарӣ бефосила иваз карда шавад, агар яке аз мувозинатҳо ноком шавад; кор бо сеансҳои муштарӣ дар ҳамон ақибгоҳҳое, ки қаблан интихоб шуда буданд, идома хоҳанд дод.
Барои дуруст кор кардан, проблемаи IP-суроғаи манбаи балансатор, ки аз он сессия таъсис дода шудааст, бояд ҳал карда шавад. Дар ҳолати мо, ин суроғаи динамикӣ дар интерфейси бозгашт аст.
Кори дурусти ҳамсолон танҳо дар шароити муайян ба даст меояд. Ин аст, ки мӯҳлатҳои TCP бояд ба қадри кофӣ калон бошанд ё гузариш ба қадри кофӣ зуд бошад, то сессияи TCP барои қатъ шудан вақт надошта бошад. Бо вуҷуди ин, он имкон медиҳад, ки гузариши бефосила.
Дар IaaS мо хидмате дорем, ки бо истифода аз ҳамон технология сохта шудааст. Ин , ки Octavia номида мешавад. Он ба ду раванди HAProxy асос ёфтааст ва дар аввал дастгирии ҳамсолонро дар бар мегирад. Онҳо худро дар ин хидмат аъло нишон доданд.
Тасвир ба таври схематикӣ ҳаракати ҷадвалҳои ҳамсолро байни се мисоли HAProxy нишон медиҳад, конфигуратсия дар бораи он ки чӣ гуна онро танзим кардан мумкин аст, пешниҳод карда мешавад:

HAProxy Peers (синхронизатсияи сессия)
Агар шумо ҳамон схемаро амалӣ кунед, кори он бояд бодиққат санҷида шавад. Ин далел нест, ки он 100% вақт ба ҳамон тарз кор хоҳад кард. Аммо ҳадди аққал шумо ҷадвалҳои чӯбро аз даст намедиҳед, вақте ки шумо бояд IP-и манбаи муштариро дар хотир доред.
Маҳдуд кардани шумораи дархостҳои ҳамзамон аз як муштарӣ
Ҳама гуна хидматҳое, ки ба омма дастрасанд, аз ҷумла API-ҳои мо, метавонанд зери тармаҳои дархостҳо қарор гиранд. Сабабҳои онҳо метавонанд комилан гуногун бошанд, аз хатогиҳои корбар то ҳамлаҳои мақсаднок. Мо мунтазам тавассути суроғаҳои IP DDoS карда мешавем. Мизоҷон аксар вақт дар скриптҳои худ хато мекунанд ва ба мо мини-DDoS-ҳо медиҳанд.
Бо ин ё он роҳ бояд муҳофизати иловагӣ таъмин карда шавад. Ҳалли возеҳ ин маҳдуд кардани шумораи дархостҳои API ва сарф накардани вақти CPU барои коркарди дархостҳои зараровар мебошад.
Барои татбиқи чунин маҳдудиятҳо, мо маҳдудиятҳои нархҳоро истифода мебарем, ки дар асоси HAProxy бо истифода аз ҳамон ҷадвалҳои чӯб ташкил карда шудаанд. Муқаррар кардани маҳдудиятҳо хеле содда аст ва ба шумо имкон медиҳад, ки корбарро аз рӯи шумораи дархостҳо ба API маҳдуд кунед. Алгоритм IP-и манбаъро дар хотир нигоҳ медорад, ки аз он дархостҳо анҷом дода мешаванд ва шумораи дархостҳои ҳамзамон аз як корбарро маҳдуд мекунад. Албатта, мо профили миёнаи сарбории API-ро барои ҳар як хидмат ҳисоб кардем ва маҳдудияти ≈ 10 маротиба аз ин арзиш муқаррар кардем. Мо вазъиятро бодиққат назорат карда, ангушти худро дар набз нигоҳ медорем.
Ин дар амал чӣ гуна ба назар мерасад? Мо мизоҷон дорем, ки ҳамеша API-ҳои автоматии моро истифода мебаранд. Онҳо субҳ тақрибан аз ду то сесад мошини виртуалӣ эҷод мекунанд ва бегоҳ онҳоро нест мекунанд. Барои OpenStack, сохтани мошини виртуалӣ, инчунин бо хидматҳои PaaS, ҳадди аққал 1000 дархости API-ро талаб мекунад, зеро ҳамкории байни хидматҳо низ тавассути API сурат мегирад.
Чунин интиқоли вазифаҳо боиси сарбории хеле калон мегардад. Мо ин сарбориро баҳо додем, қуллаҳои ҳаррӯза ҷамъоварӣ кардем, даҳ маротиба зиёд кардем ва ин маҳдудияти суръати мо гардид. Мо ангушти худро дар набз нигоҳ медорем. Мо аксар вақт ботҳо ва сканерҳоро мебинем, ки кӯшиш мекунанд ба мо нигаранд, то бубинем, ки оё мо ягон скриптҳои CGA-ро иҷро кардан мумкин аст ё не, мо онҳоро фаъолона бурида истодаем.
Чӣ тавр пойгоҳи коди худро бе огоҳии корбарон навсозӣ кардан мумкин аст
Мо инчунин таҳаммулпазирии хатогиҳоро дар сатҳи равандҳои густариши код амалӣ менамоем. Ҳангоми паҳнкунӣ хатогиҳо вуҷуд дошта метавонанд, аммо таъсири онҳо ба дастрасии хидмат метавонад кам карда шавад.
Мо хидматҳои худро пайваста навсозӣ мекунем ва бояд боварӣ ҳосил кунем, ки пойгоҳи код бидуни таъсир ба корбарон нав карда мешавад. Мо тавонистем ин мушкилотро бо истифода аз имконоти идоракунии HAProxy ва татбиқи Graceful Shutdown дар хидматҳои худ ҳал кунем.
Барои ҳалли ин мушкилот, зарур буд, ки назорати баланскунанда ва "дуруст" қатъ кардани хидматҳо:
- Дар мавриди HAProxy, назорат тавассути файли оморӣ иҷро карда мешавад, ки аслан розетка аст ва дар конфигуратсияи HAProxy муайян шудааст. Шумо метавонед ба он тавассути stdio фармон фиристед. Аммо асбоби асосии идоракунии конфигуратсияи мо қобили қабул аст, бинобар ин он дорои модули дарунсохт барои идоракунии HAProxy мебошад. ки мо фаъолона истифода мебарем.
- Аксарияти хидматҳои API ва Engine мо технологияҳои зебои хомӯшкуниро дастгирӣ мекунанд: ҳангоми хомӯш кардан, онҳо интизор мешаванд, ки вазифаи ҷорӣ иҷро шавад, хоҳ он дархости http ё ягон вазифаи хидматӣ. Бо коргар низ хамин тавр мешавад. Вай ҳама вазифаҳои иҷрошавандаро медонад ва вақте ки ҳама чизро бомуваффақият анҷом медиҳад, ба итмом мерасад.
Ба шарофати ин ду нукта, алгоритми бехатари ҷойгиркунии мо чунин менамояд.
- Таҳиягар бастаи нави кодро ҷамъ мекунад (барои мо ин RPM аст), онро дар муҳити таҳиякунанда месанҷад, онро дар марҳила месанҷад ва онро дар анбори саҳна мегузорад.
- Таҳиягар вазифаро барои ҷойгиркунӣ бо тавсифи муфассали "артефактҳо" мегузорад: версияи бастаи нав, тавсифи функсияҳои нав ва тафсилоти дигар дар бораи ҷойгиркунӣ дар ҳолати зарурӣ.
- Мудири система навсозиро оғоз мекунад. Китоби бозикунии Ansible -ро оғоз мекунад, ки дар навбати худ корҳои зеринро иҷро мекунад:
- Бастаро аз анбори саҳна мегирад ва онро барои навсозии версияи баста дар анбори маҳсулот истифода мебарад.
- Рӯйхати пуштибони хидматрасонии навшударо тартиб медиҳад.
- Аввалин хидматеро, ки дар HAProxy навсозӣ мешавад, хомӯш мекунад ва интизори анҷоми равандҳои он аст. Бо шарофати қатъи зебо, мо итминон дорем, ки ҳама дархостҳои ҷории муштарӣ бомуваффақият иҷро мешаванд.
- Пас аз он ки API ва коргарон комилан қатъ карда мешаванд ва HAProxy хомӯш карда мешавад, код нав карда мешавад.
- Ansible хидматҳоро иҷро мекунад.
- Барои ҳар як хидмат, "дастакҳои" муайян кашида мешаванд, ки санҷиши воҳидро дар як қатор санҷишҳои калидии пешакӣ муайяншуда иҷро мекунанд. Санҷиши асосии коди нав сурат мегирад.
- Агар дар қадами қаблӣ ягон хатогӣ пайдо нашавад, пуштибонӣ фаъол карда мешавад.
- Биёед ба пуштибонии оянда гузарем.
- Пас аз навсозии ҳама пуштибонҳо, санҷишҳои функсионалӣ оғоз карда мешаванд. Агар онҳо гум шаванд, он гоҳ таҳиякунанда ба ҳама гуна функсияҳои наве, ки ӯ офаридааст, назар мекунад.
Ин ҷойгиркунӣ анҷом медиҳад.

Давраи навсозии хидмат
Агар мо як коида намедоштем, ин схема кор намекард. Мо дар ҷанг ҳам версияҳои кӯҳна ва ҳам навро дастгирӣ мекунем. Пешакӣ, дар марҳилаи таҳияи нармафзор муқаррар карда мешавад, ки ҳатто агар дар базаи хидматрасонӣ тағирот ба амал ояд, онҳо рамзи қаблиро вайрон намекунанд. Дар натиҷа, базаи код тадриҷан нав карда мешавад.
хулоса
Бо мубодилаи андешаҳои худ дар бораи меъмории WEB ба хатогиҳо таҳаммулпазир, ман мехоҳам бори дигар нуктаҳои асосии онро қайд намоям:
- таҳаммулпазирии хатогиҳои ҷисмонӣ;
- таҳаммулпазирии хатогиҳои шабака (балансерҳо, BGP);
- таҳаммулпазирии хатогиҳои нармафзори истифодашуда ва таҳияшуда.
Барои ҳама вақти кори устувор!
Манбаъ: will.com
