Kubernetes адал явдал Dailymotion: үүлэн дотор дэд бүтцийг бий болгох + газар дээр нь

Kubernetes адал явдал Dailymotion: үүлэн дотор дэд бүтцийг бий болгох + газар дээр нь

Анхаарна уу. орчуулга.: Dailymotion бол дэлхийн хамгийн том видео байршуулах үйлчилгээний нэг бөгөөд Kubernetes-ийн алдартай хэрэглэгч юм. Энэхүү материалд системийн архитектор Дэвид Дончез GKE-д үүлэн суурилуулалтаар эхэлж, эрлийз шийдэл болж дууссан K8s-д суурилсан компанийн үйлдвэрлэлийн платформыг бий болгосны үр дүнг хуваалцсан бөгөөд энэ нь хариу арга хэмжээ авах хугацааг сайжруулж, дэд бүтцийн зардлыг хэмнэх боломжийг олгосон.

Үндсэн API-г дахин бүтээхээр шийдэж байна Dailymotion Гурван жилийн өмнө бид програмуудыг байршуулах илүү үр дүнтэй аргыг боловсруулж, хялбар болгохыг хүссэн хөгжүүлэлт, үйлдвэрлэлийн үйл явц. Энэ зорилгоор бид чингэлэг зохион байгуулах платформ ашиглахаар шийдсэн бөгөөд мэдээжийн хэрэг Kubernetes-ийг сонгосон.

Kubernetes дээр суурилсан өөрийн платформыг бий болгох нь яагаад үнэ цэнэтэй вэ?

Google Cloud ашиглан үйлдвэрлэлийн түвшний API-г цаг алдалгүй ашиглах

2016 оны зун

Гурван жилийн өмнө, Dailymotion-ийг худалдаж авсны дараахан Vivendi, манай инженерийн багууд нэг л дэлхий нийтийн зорилгод анхаарлаа хандуулж байна: цоо шинэ Dailymotion бүтээгдэхүүн бий болгох.

Контейнерын дүн шинжилгээ, зохион байгуулалтын шийдэл, өнгөрсөн туршлага дээрээ үндэслэн Кубернетес бол зөв сонголт гэдэгт бид итгэлтэй байна. Зарим хөгжүүлэгчид үндсэн ойлголтын талаар аль хэдийн ойлголттой байсан бөгөөд үүнийг хэрхэн ашиглахаа мэддэг байсан нь дэд бүтцийн өөрчлөлтөд маш том давуу тал болсон.

Дэд бүтцийн үүднээс авч үзвэл шинэ төрлийн үүлэн программуудыг байршуулахын тулд хүчирхэг, уян хатан систем шаардлагатай байв. Бид аяллынхаа эхэнд үүлэн дотор байхаар сонгосон бөгөөд ингэснээр бид хамгийн бат бөх платформыг оюун санааны амар амгалангаар бүтээх боломжтой болсон. Бид эрт орой хэзээ нэгэн цагт өөрийн дата төв рүү нүүж, эрлийз стратеги хэрэгжүүлнэ гэдгээ мэдэж байсан ч Google Kubernetes Engine ашиглан програмуудаа ашиглахаар шийдсэн.

Та яагаад GKE-г сонгосон бэ?

Бид энэ сонголтыг голчлон техникийн шалтгаанаар хийсэн. Үүнээс гадна компанийн бизнесийн хэрэгцээнд нийцсэн дэд бүтцийг түргэн шуурхай хангах шаардлагатай байв. Бидэнд газарзүйн тархалт, өргөтгөх чадвар, алдааг тэсвэрлэх чадвар зэрэг програмуудыг байршуулах зарим шаардлага байсан.

Kubernetes адал явдал Dailymotion: үүлэн дотор дэд бүтцийг бий болгох + газар дээр нь
Dailymotion дахь GKE кластерууд

Dailymotion бол дэлхий даяар ашиглах боломжтой видео платформ учраас бид хүлээх хугацааг багасгах замаар үйлчилгээний чанарыг сайжруулахыг үнэхээр хүсч байсан. (хоцролт). Өмнө нь манай API зөвхөн Парист боломжтой байсан бөгөөд энэ нь оновчтой биш байсан. Би зөвхөн Европ төдийгүй Ази, АНУ-д програмуудыг байршуулахыг хүссэн.

Энэхүү хоцролтод мэдрэмтгий байдал нь платформын сүлжээний архитектур дээр ноцтой ажил хийх шаардлагатай гэсэн үг юм. Ихэнх үүлэн үйлчилгээ нь таныг бүс нутаг бүрт өөрийн сүлжээг үүсгэж, дараа нь VPN эсвэл ямар нэгэн удирдлагатай үйлчилгээгээр дамжуулан холбохыг албаддаг байсан бол Google Cloud нь танд Google-ийн бүх бүс нутгийг хамарсан бүрэн чиглүүлэх боломжтой нэг сүлжээ үүсгэх боломжийг олгосон. Энэ нь системийн ажиллагаа, үр ашгийн хувьд том давуу тал юм.

Нэмж дурдахад Google Cloud-ийн сүлжээний үйлчилгээ болон ачааллын тэнцвэржүүлэгчид маш сайн ажилладаг. Тэд зүгээр л танд бүс бүрээс дурын нийтийн IP хаягийг ашиглах боломжийг олгодог бөгөөд гайхамшигтай BGP протокол нь үлдсэн хэсгийг нь хариуцдаг (жишээ нь хэрэглэгчдийг хамгийн ойрын кластер руу дахин чиглүүлэх). Хэрэв ямар нэгэн эвдрэл гарсан тохиолдолд хүний ​​оролцоогүйгээр замын хөдөлгөөн автоматаар өөр бүс рүү шилжих нь ойлгомжтой.

Kubernetes адал явдал Dailymotion: үүлэн дотор дэд бүтцийг бий болгох + газар дээр нь
Google-ийн ачааллыг тэнцвэржүүлэх хяналт

Манай платформ бас GPU-г ихээр ашигладаг. Google Cloud нь эдгээрийг шууд Kubernetes кластерт маш үр дүнтэй ашиглах боломжийг танд олгоно.

Тухайн үед дэд бүтцийн баг үндсэндээ физик сервер дээр байрлуулсан хуучин стек дээр төвлөрч байсан. Тийм ч учраас удирдлагатай үйлчилгээг ашиглах нь (Кубернетес мастеруудыг оролцуулаад) бидний шаардлагыг хангаж, орон нутгийн кластеруудтай ажиллах багийг сургах боломжийг бидэнд олгосон.

Үүний үр дүнд бид ажил эхэлснээс хойш ердөө 6 сарын дараа Google Cloud дэд бүтцийн үйлдвэрлэлийн урсгалыг хүлээн авч эхэлсэн.

Гэсэн хэдий ч хэд хэдэн давуу талтай хэдий ч үүлэн үйлчилгээ үзүүлэгчтэй ажиллах нь тодорхой зардалтай холбоотой бөгөөд ачаалалаас хамааран нэмэгдэж болно. Тийм ч учраас бид ашиглаж байсан үйлчилгээ тус бүрдээ сайтар дүн шинжилгээ хийж, ирээдүйд тэдгээрийг газар дээр нь хэрэгжүүлнэ гэж найдаж байна. Уг нь 2016 оны сүүлчээс орон нутгийн кластеруудыг хэрэгжүүлэх ажил эхэлж, эрлийз стратегийг нэгэн зэрэг эхлүүлсэн.

Dailymotion орон нутгийн контейнер зохион байгуулах платформыг эхлүүлэв

2016 оны намар

Бүх стекийг үйлдвэрлэхэд бэлэн болсон нөхцөлд API дээр ажиллана үргэлжлүүлэв, бүс нутгийн кластеруудад анхаарлаа хандуулах цаг болсон.

Тухайн үед хэрэглэгчид сар бүр 3 тэрбум гаруй видео үзэж байсан. Мэдээжийн хэрэг, бид олон жилийн турш өөрийн өргөн хүрээтэй контент хүргэх сүлжээтэй болсон. Бид энэ нөхцөл байдлыг ашиглаж, одоо байгаа мэдээллийн төвүүдэд Kubernetes кластеруудыг байрлуулахыг хүссэн.

Dailymotion-ийн дэд бүтэц нь зургаан дата төвд байрлах 2,5 мянга гаруй серверээс бүрддэг. Бүгдийг нь Saltstack ашиглан тохируулсан. Бид мастер болон ажилчны зангилаа, мөн etcd кластер үүсгэхэд шаардлагатай бүх жорыг бэлтгэж эхлэв.

Kubernetes адал явдал Dailymotion: үүлэн дотор дэд бүтцийг бий болгох + газар дээр нь

Сүлжээний хэсэг

Манай сүлжээ бүрэн чиглүүлсэн. Сервер бүр өөрийн IP хаягаа сүлжээнд Exabgp ашиглан сурталчилдаг. Бид хэд хэдэн сүлжээний залгаасуудыг харьцуулсан бөгөөд бүх хэрэгцээг хангасан цорын ганц нь (L3 хандлагын улмаас) байсан. Калико. Энэ нь одоо байгаа сүлжээний дэд бүтцийн загварт бүрэн нийцдэг.

Бид боломжтой бүх дэд бүтцийн элементүүдийг ашиглахыг хүссэн тул бидний хийх ёстой хамгийн эхний зүйл бол өөрийн сүлжээний хэрэгслийг (бүх сервер дээр ашигладаг) олж мэдэх явдал байв: үүнийг Kubernetes зангилаа бүхий сүлжээнд IP хаягийн хүрээг сурталчлахад ашиглах. Бид Calico-д pod-д IP хаяг өгөхийг зөвшөөрсөн боловч сүлжээний төхөөрөмж дээрх BGP сессүүдэд үүнийг ашиглаагүй, одоо ч ашиглаагүй. Үнэн хэрэгтээ чиглүүлэлтийн ажлыг Exabgp гүйцэтгэдэг бөгөөд энэ нь Calico-ийн ашигладаг дэд сүлжээг сурталчилдаг. Энэ нь дотоод сүлжээнээс (ялангуяа ачааллын тэнцвэржүүлэгчээс) дурын pod руу холбогдох боломжийг бидэнд олгодог.

Бид орох урсгалыг хэрхэн зохицуулдаг

Хүссэн үйлчилгээ рүү ирж буй хүсэлтийг дахин чиглүүлэхийн тулд Kubernetes-ийн нэвтрэх нөөцтэй нэгтгэсэн тул Ingress Controller-ийг ашиглахаар шийдсэн.

Гурван жилийн өмнө nginx-ingress-controller нь хамгийн боловсронгуй хянагч байсан: Nginx нь удаан хугацааны туршид бий болсон бөгөөд тогтвортой байдал, гүйцэтгэлээрээ алдартай байсан.

Манай системд бид хянагчуудыг тусгай зориулалтын 10 гигабит иртэй серверүүд дээр байрлуулахаар шийдсэн. Хянагч бүрийг харгалзах кластерын kube-apiserver төгсгөлийн цэгт холбосон. Эдгээр серверүүд мөн Exabgp-ийг нийтийн болон хувийн IP хаягийг сурталчлахад ашигладаг байсан. Манай сүлжээний топологи нь NodePort гэх мэт үйлчилгээг ашиглахгүйгээр бүх урсгалыг шууд pods руу чиглүүлэхийн тулд эдгээр контроллеруудын BGP-г ашиглах боломжийг бидэнд олгодог. Энэ арга нь зангилааны хоорондох хэвтээ урсгалаас зайлсхийхэд тусалдаг ба үр ашгийг дээшлүүлдэг.

Kubernetes адал явдал Dailymotion: үүлэн дотор дэд бүтцийг бий болгох + газар дээр нь
Интернетээс pods руу чиглэсэн хөдөлгөөний хөдөлгөөн

Одоо бид эрлийз платформоо ойлгосноор замын хөдөлгөөний шилжилтийн үйл явцыг илүү гүнзгийрүүлэн судлах боломжтой.

Google Cloud-аас Dailymotion дэд бүтэц рүү траффик шилжүүлэх

2018 оны намар

Бараг хоёр жил барьж, туршиж, тааруулсны дараа бид эцэст нь зарим урсгалыг хүлээн авахад бэлэн бүрэн Кубернетес стектэй боллоо.

Kubernetes адал явдал Dailymotion: үүлэн дотор дэд бүтцийг бий болгох + газар дээр нь

Одоогийн чиглүүлэлтийн стратеги нь маш энгийн боловч хэрэгцээг хангахад хангалттай юм. Нийтийн IP-ээс гадна (Google Cloud болон Dailymotion дээр) AWS Route 53 нь бодлого тогтоох, хэрэглэгчдийг бидний сонгосон кластер руу дахин чиглүүлэхэд ашиглагддаг.

Kubernetes адал явдал Dailymotion: үүлэн дотор дэд бүтцийг бий болгох + газар дээр нь
Маршрут 53 ашиглан чиглүүлэлтийн бодлогын жишээ

Google Cloud-ийн тусламжтайгаар бид бүх кластерт нэг IP-г хуваалцаж, хэрэглэгчийг хамгийн ойрын GKE кластер руу дахин чиглүүлдэг. Манай кластеруудын IP нь өөр тул технологи нь өөр юм.

Шилжилтийн явцад бид бүс нутгийн хүсэлтийг зохих кластерууд руу шилжүүлэхийг эрэлхийлж, энэ аргын ашиг тусыг үнэлэв.

Манай GKE кластерууд нь Захиалгат хэмжигдэхүүнийг ашиглан автоматаар масштаблахаар тохируулагдсан тул ирж буй траффик дээр үндэслэн томруулж/багасуулдаг.

Ердийн горимд бүх бүс нутгийн хөдөлгөөнийг орон нутгийн кластер руу чиглүүлдэг бөгөөд GKE нь асуудал гарсан тохиолдолд нөөц болдог (эрүүл мэндийн үзлэгийг 53-р маршрутаар хийдэг).

...

Ирээдүйд бид хэрэглэгчдийн хүртээмжийг байнга сайжруулдаг бие даасан эрлийз стратегид хүрэхийн тулд чиглүүлэлтийн бодлогыг бүрэн автоматжуулахыг хүсч байна. Сайн тал нь үүлний зардал мэдэгдэхүйц буурч, API-д хариу өгөх хугацаа ч багассан. Бид үүссэн үүлэн платформд итгэж байгаа бөгөөд шаардлагатай бол илүү олон траффикийг түүн рүү чиглүүлэхэд бэлэн байна.

Орчуулагчийн жич

Та мөн Кубернетесийн тухай Dailymotion-ийн өөр нэг нийтлэлийг сонирхож магадгүй юм. Энэ нь олон Kubernetes кластерууд дээр Helm-тэй програмуудыг байрлуулахад зориулагдсан болно хэвлэгдсэн сар орчмын өмнө.

Мөн манай блог дээрээс уншина уу:

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх