Qrator филтркунии системаи идоракунии конфигуратсияи шабака

Qrator филтркунии системаи идоракунии конфигуратсияи шабака

ХИБ; DR: Тавсифи меъмории муштарӣ-сервери системаи идоракунии конфигуратсияи шабакаи дохилии мо, QControl. Он ба протоколи интиқоли дуқабата асос ёфтааст, ки бо паёмҳои бастабандии gzip бе декомпрессия байни нуқтаҳои ниҳоӣ кор мекунад. Роутерҳо ва нуқтаҳои тақсимшуда навсозиҳои конфигуратсияро мегиранд ва худи протокол имкон медиҳад, ки релеҳои фосилавии маҳаллӣ насб карда шаванд. Система дар асоси принцип сохта шудааст нусхаи дифференсиалӣ ("охир-муътадил", дар зер шарҳ дода шудааст) ва забони дархости JMESpath-ро дар якҷоягӣ бо муҳаррики шаблонсозии Jinja барои пешниҳоди файлҳои конфигуратсия истифода мебарад.

Qrator Labs як шабакаи ҷаҳонии паҳншудаи кам кардани ҳамлаҳоро идора мекунад. Шабакаи мо аз рӯи принсипи anycast кор мекунад ва зершабакаҳо тавассути BGP таблиғ карда мешаванд. Шабакаи BGP anycast, ки аз ҷиҳати ҷисмонӣ дар якчанд минтақаҳои Замин ҷойгир аст, мо метавонем трафики ғайриқонуниро ба маркази Интернет - операторони Tier-1 наздиктар коркард ва филтр кунем.

Аз тарафи дигар, будан шабакаи аз ҷиҳати ҷуғрофӣ тақсимшуда осон нест. Алоқа байни нуқтаҳои ҳузури шабака барои провайдери хидматрасонии амниятӣ муҳим аст, то конфигуратсияи пайвастаи ҳамаи гиреҳҳои шабакаро дошта бошад ва онҳоро сари вақт нав кунад. Аз ин рӯ, барои таъмини сатҳи баландтарини хидматрасонии асосӣ ба истеъмолкунанда, ба мо лозим буд, ки роҳи боэътимоди ҳамоҳангсозии маълумоти конфигуратсияро дар тамоми қитъаҳо пайдо кунем.

Дар ибтидо Калом буд. Он зуд ба протоколи иртиботӣ табдил ёфт, ки ба навсозӣ ниёз дошт.


Асоси мавҷудияти QControl ва ҳамзамон сабаби асосии сарфи миқдори зиёди вақт ва захираҳо барои сохтани ин гуна протокол, зарурати ба даст овардани як манбаи бонуфузи конфигуратсия ва дар ниҳоят ҳамоҳангсозии нуқтаҳои ҳузури мост. бо он. Худи нигаҳдорӣ танҳо яке аз якчанд талабот ҳангоми таҳияи QControl буд. Илова бар ин, мо инчунин ба ҳамгироӣ бо хидматҳои мавҷуда ва ба нақша гирифташуда дар нуқтаҳои ҳузур (POP), усулҳои оқилона (ва танзимшаванда) барои тасдиқи додаҳо ва инчунин назорати дастрасӣ ниёз доштем. Ғайр аз ин, мо инчунин мехостем, ки чунин системаро бо истифода аз фармонҳо назорат кунем, на ворид кардани тағирот ба файл. Пеш аз QControl, маълумот ба нуқтаҳои ҳузур қариб дастӣ фиристода мешуд. Агар яке аз нуқтаҳои ҳузур дастнорас мебуд ва мо онро дертар навсозӣ карданро фаромӯш карда бошем, конфигуратсия аз ҳамоҳангӣ ба охир мерасад ва мо бояд барои барқарор кардан ва ба кор андохтани он вақт сарф кунем.

Дар натиҷа, мо нақшаи зеринро ба даст овардем:
Qrator филтркунии системаи идоракунии конфигуратсияи шабака
Сервери конфигуратсия барои тасдиқ ва нигоҳдории додаҳо масъул аст; роутер дорои якчанд нуқтаи ниҳоӣ мебошад, ки навсозиҳои конфигуратсияро аз муштариён ва гурӯҳҳои дастгирӣ ба сервер ва аз сервер ба нуқтаҳои ҳузур қабул ва пахш мекунанд.

Сифати пайвастшавӣ ба интернет то ҳол дар саросари ҷаҳон ба таври васеъ фарқ мекунад - барои нишон додани ин нукта, биёед як MTR оддиро аз Прага, Ҷумҳурии Чех то Сингапур ва Ҳонконг бубинем.

Qrator филтркунии системаи идоракунии конфигуратсияи шабака
MTR аз Прага ба Сингапур

Qrator филтркунии системаи идоракунии конфигуратсияи шабака
Айнан ҳамин чиз ба Ҳонконг

Таъхири баланд маънои суръати пастро дорад. Илова бар ин, талафоти бастаҳо вуҷуд дорад. Паҳнои канал ин мушкилотро ҷуброн намекунад, ки ҳангоми сохтани системаҳои ғайримарказӣ ҳамеша бояд ба назар гирифта шавад.

Конфигуратсияи пурраи нуқтаи ҳузур миқдори назарраси маълумотест, ки бояд ба бисёре аз гирандагон тавассути пайвастҳои беэътимод фиристода шаванд. Хушбахтона, гарчанде ки конфигуратсия доимо тағир меёбад, он бо афзоиши хурд рух медиҳад.

Тарҳрезии охирин устувор

Мо гуфта метавонем, ки сохтани шабакаи тақсимшуда дар асоси принсипи навсозии афзоянда як роҳи ҳалли хеле равшан аст. Аммо бо фарқиятҳо мушкилоти зиёде мавҷуданд. Мо бояд ҳамаи фарқиятҳои байни нуқтаҳои истинодро захира кунем ва инчунин тавонем онҳоро дубора ирсол кунем, агар касе қисмати маълумотро аз даст диҳад. Ҳар як макони таъинот бояд онҳоро бо пайдарпаии қатъии муайяншуда татбиқ кунад. Одатан, дар мавриди якчанд самт, чунин амалиёт метавонад муддати тӯлонӣ гирад. Қабулкунанда инчунин бояд қодир бошад, ки қисмҳои гумшударо дархост кунад ва албатта, қисми марказӣ бояд ба чунин дархост дуруст ҷавоб диҳад ва танҳо маълумоти гумшударо фиристад.

Дар натиҷа, мо ба як ҳалли хеле ҷолиб омадем - мо танҳо як қабати истинод дорем, собит, биёед онро устувор меномем ва танҳо як фарқият барои он - навтарин. Ҳар як навтарин ба устувори охирини тавлидшуда асос ёфтааст ва барои барқарор кардани маълумоти конфигуратсия кифоя аст. Ҳамин ки навдаи нав ба ҷои таъиншуда мерасад, кӯҳна дигар лозим нест.

Ҳама чизи боқимонда фиристодани конфигуратсияи устувори нав аст, масалан, аз сабаби он ки охирин хеле калон шудааст. Он чизе, ки дар ин ҷо муҳим аст, он аст, ки мо ҳамаи ин навсозиҳо дар реҷаи пахши/мулти пахши бе хавотир дар бораи қабулкунандагони инфиродӣ ва қобилияти онҳо барои тақсим кардани пораҳои додаҳо мефиристем. Вақте ки мо боварӣ дорем, ки ҳама дорои амбори дуруст аст, мо танҳо навгониҳои навро мефиристем. Оё фаҳмондан лозим аст, ки ин кор мекунад? Кор мекунад. Устувор дар сервери конфигуратсия ва гирандагон кэш карда мешавад, навтарин дар ҳолати зарурӣ сохта мешавад.

Архитектураи нақлиёти дудараҷа

Чаро мо нақлиёти худро дар ду сатҳ сохтем? Ҷавоб хеле оддӣ аст - мо мехостем масирро аз мантиқи сатҳи баланд ҷудо кунем ва аз модели OSI бо қабатҳои нақлиётӣ ва татбиқи он илҳом гирем. Мо Thrift-ро барои нақши протоколи интиқолӣ ва формати сериализатсияи msgpack барои формати сатҳи баланди паёмҳои назоратӣ истифода бурдем. Ин аст, ки роутер (иҷрокунандаи мултипликатор/паҳн/реле) ба дохили msgpack нигоҳ намекунад, мундариҷаро боз намекушояд ё ба қафо баста намекунад ва танҳо маълумотро пеш мебарад.

Thrift (аз инглисӣ - "thrift", талаффузи [θrift]) як забони тавсифи интерфейс аст, ки барои муайян ва эҷоди хидматҳо барои забонҳои гуногуни барномасозӣ истифода мешавад. Он чаҳорчӯба барои зангҳои расмиёти дурдаст (RPC) мебошад. Як лӯлаи нармафзорро бо муҳаррики тавлиди код барои таҳияи хидматҳое, ки камтар ё камтар самаранок ва осон байни забонҳо кор мекунанд, муттаҳид мекунад.

Мо чаҳорчӯбаи Thrift-ро аз сабаби RPC ва дастгирии бисёр забонҳо интихоб кардем. Тавре маъмулӣ, қисмҳои осон муштарӣ ва сервер буданд. Бо вуҷуди ин, роутер як чормағзи сахте буд, ки шикастан мумкин аст, ки қисман аз сабаби набудани ҳалли омода ҳангоми таҳияи мо.

Qrator филтркунии системаи идоракунии конфигуратсияи шабакаВариантҳои дигар вуҷуд доранд, ба монанди protobuf / gRPC, аммо вақте ки мо лоиҳаи худро оғоз кардем, gRPC хеле нав буд ва мо ҷуръат накардем, ки онро ба даст орем.

Албатта, мо метавонем (ва дар асл мебоист) дучархаи худро созем. Эҷоди протокол барои он чизе, ки ба мо лозим аст, осонтар мебуд, зеро меъмории муштарӣ-сервер нисбат ба сохтани роутер дар Thrift нисбатан осонтар аст. Бо ин ё он роҳ, як ғарази анъанавӣ нисбат ба протоколҳои худнависӣ ва татбиқи китобхонаҳои маъмул вуҷуд дорад (бо сабаби узрнок); Илова бар ин, ҳангоми муҳокима ҳамеша саволе ба миён меояд: "Мо инро чӣ гуна ба забонҳои дигар интиқол медиҳем?" Ҳамин тавр, мо дарҳол идеяи велосипедро тарк кардем.

Msgpack ба JSON монанд аст, аммо тезтар ва хурдтар. Ин формати сериализатсияи додаҳои дуӣ мебошад, ки имкон медиҳад маълумот байни забонҳои гуногун мубодила карда шавад.

Дар сатҳи аввал мо Thrift дорем, ки маълумоти ҳадди ақал барои роутер барои фиристодани паём зарур аст. Дар сатҳи дуюм сохторҳои бастабандии msgpack мавҷуданд.

Мо msgpack-ро интихоб кардем, зеро он нисбат ба JSON тезтар ва паймонтар аст. Аммо муҳимтар аз ҳама, он намудҳои фармоишии додаҳоро дастгирӣ мекунад, ки ба мо имкон медиҳад, ки хусусиятҳои ҷолибро истифода барем, ба монанди интиқоли бинарҳои хом ё объектҳои махсус, ки набудани маълумотро нишон медиҳанд, ки барои нақшаи "ба наздикӣ устувор" -и мо муҳим буд.

JMESPath
JMESPath забони дархости JSON аст.
Ин маҳз ҳамон чизест, ки тавсифе, ки мо аз ҳуҷҷатҳои расмии JMESPath мегирем, ба назар мерасад, аммо дар асл, он аз ин бештар кор мекунад. JMESPath ба шумо имкон медиҳад, ки зердарахтҳоро дар сохтори дарахти худсарона ҷустуҷӯ ва филтр кунед ва тағиротро ба маълумот дар парвоз татбиқ кунед. Он инчунин ба шумо имкон медиҳад, ки филтрҳои махсус ва расмиёти табдили маълумот илова кунед. Гарчанде ки ин, албатта, барои фаҳмидани он кӯшиши майнаро талаб мекунад.

Jinja
Барои баъзе истеъмолкунандагон, мо бояд конфигуратсияро ба файл табдил диҳем - аз ин рӯ, мо муҳаррики шаблонро истифода мебарем ва Jinja интихоби равшан аст. Бо ёрии он мо файли конфигуратсияро аз шаблон ва маълумоте, ки дар макони таъинот гирифта шудааст, тавлид мекунем.

Барои тавлиди файли конфигуратсия ба мо дархости JMESPath, қолаб барои ҷойгиршавии файл дар FS ва қолаб барои худи конфигуратсия лозим аст. Инчунин дар ин марҳила барои равшан кардани иҷозатҳои файл як фикри хуб аст. Ҳамаи ин дар як файл бомуваффақият муттаҳид карда шуд - пеш аз оғози қолаби конфигуратсия, мо сарлавҳаро дар формати YAML гузоштем, ки боқимондаҳоро тавсиф мекунад.

Масалан:

---
selector: "[@][[email protected]._meta.version == `42`] | items([0].fft_config || `{}`)"
destination_filename: "fft/{{ match[0] }}.json"
file_mode: 0644
reload_daemons: [fft] ...
{{ dict(match[1]) | json(indent=2, sort_keys=True) }}

Барои сохтани файли конфигуратсия барои хидмати нав, мо танҳо як файли қолаби нав илова мекунем. Ҳеҷ гуна тағирот ба коди манбаъ ё нармафзор дар нуқтаҳои ҳузур талаб карда намешавад.

Пас аз фаъол шудани QControl чӣ тағир ёфт? Аввалин ва муҳимтарин ин интиқоли пайваста ва боэътимоди навсозии конфигуратсия ба ҳама гиреҳҳои шабака мебошад. Дуюм ин аст, ки як воситаи пурқувват барои тафтиши конфигуратсия ва ворид кардани тағйирот ба он аз ҷониби дастаи дастгирии мо ва инчунин аз ҷониби истеъмолкунандагони хидмат.

Мо тавонистем ҳамаи инро бо истифода аз схемаи навсозии устувори охирин барои содда кардани иртибот байни сервери конфигуратсия ва гирандагони конфигуратсия анҷом диҳем. Истифодаи протоколи дуқабата барои дастгирии роҳи мустақили масири маълумот. Бомуваффақият як муҳаррики тавлиди конфигуратсия дар асоси Ҷинҷа ба шабакаи филтркунии тақсимшуда ҳамроҳ карда шуд. Ин система доираи васеи усулҳои конфигуратсияро барои перифериҳои тақсимшуда ва гетерогении мо дастгирӣ мекунад.

Ташаккур барои кӯмакатон дар навиштани мавод. Волан Дамрод, серенгейт, НЕ.

Нусхаи англисӣ пост.

Манбаъ: will.com

Илова Эзоҳ