Tupperware: Facebookтун Kubernetes өлтүргүчү?

Tupperware менен каалаган масштабдагы кластерлерди эффективдүү жана ишенимдүү башкаруу

Tupperware: Facebookтун Kubernetes өлтүргүчү?

Бүгүн Системалар @Scale конференциясы биз дээрлик бардык кызматтарыбызды иштеткен миллиондогон серверлерде контейнерлерди уюштурган кластердик башкаруу тутумубуз болгон Tupperwareди киргиздик. Биз Tupperwareди биринчи жолу 2011-жылы орноттук, ошондон бери биздин инфраструктурабыз өстү. 1 маалымат борбору бүтүнгө 15 гео бөлүштүрүлгөн маалымат борборлору. Бул убакыттын баарында Tupperware бир орунда турбай, биз менен бирге өнүктү. Биз сизге Tupperware биринчи класстагы кластердик башкарууну, анын ичинде мамлекеттик кызматтар үчүн ыңгайлуу колдоону, бардык маалымат борборлору үчүн бирдиктүү башкаруу панелин жана реалдуу убакыт режиминде кызматтардын ортосунда кубаттуулукту бөлүштүрүү мүмкүнчүлүгүн көрсөтөбүз. Инфраструктурабыз өнүккөн сайын биз алган сабактарыбыз менен да бөлүшөбүз.

Tupperware ар кандай тапшырмаларды аткарат. Колдонмону иштеп чыгуучулар аны тиркемелерди жеткирүү жана башкаруу үчүн колдонушат. Ал колдонмонун кодун жана көз карандылыкты сүрөткө топтоп, серверлерге контейнер катары жеткирет. Контейнерлер бир эле сервердеги тиркемелерди обочолонтуу менен камсыздайт, андыктан иштеп чыгуучулар тиркемелердин логикасы менен иштешет жана серверлерди табуу же жаңыртууларды башкаруу жөнүндө кабатыр болбошу үчүн. Tupperware ошондой эле сервердин иштешин көзөмөлдөйт, эгер ал ката тапса, көйгөйлүү серверден контейнерлерди өткөрүп берет.

Потенциалды пландаштыруу инженерлери Tupperware программасын бюджеттин жана чектөөлөрдүн негизинде командаларга сервердин мүмкүнчүлүктөрүн бөлүштүрүү үчүн колдонушат. Алар ошондой эле серверди колдонууну жакшыртуу үчүн колдонушат. Маалымат борборлорунун операторлору контейнерлерди маалымат борборлору боюнча туура бөлүштүрүү жана тейлөө учурунда контейнерлерди токтотуу же жылдыруу үчүн Tupperware компаниясына кайрылышат. Мунун аркасында серверлерди, тармактарды жана жабдууларды тейлөө адамдын минималдуу кийлигишүүсүн талап кылат.

Tupperware архитектурасы

Tupperware: Facebookтун Kubernetes өлтүргүчү?

Tupperware PRN архитектурасы - бул биздин маалымат борборлорубуздун аймактарынын бири. Аймак жакын жайгашкан бир нече маалымат борборунун имараттарынан (PRN1 жана PRN2) турат. Биз бир аймактагы бардык серверлерди башкара турган бир башкаруу панелин жасоону пландаштырып жатабыз.

Тиркемени иштеп чыгуучулар Tupperware жумуштары түрүндө кызматтарды беришет. Жумуш бир нече контейнерден турат жана алардын баары адатта бир эле колдонмо кодун иштетет.

Tupperware контейнерлерди камсыздоо жана алардын жашоо циклин башкаруу үчүн жооптуу. Ал бир нече компоненттерден турат:

  • Tupperware интерфейси колдонуучу интерфейси, CLI жана башка автоматташтыруу куралдары үчүн API'лерди камсыз кылат, алар аркылуу Tupperware менен иштеше аласыз. Алар Tupperware жумуш ээлеринен бүт ички түзүмүн жашырышат.
  • Tupperware Scheduler - бул контейнерди жана жумуш циклин башкаруу үчүн жооптуу башкаруу панели. Ал аймактык жана глобалдык деңгээлде жайгаштырылат, мында аймактык пландоочу бир аймактагы серверлерди башкарат, ал эми глобалдык пландоочу ар башка аймактардагы серверлерди башкарат. Пландоочу сыныктарга бөлүнөт жана ар бир сынык тапшырмалардын топтомун башкарат.
  • Tupperware's Scheduler Proxy ички сындырууну жашырат жана Tupperware колдонуучулары үчүн ыңгайлуу жалгыз айнек панелин камсыз кылат.
  • Tupperware бөлүштүргүч серверлерге контейнерлерди дайындайт. Пландоочу контейнерлерди токтотууну, баштоону, жаңыртууну жана иштен чыгарууну башкарат. Учурда бир бөлүштүргүч бөлүктөргө бөлүнбөстөн бүт аймакты башкара алат. (Терминологиядагы айырмага көңүл буруңуз. Мисалы, Tupperware программасындагы пландоочу башкаруу панелине туура келет Kubernetes, жана Tupperware бөлүштүргүч Kubernetesте пландоочу деп аталат.)
  • Ресурстук брокер сервер жана тейлөө окуялары үчүн чындыктын булагын сактайт. Биз ар бир маалымат борбору үчүн бир ресурстук брокерди иштетебиз жана ал ошол маалымат борборундагы серверлер тууралуу бардык маалыматты сактайт. Ресурстук брокер жана потенциалды башкаруу системасы же ресурсту камсыздоо системасы кайсы пландаштыруучу жеткирүү кайсы серверди башкарарын динамикалык түрдө чечет. Ден соолукту текшерүү кызматы серверлерди көзөмөлдөйт жана алардын ден соолугу жөнүндө маалыматтарды ресурстук брокерде сактайт. Эгерде серверде көйгөйлөр болсо же техникалык тейлөөгө муктаж болсо, ресурстук брокер бөлүштүргүчкө жана пландоочуга контейнерлерди токтотууну же аларды башка серверлерге жылдырууну айтат.
  • Tupperware Agent - бул ар бир серверде иштеген демон, ал контейнерлерди камсыздоону жана алып салууну колго алат. Тиркемелер контейнердин ичинде иштейт, бул аларга көбүрөөк обочолонуу жана кайталануу мүмкүнчүлүгүн берет. Күйүк өткөн жылы Systems @Scale конференциясы Биз жеке Tupperware контейнерлери сүрөттөрдү, btrfs, cgroupv2 жана systemd аркылуу кантип түзүлгөнүн айтып бердик.

Tupperware айырмалоочу өзгөчөлүктөрү

Tupperware башка кластердик башкаруу системаларына көп жагынан окшош, мисалы Kubernetes жана Mesos, бирок айырмачылыктар да бар:

  • Мамлекеттик кызматтар үчүн орнотулган колдоо.
  • Ниеттин, кластерлерди иштен чыгаруунун жана тейлөөнүн негизинде контейнерлерди жеткирүүнү автоматташтыруу үчүн ар кандай маалымат борборлорундагы серверлер үчүн бирдиктүү башкаруу панели.
  • Чоңойтуу үчүн башкаруу панелинин бөлүктөрүн тазалоо.
  • Эластикалык эсептөөлөр реалдуу убакытта кызматтардын ортосунда кубаттуулукту бөлүштүрүүгө мүмкүндүк берет.

Биз бул сонун функцияларды чоң глобалдык жалпы сервер флотунда жарандыгы жок жана статусу бар тиркемелерди колдоо үчүн иштеп чыктык.

Мамлекеттик кызматтар үчүн орнотулган колдоо.

Tupperware Facebook, Instagram, Messenger жана WhatsApp үчүн туруктуу өнүм маалыматтарын сактаган ар кандай маанилүү кызматтарды иштетет. Бул ачкыч-нарк жуптарынын чоң дүкөндөрү болушу мүмкүн (мис. ZippyDB) жана маалымат репозиторийлерине мониторинг (мисалы, ODS Gorilla и Scuba). Мамлекеттик кызматтарды көрсөтүү оңой эмес, анткени система контейнерлерди жеткирүү ири масштабдуу үзгүлтүктөргө, анын ичинде тармактын үзгүлтүккө учурашына же электр энергиясынын өчүрүлүшүнө туруштук бере аларын камсыздоосу керек. Кадимки ыкмалар, мисалы, ката домендери боюнча контейнерлерди таратуу, жарандыгы жок кызматтар үчүн жакшы иштегени менен, мамлекеттик кызматтар кошумча колдоого муктаж.

Мисалы, сервердин катасы бир маалымат базасынын репликасын жеткиликсиз кылып койсо, 50 10 бассейндеги 50 сервердеги өзөктөрдү жаңылай турган автоматтык тейлөөнү иштетишиңиз керекпи? Кырдаалга жараша болот. Эгерде ушул 2 сервердин биринде ошол эле маалымат базасынын башка репликасы болсо, бир эле учурда XNUMX репликаны жоготуп албай, күткөн жакшы. Системаны тейлөө жана аткаруу боюнча чечимдерди динамикалык түрдө кабыл алуу үчүн бизге ички маалыматтардын репликациясы жана ар бир мамлекеттик кызматтын жайгаштыруу логикасы жөнүндө маалымат керек.

TaskControl интерфейси штаттык кызматтарга маалыматтардын жеткиликтүүлүгүнө таасир этүүчү чечимдерге таасир этүүгө мүмкүндүк берет. Бул интерфейсти колдонуу менен пландоочу контейнер операциялары (кайра баштоо, жаңыртуу, көчүрүү, тейлөө) жөнүндө тышкы колдонмолорго кабарлайт. Статистикалуу кызмат контроллерди ишке ашырат, ал Tupperware компаниясына ар бир операцияны качан аткаруу коопсуз экенин айтып берет жана бул операциялар убактылуу алмаштырылышы же кечиктирилиши мүмкүн. Жогорудагы мисалда, маалымат базасынын контроллери Tupperware компаниясына 49 сервердин 50ун жаңыртууну айтып, бирок белгилүү бир серверди (X) азырынча жалгыз калтырышы мүмкүн. Натыйжада, ядронун жаңыртуу мөөнөтү өтүп кетсе жана маалымат базасы дагы эле көйгөйлүү репликаны калыбына келтире албаса, Tupperware дагы эле X серверин жаңылайт.

Tupperware: Facebookтун Kubernetes өлтүргүчү?

Tupperware'деги көптөгөн мамлекеттик кызматтар TaskControl'ду түздөн-түз эмес, Facebook'та мамлекеттик кызматтарды түзүү үчүн жалпы платформа ShardManager аркылуу колдонушат. Tupperware менен, иштеп чыгуучулар маалымат борборлору боюнча контейнерлер кантип бөлүштүрүлүшү керек экендигин так аныктай алышат. ShardManager менен иштеп чыгуучулар маалымат сыныктары контейнерлер боюнча бөлүштүрүлүшү керек деген ниетин белгилешет. ShardManager өзүнүн тиркемелерин маалыматтарды жайгаштырууну жана репликациялоону билет жана Tupperware менен TaskControl интерфейси аркылуу тиркемелердин түздөн-түз катышуусуз контейнер операцияларын пландаштыруу үчүн байланышат. Бул интеграция мамлекеттик кызматтарды башкарууну абдан жөнөкөйлөтөт, бирок TaskControl дагы көп нерсеге жөндөмдүү. Мисалы, биздин кеңири веб деңгээлибиз жарандыгы жок жана контейнерлерге жаңыртуулардын ылдамдыгын динамикалык түрдө тууралоо үчүн TaskControl колдонот. Жыйынтыгында желе деңгээли бир нече программалык камсыздоону тез арада бүтүрүүгө жөндөмдүү жеткиликтүүлүгүн бузбастан күнүнө.

Маалымат борборлорундагы серверлерди башкаруу

Tupperware 2011-жылы биринчи жолу ишке киргенде, ар бир сервердик кластер өзүнчө пландоочу тарабынан башкарылган. Ал кезде Facebook кластери бир тармак которуштурууга туташкан сервердик стеллаждардын тобу болгон жана маалымат борборунда бир нече кластерлер жайгашкан. Пландоочу серверлерди бир кластерде гана башкара алган, бул жумуш бир нече кластерлерге жайыла албайт. Биздин инфраструктура өстү, биз кластерлерди барган сайын өчүрө баштадык. Tupperware жумушту өчүрүлгөн кластерден башка кластерлерге өзгөрүүсүз жылдыра албагандыктан, тиркемени иштеп чыгуучулар менен маалымат борборунун операторлорунун ортосунда көп күч-аракетти жана кылдат координациялоону талап кылган. Бул процесс колдонуудан чыгаруу процедураларынан улам серверлер ай бою иштебей турганда ресурстардын ысырап болушуна алып келди.

Биз кластерди эксплуатациядан чыгаруу маселесин чечүү жана тейлөө тапшырмаларынын башка түрлөрүн координациялоо үчүн ресурстук брокерди түздүк. Ресурстук брокер сервер менен байланышкан бардык физикалык маалыматты көзөмөлдөйт жана ар бир серверди кайсы пландоочу башкарарын динамикалык түрдө чечет. Серверлерди пландоочуларга динамикалык байланыштыруу пландаштыруучуга ар кандай маалымат борборлорундагы серверлерди башкарууга мүмкүндүк берет. Tupperware жумушу мындан ары бир кластер менен чектелбегендиктен, Tupperware колдонуучулары контейнерлер ката домендери боюнча кантип бөлүштүрүлүшү керектигин аныктай алышат. Мисалы, иштеп чыгуучу өзүнүн ниетин жарыялай алат (айталы: "Менин жумушумду PRN аймагындагы 2 ката доменинде иштет") конкреттүү жеткиликтүүлүк зоналарын көрсөтпөстөн. Tupperware өзү бул ниетти ишке ашыруу үчүн ылайыктуу серверлерди табат, атүгүл кластер же кызмат иштен чыгарылса да.

Бүткүл дүйнөлүк системаны колдоо үчүн масштабдуу

Тарыхый жактан алганда, биздин инфраструктурабыз жеке командалар үчүн жүздөгөн сервердик бассейндерге бөлүнгөн. Бөлүнгөндүктөн жана стандарттардын жоктугунан улам бизде операциялык чыгымдар көп болду жана бош турган серверлерди кайра колдонуу кыйыныраак болду. Былтыркы конференцияда Системалар @Scale тартууладык кызмат катары инфраструктура (IaaS), бул биздин инфраструктурабызды чоң бирдиктүү сервердик паркка бириктириши керек. Бирок бир сервердик парктын өзүнүн кыйынчылыктары бар. Ал белгилүү бир талаптарга жооп бериши керек:

  • Масштабдуулук. Биздин инфраструктура ар бир региондо маалымат борборлорун кошкондо өстү. Серверлер кичирейип, энергияны үнөмдөөчү болуп калды, андыктан ар бир аймакта алардын саны дагы көп. Натыйжада, ар бир региондогу бир пландоочу ар бир аймактагы жүз миңдеген серверлерде иштей турган контейнерлердин санын башкара албайт.
  • Ишенимдүүлүк. Пландоочтун масштабы ушунчалык чоңойсо да, пландоочтун масштабы чоңураак болгондуктан, каталардын коркунучу жогору жана контейнерлердин бүтүндөй аймагы башкарылбай калышы мүмкүн.
  • Ката толеранттуулук. Чоң инфраструктура бузулган учурда (мисалы, пландаштыргычты иштеткен серверлер тармактын иштен чыгышынан же электр энергиясы үзгүлтүккө учураганда) терс кесепеттер аймактагы серверлердин бир бөлүгүнө гана таасирин тийгизиши керек.
  • пайдалануу бошотуу. Сиз бир аймак үчүн бир нече көз карандысыз пландаштыргычтарды иштетүү керектей сезилиши мүмкүн. Бирок ыңгайлуулук көз карашынан алганда, аймактын жалпы бассейнине кирүүнүн бир эле чекити потенциалды жана жумуш орундарын башкарууну жеңилдетет.

Чоң жалпы бассейнди сактоо көйгөйлөрүн чечүү үчүн пландоочту сыныктарга бөлдүк. Ар бир пландоочу сынык аймактагы өзүнүн жумуш топтомун башкарат жана бул пландоочу менен байланышкан тобокелдикти азайтат. Жалпы бассейн чоңойгон сайын, биз дагы пландоочунун сыныктарын кошо алабыз. Tupperware колдонуучулары үчүн сыныктар жана пландоочу проксилер бир башкаруу панелине окшош. Аларга тапшырмаларды аткарган бир топ сыныктар менен иштөөнүн кереги жок. Тармактын топологиясына ылайык серверлердин жалпы бассейнин статикалык түрдө бөлбөстөн башкаруу панели бөлүнгөндө, пландаштыргыч сыныктары биз мурда колдонгон кластердик пландоочулардан түп-тамырынан айырмаланат.

Эластикалык эсептөө менен колдонуунун натыйжалуулугун жогорулатуу

Биздин инфраструктура канчалык чоң болсо, инфраструктуралык чыгымдарды оптималдаштыруу жана жүктөмдү азайтуу үчүн серверлерибизди натыйжалуу пайдалануу ошончолук маанилүү. Серверди колдонуунун натыйжалуулугун жогорулатуунун эки жолу бар:

  • Ийкемдүү эсептөө - тынч сааттарда онлайн кызматтардын масштабын азайтыңыз жана машинаны үйрөнүү жана MapReduce жумуштары сыяктуу оффлайн жүктөөлөр үчүн бошотулган серверлерди колдонуңуз.
  • Ашыкча жүктөө - Интернеттеги кызматтарды жана пакеттик жүктөмдү бир эле серверлерге жайгаштырыңыз, ошентип пакеттик жүктөмдөр аз артыкчылыкта иштейт.

Биздин маалымат борборлорубуздагы тоскоолдук электр энергиясын колдонуу. Ошондуктан, биз чогуу көбүрөөк иштетүү кубаттуулугун камсыз кылган кичинекей, энергияны үнөмдөөчү серверлерди жактырабыз. Тилекке каршы, CPU жана эс тутуму аз кичинекей серверлерде ашыкча жүктөө эффективдүү эмес. Албетте, биз бир аз энергияны үнөмдөөчү кичинекей серверге чакан сервистердин бир нече контейнерин жайгаштырсак болот, ал процессордун ресурстарын жана эстутумун аз керектейт, бирок бул кырдаалда чоң кызматтардын өндүрүмдүүлүгү төмөн болот. Ошондуктан, биз чоң кызматтарыбызды иштеп чыгуучуларга бүт серверлерди колдонушу үчүн аларды оптималдаштырууну сунуштайбыз.


Негизинен, биз ийкемдүү эсептөө аркылуу колдонуу натыйжалуулугун жакшыртабыз. Жаңылыктар түрмөгү, Кабарлашуу функциясы жана алдыңкы веб деңгээли сыяктуу көптөгөн негизги кызматтарыбыз күндүн убактысына жараша өзгөрүп турат. Биз тынч сааттарда онлайн кызматтардын масштабын атайылап азайтабыз жана машинаны үйрөнүү жана MapReduce жумуштары сыяктуу оффлайн жүктөөлөр үчүн бошотулган серверлерди колдонобуз.

Tupperware: Facebookтун Kubernetes өлтүргүчү?

Биз тажрыйбабыздан билебиз, бүт серверлерди ийкемдүүлүктүн бирдиги катары берүү эң жакшы, анткени чоң кызматтар ийкемдүүлүктүн негизги донорлору жана негизги керектөөчүлөрү болуп саналат жана бүт серверлерди колдонууга оптималдаштырылган. Сервер тынч сааттарда онлайн кызматтан бошотулганда, ресурстук брокер андагы оффлайндык жүктөрдү иштетүү үчүн серверди пландоочуга ижарага берет. Эгерде онлайн кызмат эң жогорку жүктөмгө дуушар болсо, ресурстук брокер тез арада алынган серверди чакыртып алат жана пландоочу менен бирге аны онлайн кызматка кайтарат.

Алынган сабактар ​​жана келечекке пландар

Акыркы 8 жылдын ичинде биз Facebookтун тез өсүшүнө туруштук берүү үчүн Tupperware программасын иштеп чыктык. Биз үйрөнгөн нерселерибиз менен бөлүшөбүз жана ал башкаларга тездик менен өсүп жаткан инфраструктураларды башкарууга жардам берет деп үмүттөнөбүз:

  • Башкаруу панели менен ал башкарган серверлердин ортосунда ийкемдүү байланышты орнотуңуз. Бул ийкемдүүлүк башкаруу панелине ар кандай маалымат борборлорундагы серверлерди башкарууга мүмкүндүк берет, кластерлерди иштен чыгарууну жана тейлөөнү автоматташтырууга жардам берет жана ийкемдүү эсептөөлөрдү колдонуу менен динамикалык кубаттуулукту бөлүштүрүүгө мүмкүндүк берет.
  • Аймакта бирдиктүү башкаруу панели менен тапшырмалар менен иштөө ыңгайлуу болуп, чоң жалпы сервердик паркты башкаруу оңой болот. Башкаруу панели, анын ички түзүлүшү масштабдуу же катачылыкка чыдамкайлыктын себептери боюнча бөлүнгөн болсо да, бир эле кирүү пунктун сактай тургандыгын эске алыңыз.
  • Плагин моделин колдонуу менен башкаруу панели алдыдагы контейнер операциялары жөнүндө тышкы колдонмолорго кабарлай алат. Мындан тышкары, мамлекеттик кызматтар контейнер башкарууну ыңгайлаштыруу үчүн плагин интерфейсин колдоно алышат. Бул плагин модели менен башкаруу панели жөнөкөйлүктү камсыз кылат, ошол эле учурда ар кандай мамлекеттик кызматтарды натыйжалуу тейлейт.
  • Биз ийкемдүү эсептөөлөр, анда биз донордук кызматтардан пакеттик жумуштар, машина үйрөнүү жана башка шашылыш эмес кызматтар үчүн бүт серверлерди алып таштайбыз, бул кичинекей, энергияны үнөмдөөчү серверлердин натыйжалуулугун жогорулатуунун оптималдуу жолу деп эсептейбиз.

Биз жаңыдан ишке ашыра баштадык бирдиктүү глобалдык сервер паркы. Учурда биздин серверлердин болжол менен 20% жалпы бассейнде. 100% жетишүү үчүн көптөгөн маселелерди чечүү керек, анын ичинде жалпы сактоо пулун сактоо, тейлөөнү автоматташтыруу, ижарачылардын ортосундагы талаптарды башкаруу, серверди колдонууну жакшыртуу жана машинаны үйрөнүү иш жүгүн колдоону жакшыртуу. Биз бул кыйынчылыктарды көтөрүп, ийгиликтерибиз менен бөлүшүүнү күтө албайбыз.

Source: www.habr.com

Комментарий кошуу