Tupperware: Facebookning Kubernetes qotili?

Tupperware bilan har qanday miqyosda klasterlarni samarali va ishonchli boshqarish

Tupperware: Facebookning Kubernetes qotili?

Bugun Systems@Scale konferentsiyasi biz deyarli barcha xizmatlarimiz bilan ishlaydigan millionlab serverlar bo'ylab konteynerlarni tartibga soluvchi klaster boshqaruv tizimimiz Tupperware-ni taqdim etdik. Biz Tupperware-ni birinchi marta 2011 yilda joylashtirdik va o'shandan beri bizning infratuzilmamiz o'sdi. 1 ma'lumot markazi butungacha 15 ta geo-tarqatilgan ma'lumotlar markazlari. Bu vaqt davomida Tupperware bir joyda turmadi va biz bilan birga rivojlandi. Biz sizga Tupperware birinchi darajali klaster boshqaruvini, jumladan, davlat xizmatlarini qulay qo‘llab-quvvatlashni, barcha ma’lumotlar markazlari uchun yagona boshqaruv panelini va real vaqtda xizmatlar o‘rtasida sig‘imlarni taqsimlash imkoniyatini ko‘rsatamiz. Infratuzilmamiz rivojlanib borayotgani uchun biz o‘rgangan saboqlarimizni ham baham ko‘ramiz.

Tupperware turli vazifalarni bajaradi. Ilova ishlab chiquvchilari undan ilovalarni yetkazib berish va boshqarish uchun foydalanadilar. U ilova kodini va bog'liqlikni tasvirga to'playdi va uni serverlarga konteyner sifatida etkazib beradi. Konteynerlar bir xil serverdagi ilovalar orasidagi izolyatsiyani ta'minlaydi, shunda ishlab chiquvchilar dastur mantig'i bilan shug'ullanishadi va serverlarni topish yoki yangilanishlarni boshqarish haqida tashvishlanmasliklari kerak. Tupperware shuningdek, serverning ishlashini nazorat qiladi va agar u nosozlik aniqlansa, konteynerlarni muammoli serverdan uzatadi.

Imkoniyatlarni rejalashtirish bo'yicha muhandislar Tupperware-dan byudjet va cheklovlar asosida server imkoniyatlarini guruhlarga taqsimlash uchun foydalanadilar. Bundan tashqari, ular serverdan foydalanishni yaxshilash uchun foydalanadilar. Ma'lumotlar markazi operatorlari konteynerlarni ma'lumotlar markazlari bo'ylab to'g'ri taqsimlash va texnik xizmat ko'rsatish vaqtida konteynerlarni to'xtatish yoki ko'chirish uchun Tupperware-ga murojaat qilishadi. Buning yordamida serverlar, tarmoqlar va uskunalarni saqlash minimal inson aralashuvini talab qiladi.

Tupperware arxitekturasi

Tupperware: Facebookning Kubernetes qotili?

Tupperware PRN arxitekturasi bizning ma'lumotlar markazlarimiz hududlaridan biridir. Mintaqa yaqin atrofda joylashgan bir nechta ma'lumotlar markazi binolaridan (PRN1 va PRN2) iborat. Biz bitta mintaqadagi barcha serverlarni boshqaradigan bitta boshqaruv panelini yaratishni rejalashtirmoqdamiz.

Ilova ishlab chiquvchilari xizmatlarni Tupperware ishlari ko'rinishida taqdim etadilar. Ish bir nechta konteynerlardan iborat bo'lib, ularning barchasi odatda bir xil dastur kodini boshqaradi.

Tupperware konteynerlarni ta'minlash va ularning hayot aylanishini boshqarish uchun javobgardir. U bir nechta tarkibiy qismlardan iborat:

  • Tupperware frontend foydalanuvchi interfeysi, CLI va boshqa avtomatlashtirish vositalari uchun API-larni taqdim etadi, ular orqali Tupperware bilan ishlashingiz mumkin. Ular butun ichki tuzilmani Tupperware ish egalaridan yashirishadi.
  • Tupperware Scheduler - bu konteyner va ish davrini boshqarish uchun mas'ul bo'lgan boshqaruv paneli. U mintaqaviy va global darajalarda qo'llaniladi, bu erda mintaqaviy rejalashtiruvchi bir mintaqadagi serverlarni boshqaradi va global rejalashtiruvchi turli mintaqalardagi serverlarni boshqaradi. Rejalashtiruvchi qismlarga bo'linadi va har bir parcha bir qator ishlarni boshqaradi.
  • Tupperware-ning Scheduler proksi-serveri ichki parchalanishni yashiradi va Tupperware foydalanuvchilari uchun qulay bir oyna oynasini taqdim etadi.
  • Tupperware ajratuvchisi serverlarga konteynerlarni tayinlaydi. Rejalashtiruvchi konteynerlarni to'xtatish, ishga tushirish, yangilash va o'chirishni boshqaradi. Hozirda bitta ajratuvchi butun mintaqani qismlarga bo'linmasdan boshqarishi mumkin. (Terminologiyadagi farqga e'tibor bering. Masalan, Tupperware-dagi rejalashtiruvchi boshqaruv panelidagi boshqaruv paneliga mos keladi Kubernetes, va Tupperware ajratuvchisi Kubernetesda rejalashtiruvchi deb ataladi.)
  • Resurs brokeri server va xizmat voqealari uchun haqiqat manbasini saqlaydi. Biz har bir maʼlumot markazi uchun bitta resurs brokerini ishga tushiramiz va u ushbu maʼlumotlar markazidagi serverlar haqidagi barcha maʼlumotlarni saqlaydi. Resurs brokeri va imkoniyatlarni boshqarish tizimi yoki resurslarni ta'minlash tizimi qaysi rejalashtiruvchi yetkazib berish qaysi serverni boshqarishini dinamik ravishda hal qiladi. Salomatlik tekshiruvi xizmati serverlarni kuzatib boradi va ularning salomatligi haqidagi ma'lumotlarni resurs brokerida saqlaydi. Agar serverda muammolar bo'lsa yoki texnik xizmat ko'rsatishga muhtoj bo'lsa, resurs brokeri taqsimlovchi va rejalashtiruvchiga konteynerlarni to'xtatish yoki ularni boshqa serverlarga ko'chirishni aytadi.
  • Tupperware agenti har bir serverda ishlaydigan demon bo'lib, konteynerlarni tayyorlash va olib tashlash bilan shug'ullanadi. Ilovalar konteyner ichida ishlaydi, bu ularga ko'proq izolyatsiya va takrorlanish imkonini beradi. Yoniq o'tgan yilgi Systems @Scale konferentsiyasi Tasvirlar, btrfs, cgroupv2 va systemd yordamida individual Tupperware konteynerlari qanday yaratilganligini allaqachon tasvirlab bergan edik.

Tupperware-ning o'ziga xos xususiyatlari

Tupperware ko'p jihatdan Kubernetes va kabi boshqa klasterlarni boshqarish tizimlariga o'xshaydi Mesos, lekin farqlar ham bor:

  • Davlat xizmatlari uchun o'rnatilgan qo'llab-quvvatlash.
  • Niyat, klasterlarni o'chirish va texnik xizmat ko'rsatish asosida konteynerlarni yetkazib berishni avtomatlashtirish uchun turli ma'lumotlar markazlaridagi serverlar uchun yagona boshqaruv paneli.
  • Kattalashtirish uchun boshqaruv panelining bo'linishini tozalang.
  • Elastik hisoblash sizga real vaqtda xizmatlar o'rtasida quvvatni taqsimlash imkonini beradi.

Biz ushbu ajoyib xususiyatlarni ulkan global umumiy server parkida fuqaroligi bo'lmagan va davlat ma'lumotlari bo'lgan turli ilovalarni qo'llab-quvvatlash uchun ishlab chiqdik.

Davlat xizmatlari uchun o'rnatilgan qo'llab-quvvatlash.

Tupperware Facebook, Instagram, Messenger va WhatsApp uchun doimiy mahsulot ma'lumotlarini saqlaydigan turli muhim davlat xizmatlarini boshqaradi. Bu kalit-qiymat juftlarining yirik do'konlari bo'lishi mumkin (masalan, ZippyDB) va ma'lumotlar omborlarini monitoring qilish (masalan, ODS Gorilla и Scuba). Mavjud xizmatlarni saqlash oson emas, chunki tizim konteynerlarni etkazib berish keng ko'lamli uzilishlarga, shu jumladan tarmoqdagi uzilishlar yoki elektr quvvati uzilishlariga bardosh bera olishini ta'minlashi kerak. Noto'g'ri domenlar bo'ylab konteynerlarni tarqatish kabi an'anaviy usullar fuqaroligi bo'lmagan xizmatlar uchun yaxshi ishlayotgan bo'lsa-da, davlat xizmatlari qo'shimcha yordamga muhtoj.

Misol uchun, agar server xatosi bitta ma'lumotlar bazasi replikatsiyasini mavjud bo'lmasa, 50 10 ta hovuzdan 50 ta serverdagi yadrolarni yangilaydigan avtomatik texnik xizmatni yoqishingiz kerakmi? Vaziyatga bog'liq. Agar ushbu 2 ta serverdan birida bir xil ma'lumotlar bazasining boshqa nusxasi bo'lsa, bir vaqtning o'zida XNUMX nusxani yo'qotmaslik va kutish yaxshiroqdir. Tizimga texnik xizmat ko'rsatish va ishlashi bo'yicha dinamik ravishda qaror qabul qilish uchun bizga ichki ma'lumotlar replikatsiyasi va har bir davlat xizmatining joylashtirish mantig'i haqida ma'lumot kerak.

TaskControl interfeysi statistik xizmatlarga ma'lumotlar mavjudligiga ta'sir qiluvchi qarorlarga ta'sir qilish imkonini beradi. Ushbu interfeysdan foydalanib, rejalashtiruvchi tashqi ilovalarni konteyner operatsiyalari (qayta ishga tushirish, yangilash, ko'chirish, texnik xizmat ko'rsatish) haqida xabardor qiladi. Holatli xizmat Tupperware-ga har bir operatsiyani bajarish qachon xavfsiz ekanligini bildiruvchi kontrollerni amalga oshiradi va bu operatsiyalar vaqtincha almashtirilishi yoki kechiktirilishi mumkin. Yuqoridagi misolda ma'lumotlar bazasi boshqaruvchisi Tupperware-ga 49 ta serverdan 50 tasini yangilashni aytishi mumkin, ammo hozircha ma'lum bir serverni (X) yolg'iz qoldiring. Natijada, yadro yangilash muddati o'tib ketsa va ma'lumotlar bazasi muammoli nusxani tiklay olmasa, Tupperware X serverini yangilab turadi.

Tupperware: Facebookning Kubernetes qotili?

Tupperware’dagi ko‘plab davlat xizmatlari TaskControl’dan to‘g‘ridan-to‘g‘ri emas, balki Facebook’da davlat xizmatlarini yaratish uchun umumiy platforma ShardManager orqali foydalanadi. Tupperware yordamida ishlab chiquvchilar o'z niyatlarini ma'lumotlar markazlari bo'ylab konteynerlar qanday taqsimlanishini aniq belgilashlari mumkin. ShardManager yordamida ishlab chiquvchilar ma'lumotlar bo'laklarini konteynerlar bo'ylab qanday taqsimlanishi kerakligini aniqlaydilar. ShardManager o'z ilovalarini ma'lumotlarni joylashtirish va replikatsiya qilishdan xabardor va TaskControl interfeysi orqali Tupperware bilan bog'lanib, to'g'ridan-to'g'ri dastur ishtirokisiz konteyner operatsiyalarini rejalashtirish uchun. Ushbu integratsiya davlat xizmatlarini boshqarishni sezilarli darajada osonlashtiradi, ammo TaskControl ko'proq narsaga qodir. Masalan, bizning keng qamrovli veb-darajamiz fuqaroligi yo'q va konteynerlarga yangilanish tezligini dinamik ravishda sozlash uchun TaskControl-dan foydalanadi. Natijada veb-daraja bir nechta dasturiy ta'minot nashrlarini tezda bajarishga qodir mavjudligini buzmasdan kuniga.

Ma'lumotlar markazlarida serverlarni boshqarish

Tupperware birinchi marta 2011 yilda ishga tushirilganda, har bir server klasteri alohida rejalashtiruvchi tomonidan boshqarildi. O'sha paytda Facebook klasteri bitta tarmoq kalitiga ulangan server tokchalari guruhi edi va ma'lumotlar markazida bir nechta klasterlar mavjud edi. Rejalashtiruvchi faqat bitta klasterdagi serverlarni boshqarishi mumkin edi, ya'ni ish bir nechta klasterlarga tarqala olmaydi. Bizning infratuzilmamiz o'sdi, biz tobora ko'proq klasterlarni hisobdan chiqardik. Tupperware ishni bekor qilingan klasterdan boshqa klasterlarga o'zgartirishlarsiz ko'chira olmagani uchun bu juda ko'p kuch va ilovalar ishlab chiquvchilari va ma'lumotlar markazi operatorlari o'rtasida ehtiyotkorlik bilan muvofiqlashtirishni talab qildi. Bu jarayon serverlar foydalanishdan chiqarish tartib-qoidalari tufayli bir necha oy davomida ishlamay qolganda resurslarning behuda sarflanishiga olib keldi.

Biz klasterni o'chirish muammosini hal qilish va boshqa turdagi texnik xizmat ko'rsatish vazifalarini muvofiqlashtirish uchun resurs brokerini yaratdik. Resurs brokeri server bilan bog'liq barcha jismoniy ma'lumotlarni kuzatib boradi va har bir serverni qaysi rejalashtiruvchi boshqarishini dinamik ravishda hal qiladi. Serverlarni rejalashtiruvchilarga dinamik ravishda ulash rejalashtiruvchiga turli ma'lumotlar markazlaridagi serverlarni boshqarish imkonini beradi. Tupperware ishi endi bitta klaster bilan chegaralanmaganligi sababli, Tupperware foydalanuvchilari konteynerlar nosozlik domenlarida qanday taqsimlanishi kerakligini belgilashlari mumkin. Misol uchun, ishlab chiquvchi o'z maqsadini e'lon qilishi mumkin (aytaylik: "Mening ishimni PRN mintaqasidagi 2 ta xato domenida boshqaring") aniq mavjudlik zonalarini ko'rsatmasdan. Tupperware o'zi bu niyatni amalga oshirish uchun mos serverlarni topadi, hatto klaster yoki xizmat o'chirilgan bo'lsa ham.

Butun global tizimni qo'llab-quvvatlash uchun kengaytirilishi mumkin

Tarixiy jihatdan bizning infratuzilmamiz alohida jamoalar uchun yuzlab ajratilgan server hovuzlariga bo'lingan. Parchalanish va standartlarning etishmasligi tufayli bizda yuqori operatsion xarajatlar bor edi va bo'sh turgan serverlarni qayta ishlatish qiyinroq edi. O'tgan yilgi konferentsiyada Tizimlar @Scale taqdim qildik infratuzilma xizmat sifatida (IaaS), bu bizning infratuzilmamizni katta yagona server parkiga birlashtirishi kerak. Ammo bitta server parkining o'ziga xos qiyinchiliklari bor. U ma'lum talablarga javob berishi kerak:

  • Masshtablilik. Har bir mintaqada ma'lumotlar markazlarini qo'shganimiz sababli infratuzilmamiz o'sdi. Serverlar kichikroq va energiya tejamkor bo'lib qoldi, shuning uchun har bir mintaqada ularning soni ko'p. Natijada, har bir mintaqada bitta rejalashtiruvchi har bir mintaqadagi yuz minglab serverlarda ishga tushirilishi mumkin bo'lgan konteynerlar sonini boshqara olmaydi.
  • Ishonchlilik. Agar rejalashtiruvchini shunchalik kattalashtirish mumkin bo'lsa ham, rejalashtiruvchining keng ko'lami xatolik xavfi yuqori ekanligini va konteynerlarning butun hududini boshqarib bo'lmaydigan bo'lib qolishi mumkinligini anglatadi.
  • Xatolarga chidamlilik. Katta infratuzilma ishlamay qolgan taqdirda (masalan, rejalashtiruvchi bilan ishlaydigan serverlar tarmoqdagi nosozlik yoki elektr quvvati uzilishi tufayli ishlamay qolsa), salbiy oqibatlar mintaqadagi serverlarning faqat bir qismiga ta'sir qilishi kerak.
  • Foydalanish qulayligi. Bir mintaqa uchun bir nechta mustaqil rejalashtiruvchilarni ishga tushirishingiz kerakdek tuyulishi mumkin. Ammo qulaylik nuqtai nazaridan, mintaqaning umumiy hovuziga kirishning yagona nuqtasi imkoniyatlar va ish joylarini boshqarishni osonlashtiradi.

Katta umumiy hovuzni saqlash muammolarini hal qilish uchun biz rejalashtiruvchini qismlarga ajratdik. Har bir rejalashtiruvchi bo'lak mintaqadagi o'z ish joylarini boshqaradi va bu rejalashtiruvchi bilan bog'liq xavfni kamaytiradi. Umumiy hovuz o'sishi bilan biz ko'proq rejalashtiruvchi qismlarni qo'shishimiz mumkin. Tupperware foydalanuvchilari uchun parchalar va rejalashtiruvchi proksi-serverlar bitta boshqaruv paneliga o'xshaydi. Ular vazifalarni tartibga soluvchi bir qator parchalar bilan ishlashlari shart emas. Rejalashtiruvchi qismlar biz ishlatgan klaster rejalashtiruvchilardan tubdan farq qiladi, bunda boshqaruv paneli tarmoq topologiyasiga ko'ra umumiy serverlar pulini statik ravishda ajratmasdan bo'lingan.

Elastik hisoblash yordamida foydalanish samaradorligini oshiring

Bizning infratuzilmamiz qanchalik katta bo'lsa, infratuzilma xarajatlarini optimallashtirish va yukni kamaytirish uchun serverlarimizdan samarali foydalanish shunchalik muhim bo'ladi. Serverdan foydalanish samaradorligini oshirishning ikki yo'li mavjud:

  • Elastik hisoblash - sokin soatlarda onlayn xizmatlarni qisqartiring va mashinani o'rganish va MapReduce vazifalari kabi oflayn ish yuklari uchun bo'shatilgan serverlardan foydalaning.
  • Haddan tashqari yuklash - Onlayn xizmatlar va ommaviy ish yuklarini bir xil serverlarga joylashtiring, shunda paketli ish yuklari past ustuvorlikda ishlaydi.

Bizning ma'lumotlar markazlarimizdagi muammo shundaki quvvat sarfi. Shuning uchun biz birgalikda ko'proq ishlov berish quvvatini ta'minlaydigan kichik, energiya tejovchi serverlarni afzal ko'ramiz. Afsuski, protsessor va xotira kam bo'lgan kichik serverlarda ortiqcha yuklanish unchalik samarali emas. Albatta, biz protsessor resurslari va xotirani kam iste'mol qiladigan kichik energiya tejovchi serverga bir nechta kichik xizmatlarni joylashtirishimiz mumkin, ammo bu holatda katta xizmatlarning unumdorligi past bo'ladi. Shuning uchun biz yirik xizmatlarimizni ishlab chiquvchilarga ularni butun serverlardan foydalanishlari uchun optimallashtirishni maslahat beramiz.


Asosan, biz elastik hisoblash yordamida foydalanish samaradorligini oshiramiz. Yangiliklar tasmasi, Xabar almashish funksiyasi va front-end veb-darajasi kabi ko‘plab asosiy xizmatlarimiz kun vaqtiga qarab farqlanadi. Biz tinch soatlarda onlayn xizmatlarni qasddan pasaytiramiz va mashinani o'rganish va MapReduce vazifalari kabi oflayn ish yuklari uchun bo'shatilgan serverlardan foydalanamiz.

Tupperware: Facebookning Kubernetes qotili?

Biz tajribamizdan bilamizki, butun serverlarni elastik sig‘im birliklari sifatida taqdim etish yaxshiroq, chunki yirik xizmatlar ham asosiy donorlar, ham elastik sig‘imning asosiy iste’molchilari bo‘lib, butun serverlardan foydalanish uchun optimallashtirilgan. Server sokin soatlarda onlayn xizmatdan chiqarilganda, resurs brokeri serverni oflayn ish yuklarini ishga tushirish uchun rejalashtiruvchiga ijaraga beradi. Agar onlayn xizmat eng yuqori yuklanishni boshdan kechirsa, resurs brokeri tezda qarzga olingan serverni chaqirib oladi va rejalashtiruvchi bilan birgalikda uni onlayn xizmatga qaytaradi.

Olingan saboqlar va kelajak uchun rejalar

Oxirgi 8 yil ichida biz Facebook’ning jadal o‘sishini kuzatib borish uchun Tupperware’ni ishlab chiqdik. Biz o'rganganlarimizni baham ko'ramiz va bu boshqalarga tez rivojlanayotgan infratuzilmalarni boshqarishda yordam beradi deb umid qilamiz:

  • Boshqaruv paneli va u boshqaradigan serverlar o'rtasida moslashuvchan ulanishni o'rnating. Ushbu moslashuvchanlik boshqaruv paneliga turli ma'lumotlar markazlaridagi serverlarni boshqarish imkonini beradi, klasterlarni o'chirish va texnik xizmat ko'rsatishni avtomatlashtirishga yordam beradi va elastik hisoblash yordamida dinamik sig'imlarni taqsimlashga imkon beradi.
  • Mintaqadagi yagona boshqaruv paneli bilan vazifalar bilan ishlash qulayroq bo'ladi va katta umumiy server parkini boshqarish osonroq bo'ladi. E'tibor bering, boshqaruv paneli, hatto uning ichki tuzilishi o'lchov yoki nosozliklarga chidamliligi sababli ajratilgan bo'lsa ham, bitta kirish nuqtasini saqlaydi.
  • Plagin modelidan foydalanib, boshqaruv paneli tashqi ilovalarni yaqinlashib kelayotgan konteyner operatsiyalari haqida xabardor qilishi mumkin. Bundan tashqari, davlat xizmatlari konteyner boshqaruvini sozlash uchun plagin interfeysidan foydalanishi mumkin. Ushbu plagin modeli bilan boshqaruv paneli soddalikni ta'minlaydi va ko'plab davlat xizmatlariga samarali xizmat qiladi.
  • Biz ishonamizki, biz donorlik xizmatlaridan butun serverlarni paketli ishlar, mashinani o'rganish va boshqa shoshilinch bo'lmagan xizmatlardan olib qo'yadigan elastik hisoblash kichik, energiya tejovchi serverlar samaradorligini oshirishning optimal usuli hisoblanadi.

Biz endigina amalga oshirishni boshlaymiz yagona global umumiy server parki. Hozirda serverlarimizning taxminan 20% umumiy hovuzda. 100% ga erishish uchun umumiy saqlash havzasini saqlash, texnik xizmat ko'rsatishni avtomatlashtirish, ijarachilar o'rtasidagi talablarni boshqarish, serverdan foydalanishni yaxshilash va mashina o'rganish ish yuklarini qo'llab-quvvatlashni yaxshilash kabi ko'plab muammolarni hal qilish kerak. Biz bu qiyinchiliklarni o'z zimmamizga olishni va muvaffaqiyatlarimiz bilan bo'lishishni kuta olmaymiz.

Manba: www.habr.com

a Izoh qo'shish