Xizmat mash ma'lumotlar tekisligi va nazorat tekisligi

Hey Xabr! E'tiboringizga maqolaning tarjimasini taqdim etaman "Xizmat tarmog'i ma'lumotlar tekisligi va boshqaruv tekisligi" muallif Mett Klayn.

Xizmat mash ma'lumotlar tekisligi va nazorat tekisligi

Bu safar men xizmat ko'rsatish tarmog'i komponentlari, ma'lumotlar tekisligi va boshqaruv tekisligining tavsifini "xohladim va tarjima qildim". Bu ta'rif menga eng tushunarli va qiziqarli bo'lib tuyuldi va eng muhimi, "Bu umuman kerakmi?"

So'nggi ikki yil ichida "Xizmat tarmog'i" g'oyasi tobora ommalashib borayotganligi sababli (Asl maqola 10 yil 2017 oktyabr) va kosmosdagi ishtirokchilar soni ortib borayotganligi sababli, men butun dunyo bo'ylab chalkashlikning mutanosib ravishda oshganini ko'rdim. texnik hamjamiyat turli yechimlarni qanday solishtirish va solishtirish haqida.

Vaziyatni iyul oyida yozgan quyidagi tvitlar seriyasi eng yaxshi tarzda ifodalaydi:

Xizmat mashidagi chalkashliklar №1: Linkerd ~ = Nginx ~ = Haproxy ~ = Elchi. Ularning hech biri Istioga teng kelmaydi. Istio butunlay boshqacha narsa. 1 /

Birinchisi oddiygina ma'lumotlar samolyotlari. O'z-o'zidan ular hech narsa qilmaydi. Ular ko'proq narsaga moyil bo'lishlari kerak. 2/

Istio - bu qismlarni bir-biriga bog'laydigan boshqaruv tekisligiga misol. Bu boshqa qatlam. /oxiri

Oldingi tvitlarda bir nechta turli loyihalar (Linkerd, NGINX, HAProxy, Envoy va Istio) eslatib o‘tilgan, lekin eng muhimi, ma’lumotlar tekisligi, xizmat ko‘rsatish tarmog‘i va boshqaruv tekisligining umumiy tushunchalari bilan tanishtiriladi. Ushbu postda men bir qadam orqaga chekinaman va "ma'lumotlar tekisligi" va "boshqaruv tekisligi" atamalari bilan nimani nazarda tutayotganim haqida juda yuqori darajada gapiraman, so'ngra atamalar tvitlarda qayd etilgan loyihalarga qanday tatbiq etilishi haqida gapiraman.

Haqiqatan ham, xizmat ko'rsatish tarmog'i nima?

Xizmat mash ma'lumotlar tekisligi va nazorat tekisligi
1-rasm: Xizmat ko'rsatish tarmog'iga umumiy nuqtai

Shakl 1 eng asosiy darajasida xizmat ko'rsatish tarmog'i tushunchasini tasvirlaydi. To'rtta xizmat ko'rsatish klasteri (AD) mavjud. Har bir xizmat namunasi mahalliy proksi-server bilan bog'langan. Bitta dastur misolidagi barcha tarmoq trafigi (HTTP, REST, gRPC, Redis va boshqalar) mahalliy proksi-server orqali tegishli tashqi xizmat klasterlariga uzatiladi. Shunday qilib, dastur namunasi butun tarmoqdan bexabar va faqat mahalliy proksi-serverdan xabardor. Aslida, taqsimlangan tizim tarmog'i xizmatdan olib tashlandi.

Ma'lumotlar tekisligi

Xizmat tarmog'ida dastur uchun mahalliy joylashgan proksi-server quyidagi vazifalarni bajaradi:

  • Xizmat kashfiyoti. Sizning arizangiz uchun qanday xizmatlar/ilovalar mavjud?
  • Salomatlikni tekshirish. Xizmatni aniqlash orqali qaytarilgan xizmat namunalari sog'lom va tarmoq trafigini qabul qilishga tayyormi? Bu faol (masalan, javob/salomatlik tekshiruvi) va passiv (masalan, nosog'lom xizmat holati belgisi sifatida 3 ta ketma-ket 5xx xatolikdan foydalanish) sog'liq tekshiruvlarini o'z ichiga olishi mumkin.
  • Marshrutlash. REST xizmatidan "/foo" ga so'rov olayotganda, so'rov qaysi xizmat klasteriga yuborilishi kerak?
  • Yukni muvozanatlash. Marshrutlash vaqtida xizmat ko'rsatish klasteri tanlangandan so'ng, so'rov qaysi xizmat ko'rsatish namunasiga yuborilishi kerak? Qaysi taym-aut bilan? Qanday elektron uzilish sozlamalari bilan? Agar so'rov bajarilmasa, qayta urinib ko'rish kerakmi?
  • Autentifikatsiya va avtorizatsiya. Kiruvchi so'rovlar uchun qo'ng'iroq qiluvchi xizmatni mTLS yoki boshqa mexanizm yordamida kriptografik tarzda aniqlash/ruxsat berish mumkinmi? Agar u tan olingan/ruxsatlangan bo'lsa, xizmatda so'ralgan operatsiyani (oxirgi nuqta) chaqirishga ruxsat beriladimi yoki tasdiqlanmagan javobni qaytarish kerakmi?
  • Kuzatish qobiliyati. Har bir so'rov uchun batafsil statistika, jurnallar/jurnallar va taqsimlangan kuzatuv ma'lumotlari yaratilishi kerak, shunda operatorlar taqsimlangan trafik oqimini va ular paydo bo'lganda disk raskadrovka muammolarini tushunishlari mumkin.

Ma'lumotlar tekisligi xizmat ko'rsatish tarmog'idagi barcha oldingi nuqtalar uchun javobgardir. Haqiqatan ham, xizmat uchun mahalliy proksi-server (sidecar) ma'lumotlar tekisligidir. Boshqacha qilib aytganda, ma'lumotlar tekisligi xizmatga yoki xizmatdan yuborilgan har bir tarmoq paketini shartli ravishda uzatish, yo'naltirish va monitoring qilish uchun javobgardir.

Boshqaruv tekisligi

Mahalliy proksi-server ma'lumotlar tekisligida taqdim etadigan tarmoq abstraktsiyasi sehrli (?). Biroq, proksi-server B xizmatiga "/foo" marshruti haqida qayerdan biladi? Proksi-server so'rovlari bilan to'ldirilgan xizmatni aniqlash ma'lumotlaridan qanday foydalanish mumkin? Yukni muvozanatlash, vaqt tugashi, elektron uzilishlar va boshqalar uchun parametrlar qanday tuzilgan? Ilovani ko'k/yashil usul yoki oqlangan trafik o'tish usuli yordamida qanday o'rnatasiz? Tizim bo'ylab autentifikatsiya va avtorizatsiya sozlamalarini kim sozlaydi?

Yuqoridagi barcha elementlar xizmat ko'rsatish tarmog'ining boshqaruv tekisligining nazorati ostida. Boshqaruv tekisligi izolyatsiya qilingan fuqaroligi bo'lmagan proksi-serverlar to'plamini oladi va ularni taqsimlangan tizimga aylantiradi.

O'ylaymanki, ko'plab texnologlar ma'lumotlar tekisligi va boshqaruv tekisligining alohida tushunchalarini chalkashtirib yuborishining sababi, ko'pchilik uchun ma'lumotlar tekisligi tanish bo'lsa, boshqaruv tekisligi chet el/tushunmagan. Biz uzoq vaqt davomida jismoniy tarmoq routerlari va kalitlari bilan ishlayapmiz. Biz paketlar/so'rovlar A nuqtadan B nuqtaga o'tishi kerakligini va buning uchun apparat va dasturiy ta'minotdan foydalanishimiz mumkinligini tushunamiz. Dasturiy ta'minot proksi-serverlarining yangi avlodi biz uzoq vaqtdan beri ishlatib kelayotgan vositalarning shunchaki ajoyib versiyalaridir.

Xizmat mash ma'lumotlar tekisligi va nazorat tekisligi
2-rasm: Inson boshqaruv tekisligi

Biroq, biz uzoq vaqtdan beri boshqaruv samolyotlaridan foydalanmoqdamiz, garchi ko'pchilik tarmoq operatorlari tizimning ushbu qismini biron bir texnologiya komponenti bilan bog'lamasligi mumkin. Sababi oddiy:
Bugungi kunda qo'llaniladigan boshqaruv samolyotlarining ko'pchiligi ... biz.

ning 2 ta rasm Men "Inson boshqaruvi samolyoti" deb ataydigan narsani ko'rsatadi. Hali ham keng tarqalgan bo'lib qoladigan ushbu turdagi joylashtirishda, ehtimol, g'azablangan inson operatori statik konfiguratsiyalarni yaratadi - potentsial skriptlar orqali - va ularni barcha proksi-serverlarga maxsus jarayon orqali joylashtiradi. Keyin proksi-serverlar ushbu konfiguratsiyadan foydalanishni boshlaydilar va yangilangan sozlamalar yordamida ma'lumotlar tekisligini qayta ishlashni boshlaydilar.

Xizmat mash ma'lumotlar tekisligi va nazorat tekisligi
3-rasm: Kengaytirilgan xizmat ko'rsatish tarmog'ini boshqarish tekisligi

ning 3 ta rasm xizmat ko'rsatish tarmog'ining "kengaytirilgan" boshqaruv tekisligini ko'rsatadi. U quyidagi qismlardan iborat:

  • Inson: Hali ham butun tizim bo'yicha yuqori darajadagi qarorlar qabul qiladigan (umid qilamanki, kamroq g'azablangan) odam bor.
  • Boshqaruv tekisligi UI: Bir kishi tizimni boshqarish uchun foydalanuvchi interfeysining qandaydir turi bilan o'zaro ishlaydi. Bu veb-portal, buyruq qatori ilovasi (CLI) yoki boshqa interfeys bo'lishi mumkin. Foydalanuvchi interfeysidan foydalanib, operator global tizim konfiguratsiya parametrlariga kirish huquqiga ega, masalan:
    • Joylashtirishni nazorat qilish, ko'k/yashil va/yoki bosqichma-bosqich trafik o'tish
    • Autentifikatsiya va avtorizatsiya imkoniyatlari
    • Marshrutlash jadvali spetsifikatsiyalari, masalan, A ilovasi "/foo" nima sodir bo'lishi haqida ma'lumot so'raganda
    • Taymerlar, qayta urinishlar, elektron uzilish sozlamalari va h.k. kabi yuk balansi sozlamalari.
  • Ish yukini rejalashtiruvchi: Xizmatlar Kubernetes yoki Nomad kabi ba'zi turdagi rejalashtirish/orkestrlash tizimi orqali infratuzilmada boshqariladi. Rejalashtiruvchi xizmatni mahalliy proksi-server bilan birga yuklash uchun javobgardir.
  • Xizmat kashfiyoti. Rejalashtiruvchi xizmat ko'rsatish namunalarini ishga tushirganda va to'xtatganda, u sog'liq holati haqida xizmatlarni aniqlash tizimiga xabar beradi.
  • Sidecar proksi-server konfiguratsiyasi API'lari : Mahalliy proksi-serverlar operator aralashuvisiz oxir-oqibat izchil model yordamida turli tizim komponentlaridan holatni dinamik ravishda chiqaradi. Hozirda ishlayotgan barcha xizmat ko'rsatish namunalari va mahalliy proksi-serverlardan tashkil topgan butun tizim oxir-oqibat bitta ekotizimga birlashadi. Elchining universal ma'lumotlar tekisligi API'si bu amalda qanday ishlashiga misoldir.

Aslida, boshqaruv tekisligining maqsadi ma'lumotlar tekisligi tomonidan qabul qilinadigan siyosatni o'rnatishdir. Ilg'or boshqaruv samolyotlari operatordan ba'zi tizimlarning ko'proq qismlarini olib tashlaydi va ular to'g'ri ishlashi sharti bilan kamroq qo'lda ishlashni talab qiladi!...

Ma'lumotlar tekisligi va boshqaruv tekisligi. Ma'lumotlar tekisligi va boshqaruv tekisligi haqida xulosa

  • Xizmat ko'rsatish tarmog'i ma'lumotlar tekisligi: Tizimdagi har bir paket/so'rovga ta'sir qiladi. Ilova/xizmatni aniqlash, sog'lig'ini tekshirish, marshrutlash, yukni muvozanatlash, autentifikatsiya/avtorizatsiya va kuzatuvchanlik uchun javobgar.
  • Xizmat mashini boshqarish tekisligi: Xizmat tarmog'idagi barcha ishlaydigan ma'lumotlar tekisliklari uchun siyosat va konfiguratsiyani ta'minlaydi. Tizimdagi hech qanday paketlar/so'rovlarga tegmaydi. Boshqaruv tekisligi barcha ma'lumotlar tekisliklarini taqsimlangan tizimga aylantiradi.

Loyihaning joriy manzarasi

Yuqoridagi tushuntirishni tushunib, keling, xizmat ko'rsatish tarmog'i loyihasining hozirgi holatini ko'rib chiqaylik.

  • Ma'lumotlar samolyotlari: Linkerd, NGINX, HAProxy, Envoy, Traefik
  • Boshqarish samolyotlari: Istio, Nelson, SmartStack

Yuqoridagi echimlarning har birini chuqur tahlil qilish o'rniga, men hozir ekotizimdagi chalkashliklarga sabab bo'layotgan ba'zi fikrlarga qisqacha to'xtalib o'taman.

Linkerd 2016 yil boshida xizmat ko'rsatish tarmog'i uchun birinchi proksi-serverlardan biri bo'lgan va xizmat tarmog'i dizayni modeliga e'tibor va xabardorlikni oshirish bo'yicha ajoyib ishlarni amalga oshirdi. Taxminan 6 oy o'tgach, Elchi Linkerdga qo'shildi (garchi u Lyft bilan 2015 yil oxiridan beri ishlagan bo'lsa ham). Linkerd va Envoy - bu xizmat tarmoqlarini muhokama qilishda eng ko'p tilga olinadigan ikkita loyiha.

Istio 2017 yilning may oyida e'lon qilingan edi. Istio loyihasining maqsadlari ko'rsatilgan kengaytirilgan boshqaruv tekisligiga juda o'xshaydi 3 ta rasm. Istio uchun elchi standart proksi-server hisoblanadi. Shunday qilib, Istio boshqaruv tekisligi, Elchi esa ma'lumotlar tekisligidir. Qisqa vaqt ichida Istio juda ko'p hayajonga sabab bo'ldi va boshqa ma'lumotlar samolyotlari Envoy o'rnini bosuvchi sifatida integratsiyani boshladi (ham Linkerd, ham NGINX Istio bilan integratsiyani namoyish etdi). Bitta boshqaruv tekisligida turli xil ma'lumotlar tekisliklaridan foydalanish mumkinligi, boshqaruv tekisligi va ma'lumotlar tekisligi bir-biriga mahkam bog'langan emasligini anglatadi. Envoy's generic data plane API kabi API tizimning ikki qismi o'rtasida ko'prik tashkil qilishi mumkin.

Nelson va SmartStack boshqaruv tekisligi va ma'lumotlar tekisligining ajratilishini yanada ko'proq tasvirlashga yordam beradi. Nelson Envoy-dan proksi-server sifatida foydalanadi va HashiCorp stekiga asoslangan xizmat ko'rsatish tarmog'i uchun ishonchli boshqaruv tekisligini quradi, ya'ni. Nomad va boshqalar. SmartStack, ehtimol, xizmat ko'rsatish tarmoqlarining yangi to'lqinining birinchisi edi. SmartStack HAProxy yoki NGINX atrofida boshqaruv tekisligini quradi, bu boshqaruv tekisligini xizmat ko'rsatish tarmog'idan ma'lumotlar tekisligidan ajratish qobiliyatini namoyish etadi.

Xizmat ko'rsatish tarmog'iga ega mikroservis arxitekturasi tobora ko'proq e'tiborni tortmoqda (to'g'ri!) va bu yo'nalishda tobora ko'proq loyihalar va sotuvchilar ishlay boshladilar. Kelgusi bir necha yil ichida biz ma'lumotlar tekisligida ham, boshqaruv tekisligida ham ko'plab yangiliklarni, shuningdek, turli komponentlarni yanada aralashtirishni ko'ramiz. Oxir oqibat, mikroservis arxitekturasi operator uchun yanada shaffof va sehrli (?) bo'lishi kerak.
Umid qilamanki, kamroq va kamroq g'azablangan.

Asosiy xulosalar

  • Xizmat ko'rsatish tarmog'i ikki xil qismdan iborat: ma'lumotlar tekisligi va boshqaruv tekisligi. Ikkala komponent ham talab qilinadi va ularsiz tizim ishlamaydi.
  • Boshqaruv tekisligi bilan hamma tanish va bu vaqtda boshqaruv samolyoti siz bo'lishingiz mumkin!
  • Barcha ma'lumotlar samolyotlari xususiyatlar, unumdorlik, konfiguratsiya va kengaytirilish bo'yicha bir-biri bilan raqobatlashadi.
  • Barcha boshqaruv samolyotlari xususiyatlar, sozlanishi, kengaytirilishi va foydalanish qulayligi bo'yicha bir-biri bilan raqobatlashadi.
  • Bitta boshqaruv tekisligi to'g'ri abstraktsiyalar va API-larni o'z ichiga olishi mumkin, shuning uchun bir nechta ma'lumotlar tekisliklaridan foydalanish mumkin.

Manba: www.habr.com

a Izoh qo'shish