Кубернетестегі подкаст басымдықтары Grafana Labs зертханасының тоқтап қалуына қалай себеп болды

Ескерту. аударма: Сіздердің назарларыңызға Grafana жасаушылар жүргізетін бұлттық қызметтегі жақында тоқтап қалу себептері туралы техникалық мәліметтерді ұсынамыз. Бұл инфрақұрылымның сапасын жақсартуға арналған жаңа және өте пайдалы болып көрінетін мүмкіндіктің... өндірісте қолданудың көптеген нюанстарын қарастырмасаңыз, зиян келтіруі мүмкін екендігінің классикалық мысалы. Қателіктеріңізден ғана емес үйренуге мүмкіндік беретін осындай материалдар пайда болған кезде өте жақсы. Толық мәліметтер Grafana Labs өнімі бойынша вице-президентінің осы мәтіннің аудармасында берілген.

Кубернетестегі подкаст басымдықтары Grafana Labs зертханасының тоқтап қалуына қалай себеп болды

Жұмада, 19 шілдеде, Grafana Cloud жүйесіндегі Hosted Prometheus қызметі шамамен 30 минутқа жұмысын тоқтатты. Мен үзілістен зардап шеккен барлық тұтынушылардан кешірім сұраймын. Біздің жұмысымыз сізге қажет бақылау құралдарын қамтамасыз ету болып табылады және олардың қолжетімді болмауы сіздің өміріңізді қиындатуы мүмкін екенін түсінеміз. Біз бұл оқиғаға өте байыпты қараймыз. Бұл жазбада не болғаны, біз қалай әрекет еткеніміз және оның қайталанбауы үшін не істеп жатқанымыз түсіндіріледі.

тарихын

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

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

Дегенмен, қалыпты жұмыс кезінде бірде-бір машинада пайдаланылмаған ресурстардың бұл 25% болмайтыны жиі кездеседі. Иә, біз тіпті тырыспаймыз: процессор мен жад әрқашан басқа процестер үшін пайдалы болады. Бұл мәселені шешу үшін біз пайдалануды шештік Kubernetes Pod басымдықтары. Бұл идея Ingester-ге басқа (тұрғылықты жері жоқ) микросервистерге қарағанда жоғары басымдық беру болып табылады. Қосымша (N+1) Ingester іске қосу қажет болғанда, біз басқа, кішірек бөтелкелерді уақытша ауыстырамыз. Бұл қосқыштар басқа машиналардағы бос ресурстарға ауыстырылып, қосымша Ingester іске қосу үшін жеткілікті үлкен «тесік» қалдырады.

Бейсенбі, 18 шілдеде біз кластерлерімізге төрт жаңа басымдық деңгейін шығардық: сыни, биік, орта и төмен. Олар шамамен бір апта бойы клиент трафигі жоқ ішкі кластерде сынақтан өтті. Әдепкі бойынша, басымдылығы жоқ подкасттар алынды орта басымдық, класс ингестерлер үшін белгіленді жоғары басымдық. Сыни мониторинг үшін сақталған (Prometheus, Alertmanager, node-exporter, kube-state-metrics және т.б.). Біздің конфигурациямыз ашық, сіз PR көре аласыз осында.

Апат

Жұма, 19 шілдеде инженерлердің бірі үлкен клиент үшін жаңа арнайы Cortex кластерін іске қосты. Бұл кластерге арналған конфигурация жаңа подкаст басымдықтарын қамтымаған, сондықтан барлық жаңа подкасттарға әдепкі басымдық тағайындалды - орта.

Kubernetes кластерінде жаңа Cortex кластері үшін ресурстар жеткіліксіз болды және бар өндірістік Cortex кластері жаңартылмады (ингестерлер жоқ қалды. жоғары басымдық). Жаңа кластердің Ingesters әдепкі бойынша болғандықтан орта басымдылыққа ие болды, ал өндірістегі бар подкасттар басымдықсыз жұмыс істеді, жаңа кластердің ингестерлері бар Cortex өндірістік кластерінен ингестерлерді ауыстырды.

Өндіріс кластеріндегі шығарылған Ingester үшін ReplicaSet шығарылған подкастты анықтады және көшірмелердің көрсетілген санын сақтау үшін жаңасын жасады. Жаңа қосқыш әдепкі бойынша тағайындалды орта басымдыққа ие болды және өндірістегі тағы бір «ескі» Ингестер ресурстарын жоғалтты. Нәтиже болды көшкін процесі, бұл Ingester for Cortex өндіріс кластерлерінен барлық бұршақтардың ығысуына әкелді.

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

Анықтау және қалпына келтіру

«Қате бюджетіне» негізделген жаңа Prometheus хабарландырулары (қате бюджетке негізделген — егжей-тегжейлер алдағы мақалада көрсетіледі) өшіру басталғаннан кейін 4 минуттан кейін дабыл қаға бастады. Келесі бес минут ішінде біз диагностика жүргіздік және жаңа және бар өндірістік кластерлерді орналастыру үшін негізгі Kubernetes кластерін кеңейттік.

Тағы бес минуттан кейін ескі Ингестер өз деректерін сәтті жазды, жаңалары іске қосылды және Cortex кластерлері қайтадан қол жетімді болды.

Тағы 10 минут Cortex алдында орналасқан аутентификацияның кері прокси-серверлерінің жадсыз (OOM) қателерін диагностикалауға және түзетуге жұмсалды. OOM қателері QPS-тің он есе артуына байланысты болды (біз клиенттің Prometheus серверлерінің тым агрессивті сұрауларына байланысты деп есептейміз).

Салдары

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

Кубернетестегі подкаст басымдықтары Grafana Labs зертханасының тоқтап қалуына қалай себеп болды
Өндірістік кластерді жазу операциялары

қорытындылар

Бұл оқиғадан сабақ алу және оның қайталанбауы үшін қажетті шараларды қабылдау маңызды.

Ойлап қарасақ, әдепкі мәнді орнатпауымыз керек еді орта өндірістегі барлық ингестерлерді алғанға дейін басымдық биік басымдық. Сонымен қатар, оларға алдын ала қамқорлық жасау қажет болды жоғары басымдық. Қазір бәрі реттелді. Біздің тәжірибеміз басқа ұйымдарға Kubernetes-тегі подкаст басымдықтарын пайдалануда көмектеседі деп үміттенеміз.

Конфигурациялары кластерге жаһандық болатын кез келген қосымша нысандарды орналастыруды бақылаудың қосымша деңгейін қосамыз. Бұдан былай мұндай өзгерістер бағаланады bокөбірек адам. Бұған қоса, апатқа себеп болған өзгерту бөлек жобалық құжат үшін тым аз деп саналды - ол тек GitHub шығарылымында талқыланды. Бұдан былай конфигурацияларға жасалған барлық осындай өзгертулер тиісті жобалық құжаттамамен бірге жүреді.

Соңында, біз куә болған OOM шамадан тыс жүктелуінің алдын алу үшін аутентификацияның кері проксиінің өлшемін өзгертуді автоматтандырамыз және болашақта ұқсас мәселелерді болдырмау үшін қалпына келтіруге және масштабтауға қатысты Prometheus әдепкі параметрлерін қарастырамыз.

Сәтсіздіктің кейбір оң салдары да болды: қажетті ресурстарды алған Cortex қосымша араласусыз автоматты түрде қалпына келтірілді. Біз сонымен бірге жұмыс істеудің құнды тәжірибесін алдық Графана Локи - біздің жаңа журналды біріктіру жүйеміз - ол барлық ингестерлердің сәтсіздік кезінде және одан кейін дұрыс әрекет етуіне кепілдік берді.

Аудармашыдан PS

Біздің блогта да оқыңыз:

Ақпарат көзі: www.habr.com

пікір қалдыру