Кубернетестеги приоритеттердин кандайча Grafana Labs иштебей калышына алып келди

Эскертүү. котормо.: Сиздердин назарыңыздарга Grafana түзүүчүлөрү тарабынан жүргүзүлүп жаткан булут кызматындагы акыркы токтоп калуулардын себептери тууралуу техникалык деталдарды сунуштайбыз. Бул инфраструктуранын сапатын жакшыртуу үчүн иштелип чыккан жаңы жана өтө пайдалуу көрүнгөн функциянын... өндүрүштүн реалдуулугунда колдонуунун көптөгөн нюанстарын камсыз кылбасаңыз, зыян алып келиши мүмкүн экендигинин классикалык мисалы. Бул сыяктуу материалдар пайда болгондо, бул сиздин каталарыңыздан гана эмес, үйрөнүүгө мүмкүндүк берет. Толук маалымат Grafana Labs продуктунун вице-президентинин бул тексттин котормосунда.

Кубернетестеги приоритеттердин кандайча Grafana Labs иштебей калышына алып келди

Жума күнү, 19-июлда, Grafana Булутундагы Hosted Prometheus кызматы болжол менен 30 мүнөткө иштебей калды. Мен өчүрүүлөрдөн жабыркаган бардык кардарлардан кечирим сурайм. Биздин милдет сизге керектүү мониторинг куралдарын камсыз кылуу болуп саналат, жана биз алардын жок болушу жашооңузду кыйындатат. Биз бул окуяга өтө олуттуу мамиле жасайбыз. Бул эскертүү эмне болгонун, биз кандай жооп кайтарганыбызды жана кайталанбашы үчүн эмне кылып жатканыбызды түшүндүрөт.

prehistory

Grafana Cloud Hosted Prometheus кызматы негизделген Адлер — CNCF долбоору горизонталдык масштабда, жеткиликтүү, көп ижарачы Prometheus кызматын түзүү. Кортекс архитектурасы жеке микросервистердин жыйындысынан турат, алардын ар бири өзүнүн функциясын аткарат: репликация, сактоо, суроо ж.б. Кортекс жигердүү иштеп чыгууда жана тынымсыз жаңы функцияларды кошуп, иштөөсүн жакшыртууда. Кардарлар бул мүмкүнчүлүктөрдү пайдалана алышы үчүн, биз дайыма жаңы Cortex релиздерин кластерлерге жайгаштырып турабыз - бактыга жараша, Cortex иштебей туруп жаңыртылышы мүмкүн.

Үзгүлтүксүз жаңыртуулар үчүн, Ingester Cortex кызматы жаңыртуу процессинде кошумча Ingester репликасын талап кылат. (Эскертүү. котормо.: Ingester - Кортекстин негизги компоненти. Анын милдети үлгүлөрдүн туруктуу агымын чогултуу, аларды Prometheus бөлүктөрүнө топтоо жана DynamoDB, BigTable же Cassandra сыяктуу маалымат базасында сактоо.) Бул эски Ингестерлерге учурдагы маалыматтарды жаңы Ингестерлерге жөнөтүүгө мүмкүндүк берет. Белгилей кетсек, Ingesters ресурстарды талап кылат. Алардын иштеши үчүн сизде 4 өзөк жана 15 ГБ эстутум керек, б.а. Биздин Kubernetes кластерлерибизде базалык машинанын иштетүү күчү жана эс тутумунун 25%. Жалпысынан алганда, бизде кластерде 4 өзөккө жана 15 ГБ эстутумга караганда бир топ пайдаланылбаган ресурстар бар, ошондуктан жаңыртуу учурунда бул кошумча жугучтарды оңой эле айланта алабыз.

Бирок, көп учурда нормалдуу иштөө учурунда машиналардын биринде да бул 25% пайдаланылбаган ресурстар жок болот. Ооба, биз аракет кылбайбыз: CPU жана эс тутум ар дайым башка процесстер үчүн пайдалуу болот. Бул көйгөйдү чечүү үчүн биз колдонууну чечтик Kubernetes Pod приоритеттери. Идея Ingesters башка (жарандыгы жок) микросервистерге караганда көбүрөөк артыкчылык берүү. Кошумча (N+1) Ingesterди иштетишибиз керек болгондо, биз башка, кичирээк кабыктарды убактылуу алмаштырабыз. Бул кабыктар кошумча Ingesterди иштетүү үчүн жетиштүү чоң "тешик" калтырып, башка машиналардагы бош ресурстарга өткөрүлүп берилет.

Бейшемби күнү, 18-июлда, биз кластерлерибизге төрт жаңы артыкчылыктуу деңгээлди чыгардык: оор, бийик, орто и төмөн. Алар бир жумага жакын кардар трафиги жок ички кластерде сыналган. Демейки боюнча, белгиленген артыкчылыктары жок поддондор кабыл алынат орто артыкчылыктуу, класс менен Ingesters үчүн белгиленген бийик артыкчылык. Критикалык мониторинг жүргүзүү үчүн сакталган (Prometheus, Alertmanager, түйүн-экспорттоочу, kube-state-metrics, ж.б.). Биздин конфигурация ачык, сиз пиарды көрө аласыз бул жерде.

кокустук

Жума күнү, 19-июлда, инженерлердин бири чоң кардар үчүн жаңы арналган Cortex кластерин ишке киргизди. Бул кластердин конфигурациясында жаңы подкаст артыкчылыктары камтылган эмес, андыктан бардык жаңы подкасттарга демейки артыкчылык берилген - орто.

Kubernetes кластеринде жаңы Cortex кластери үчүн ресурстар жетишсиз болгон жана учурдагы өндүрүштүк Cortex кластери жаңыртылган эмес (Ингестерлер жок калды. бийик артыкчылык). Анткени жаңы кластердин Ingesters демейки боюнча болгон орто приоритеттүү, ал эми өндүрүштөгү бар поддондор такыр артыкчылыксыз иштегендиктен, жаңы кластердин Ingesters бар Cortex өндүрүш кластеринен Ингестерлерди алмаштырды.

Өндүрүштүк кластердеги чыгарылып кеткен Ingester үчүн ReplicaSet чыгарылып кеткен поддонду аныктап, көрсөтүлгөн нускалардын санын сактоо үчүн жаңысын түздү. Жаңы подколь демейки боюнча дайындалган орто артыкчылыкка ээ болуп, өндүрүштөгү дагы бир "эски" Ingester ресурстарын жоготкон. Натыйжа болду кар көчкү процесси, бул Cortex өндүрүштүк кластерлери үчүн Ingesterден бардык порошоктордун жылышына алып келди.

Ингестерлер статуска ээ жана мурунку 12 саатка маалыматтарды сакташат. Бул бизге аларды узак мөөнөттүү сактоого жазуудан мурун натыйжалуураак кысууга мүмкүндүк берет. Буга жетүү үчүн, Cortex бөлүштүрүлгөн хэш таблицасын (DHT) колдонуп сериялар боюнча маалыматтарды сындырып, ар бир серияны Динамо стилиндеги кворумдун ырааттуулугун колдонуп үч Ingester боюнча кайталайт. Cortex өчүрүлгөн Ingesterдерге маалыматтарды жазбайт. Ошентип, көп сандагы Ingesters DHTтен чыгып кеткенде, Cortex жазуулардын жетиштүү репликациясын камсыздай албайт жана алар кыйрап калат.

Аныктоо жана оңдоо

"Ката бюджетине" негизделген жаңы Prometheus эскертмелери (ката бюджетке негизделген — чоо-жайы кийинки макалада пайда болот) өчүрүү башталгандан 4 мүнөт өткөндөн кийин сигнал бере баштады. Кийинки беш мүнөттүн ичинде биз бир аз диагностика жүргүзүп, жаңы жана учурдагы өндүрүш кластерлерин жайгаштыруу үчүн негизги Kubernetes кластерин кеңейттик.

Дагы беш мүнөттөн кийин, эски Ingesters өз маалыматтарын ийгиликтүү жазып, жаңылары иштей баштады жана Cortex кластерлери кайра жеткиликтүү болуп калды.

Дагы 10 мүнөт Кортекстин алдында жайгашкан аутентификациянын тескери проксилеринин эс тутумунан (OOM) каталарын диагностикалоого жана оңдоого жумшалды. OOM каталары QPSтин он эсе көбөйүшү менен шартталган (биз кардардын Prometheus серверлеринин өтө агрессивдүү суроо-талаптарынан улам деп ойлойбуз).

таасирлери

Жалпы токтоп калуу 26 мүнөттү түздү. Эч кандай маалымат жоголгон жок. Ingesters бардык эстутумдагы маалыматтарды узак мөөнөттүү сактоого ийгиликтүү жүктөштү. Өчүрүү учурунда буферленген кардар Prometheus серверлери жок кылынды (алыстагы) жазууларды колдонуу жаңы API remote_write WAL негизинде (автору Каллум Стян Grafana Labs) жана кыйроодон кийин ийгиликсиз жазууларды кайталады.

Кубернетестеги приоритеттердин кандайча Grafana Labs иштебей калышына алып келди
Өндүрүш кластерин жазуу операциялары

табылгалары

Бул окуядан сабак алуу жана анын кайталанбашы үчүн зарыл чараларды көрүү маанилүү.

Артка карап көрсөк, биз демейкиди койбошубуз керек болчу орто өндүрүштөгү бардык Ингестер алынганга чейин артыкчылык бийик артыкчылыктуу. Мындан тышкары, аларга алдын ала кам көрүү керек болчу бийик артыкчылык. Азыр баары чечилди. Биздин тажрыйба башка уюмдарга Кубернетестеги приоритеттерди колдонууга жардам берет деп үмүттөнөбүз.

Конфигурациялары кластерге глобалдуу болгон ар кандай кошумча объектилердин жайгаштырылышын көзөмөлдөөнүн кошумча деңгээлин кошобуз. Мындан ары мындай өзгөрүүлөргө баа берилет бокөбүрөөк адамдар. Кошумчалай кетсек, кыйроого себеп болгон өзгөртүү өзүнчө долбоор документи үчүн өтө кичинекей деп эсептелген - ал GitHub чыгарылышында гана талкууланган. Мындан ары конфигурацияларга мындай өзгөртүүлөр тиешелүү долбоордук документтер менен коштолот.

Акырында, биз күбө болгон OOM ашыкча жүктөлүшүнө жол бербөө үчүн аутентификациянын тескери проксисинин өлчөмүн өзгөртүүнү автоматташтырабыз жана келечекте ушуга окшогон маселелердин алдын алуу үчүн кайра калыбына келтирүүгө жана масштабга байланыштуу Prometheus демейки жөндөөлөрүн карап чыгабыз.

Катачылыктын кээ бир оң натыйжалары да бар: керектүү ресурстарды алып, Cortex кошумча кийлигишүүсүз автоматтык түрдө калыбына келтирилди. Ошондой эле биз менен иштешип баалуу тажрыйбага ээ болдук Графана Локи - биздин жаңы журналдарды бириктирүү тутумубуз - бул бардык Ингестерлердин ката учурунда жана андан кийин туура иш алып барышын камсыздоого жардам берди.

Котормочудан PS

Биздин блогдон дагы окуңуз:

Source: www.habr.com

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