Моделсозии кластерҳои ноком дар асоси PostgreSQL ва Pacemaker

Муқаддима

Чанд вақт пеш ба ман супориш дода шуда буд, ки як кластери хатогиро таҳия кунам PostgreSQL, ки дар якчанд марказҳои додашуда тавассути нахи оптикӣ дар дохили як шаҳр кор мекунад ва қодир аст ба нокомии (масалан, хомӯшии) як маркази додаҳо тоб оварад. Ҳамчун нармафзоре, ки барои таҳаммулпазирии хато масъул аст, ман интихоб кардам стимулятори дилзеро ин ҳалли расмии RedHat барои эҷоди кластерҳои ноком аст. Ин хуб аст, зеро RedHat онро дастгирӣ мекунад ва азбаски ин ҳалли универсалӣ аст (модулярӣ). Бо кӯмаки он, имкон медиҳад, ки таҳаммулпазирии хатогиҳо на танҳо PostgreSQL, балки хидматҳои дигарро бо истифода аз модулҳои стандартӣ ё эҷоди онҳо барои эҳтиёҷоти мушаххас таъмин кард.

Ин тасмим як саволи оқилонаеро ба миён овард: кластер ба хатогиҳо то чӣ андоза таҳаммулпазир хоҳад буд? Барои таҳқиқи ин, ман як дастгоҳи санҷиширо таҳия кардам, ки нокомиҳои гуногунро дар гиреҳҳои кластер тақлид мекунад, барқарор шудани хидматро интизор аст, гиреҳи нокомро барқарор мекунад ва санҷишро дар як ҳалқа идома медиҳад. Ин лоиҳа дар ибтидо hapgsql ном дошт, аммо бо гузашти вақт ман аз ном, ки танҳо як садонок дошт, дилгир шудам. Аз ин рӯ, ман ба даъват кардани пойгоҳи додаҳои ба хатогиҳо тобовар шурӯъ кардам (ва шинокунандаи IP ба онҳо ишора мекунад) кроган (аломати бозии компютерӣ, ки дар он тамоми узвҳои муҳим такрор мешаванд) ва гиреҳҳо, кластерҳо ва худи лоиҳа тучанка (сайёрае, ки дар он крогонхо зиндагй мекунанд).

Холо рохбарият ичозат додааст лоиҳаро барои ҷомеаи кушодаасос дар доираи иҷозатномаи MIT кушоед. README ба зудӣ ба забони англисӣ тарҷума карда мешавад (зеро интизор меравад, ки истеъмолкунандагони асосӣ таҳиягарони Pacemaker ва PostgreSQL хоҳанд буд) ва ман тасмим гирифтам, ки нусхаи кӯҳнаи русии README (қисман) дар шакли ин мақола пешниҳод кунам.

Моделсозии кластерҳои ноком дар асоси PostgreSQL ва Pacemaker

Кластерҳо дар мошинҳои виртуалӣ ҷойгир карда мешаванд VirtualBox. Ҳамагӣ 12 мошини виртуалӣ (дар маҷмӯъ 36GiB) ҷойгир карда мешавад, ки 4 кластери ба хатогиҳо тобоварро ташкил медиҳанд (имконоти гуногун). Ду кластери аввал аз ду сервери PostgreSQL, ки дар марказҳои гуногуни додаҳо ҷойгиранд ва як сервери умумӣ иборатанд. шоҳидон c дастгоҳи кворум (дар як мошини арзони виртуалӣ дар маркази маълумоти сеюм ҷойгир шудааст), ки номуайяниро ҳал мекунад 50% / 50%, додани овози худро ба яке аз ҳизбҳо. Кластери сеюм дар се маркази додаҳо: як устод, ду ғулом, № дастгоҳи кворум. Кластери чорум аз чор сервери PostgreSQL иборат аст, ки дуто барои як маркази додаҳо: як устод, репликаҳои боқимонда ва инчунин истифода мебаранд шоҳидон c дастгоҳи кворум. Чорум метавонад ба шикасти ду сервер ё як маркази додаҳо тоб оварад. Агар лозим бошад, ин ҳалли онро метавон ба миқдори бештари нусхабардорӣ андоза кард.

Хизматрасонии дақиқи вақт ntpd инчунин барои таҳаммулпазирии хатоҳо аз нав танзим карда шудааст, аммо он худи усулро истифода мебарад ntpd (режими ятим). Сервери муштарак шоҳидон ҳамчун сервери марказии NTP амал карда, вақти худро ба ҳама кластерҳо тақсим мекунад ва ба ин васила ҳама серверҳоро бо ҳамдигар ҳамоҳанг месозад. Агар шоҳидон ноком мешавад ё ҷудо мешавад, он гоҳ яке аз серверҳои кластер (дар дохили кластер) ба тақсимоти вақти худ шурӯъ мекунад. Кэшкунии ёрирасон Прокси HTTP низ баланд бардоштанд шоҳидон, бо ёрии он, дигар мошинҳои виртуалӣ ба анборҳои Yum дастрасӣ доранд. Дар асл, хидматҳо ба монанди вақти дақиқ ва проксиҳо эҳтимолан дар серверҳои махсус ҷойгир карда мешаванд, аммо дар кабина онҳо дар он ҷойгир карда мешаванд. шоҳидон танҳо барои сарфа кардани шумораи мошинҳои виртуалӣ ва фазо.

Вариантҳо

v0. Бо CentOS 7 ва PostgreSQL 11 дар VirtualBox 6.1 кор мекунад.

Сохтори кластер

Ҳама кластерҳо тарҳрезӣ шудаанд, ки дар марказҳои сершумори додаҳо ҷойгир шаванд ва дар як шабакаи ҳамвор муттаҳид шаванд ва бояд ба нокомӣ ё ҷудошавии шабакавии як маркази додаҳо тоб оваранд. Барои ҳамон имконнопазир аст барои муҳофизат аз мағзи сар технологияи стандартии кардиостимулятор даъват СТОНИТ (Тир гиреҳи дигар дар сари) ё фуҷур. Моҳияти он: агар гиреҳҳои кластер гумон кунанд, ки дар ягон гиреҳ чизе нодуруст аст, он ҷавоб намедиҳад ё нодуруст рафтор мекунад, онҳо онро тавассути дастгоҳҳои "берунӣ", масалан, корти идоракунии IPMI ё UPS маҷбуран хомӯш мекунанд. . Аммо ин танҳо дар ҳолатҳое кор хоҳад кард, ки дар сурати як нокомӣ сервери IPMI ё UPS корашро идома медиҳад. Дар ин ҷо мо нақша дорем, ки аз нокомии бештар фалокатбор муҳофизат кунем, вақте ки тамоми маркази додаҳо аз кор мебарояд (масалан, қувваи барқро аз даст медиҳад). Ва бо чунин радкунӣ, ҳама чиз сангит-дастгоҳҳо (IPMI, UPS ва ғайра) низ кор намекунанд.

Ба ҷои ин, система ба идеяи кворум асос ёфтааст. Ҳама гиреҳҳо овоз доранд ва танҳо онҳое, ки бештар аз нисфи ҳамаи гиреҳҳоро дида метавонанд, кор карда метавонанд. Ин миқдори "ним + 1" номида мешавад кворум. Агар кворум ба даст наояд, он гоҳ гиреҳ қарор мекунад, ки он дар изолятсияи шабака қарор дорад ва бояд захираҳои худро хомӯш кунад, яъне. ин аст он чизе муҳофизати мағзи сар. Агар нармафзоре, ки барои ин рафтор масъул аст, кор накунад, пас саги назоратӣ, масалан, дар асоси IPMI, бояд кор кунад.

Агар шумораи гиреҳҳо ҷуфт бошад (кластер дар ду маркази додаҳо), он гоҳ номуайянӣ ба вуҷуд омада метавонад. 50% / 50% (панҷоҳу панҷоҳ) вақте ки изолятсияи шабака кластерро ба ду баробар тақсим мекунад. Аз ин рӯ, барои шумораи ҷуфти гиреҳҳо мо илова мекунем дастгоҳи кворум як демони ғайриоддӣ аст, ки онро дар арзонтарин мошини маҷозӣ дар маркази маълумоти сеюм оғоз кардан мумкин аст. Вай овози худро ба яке аз сегментҳо медиҳад (ки онро мебинад) ва ба ин васила номуайянии 50%/50% -ро ҳал мекунад. Ман сервереро ном бурдам, ки дар он дастгоҳи кворум оғоз мешавад шоҳидон (терминология аз repmgr, ба ман писанд омад).

Захираҳо метавонанд аз як ҷо ба ҷои дигар интиқол дода шаванд, масалан, аз серверҳои нодуруст ба серверҳои солим ё бо фармони маъмурони система. Барои он ки муштариён донанд, ки захираҳои ба онҳо лозим дар куҷо ҷойгиранд (дар куҷо пайваст шаванд?), IP шинокунанда (шинокунандаи IP). Инҳо IP-ҳоянд, ки стимуляторҳо метавонанд дар атрофи гиреҳҳо ҳаракат кунанд (ҳама чиз дар шабакаи ҳамвор аст). Ҳар яки онҳо рамзи захира (хизмат) буда, дар ҷое ҷойгир хоҳанд шуд, ки шумо барои дастрасӣ ба ин хидмат пайваст шудан лозим аст (дар ҳолати мо, пойгоҳи додаҳо).

Тучанка1 (схемаи фишурдашуда)

сохтори

Моделсозии кластерҳои ноком дар асоси PostgreSQL ва Pacemaker

Идея ин буд, ки мо бисёр базаҳои хурди дорои сарбории кам дорем, ки барои онҳо нигоҳ доштани сервери ғуломи махсус дар ҳолати интизории гарм барои транзаксияҳои танҳо хондан фоидаовар нест (ба чунин сарфи беҳудаи захираҳо лозим нест).

Ҳар як маркази додаҳо як сервер дорад. Ҳар як сервер ду мисоли PostgreSQL дорад (дар истилоҳоти PostgreSQL онҳоро кластерҳо меноманд, аммо барои пешгирӣ кардани иштибоҳ ман онҳоро мисолҳо меномам (аз рӯи шабеҳ бо дигар пойгоҳи додаҳо) ва ман танҳо кластерҳои Pacemaker-ро даъват мекунам). Як мисол дар реҷаи мастер кор мекунад ва танҳо он хидматҳоро пешкаш мекунад (танҳо IP-и шинокунанда ба он оварда мерасонад). Мисоли дуюм ҳамчун ғулом барои маркази додаҳои дуюм кор мекунад ва танҳо дар сурати ноком шудани устоди он хидмат мерасонад. Азбаски аксар вақт аз ду нусха танҳо як мисол (мастер) хидмат мерасонад (иҷрои дархостҳо), тамоми захираҳои сервер барои устод оптимизатсия карда мешаванд (хотира барои кэши shared_buffers ва ғайра ҷудо карда шудааст), аммо ба тавре ки намунаи дуюм инчунин дорои захираҳои кофӣ (ҳарчанд барои кори номунтазам тавассути кэши системаи файлӣ) дар сурати аз кор баромадани яке аз марказҳои додаҳо. Ҳангоми кори муқаррарии кластер ғулом хидмат намерасонад (дархостҳои танҳо хонданро иҷро намекунад), то ки барои захираҳо бо усто дар як мошин ҷанг набошад.

Дар мавриди ду гиреҳ, таҳаммулпазирии хатогӣ танҳо бо такрори асинхронӣ имконпазир аст, зеро ҳангоми такрори синхронӣ, нокомии ғулом боиси боздоштани устод мегардад.

Набудани шаҳодат

Моделсозии кластерҳои ноком дар асоси PostgreSQL ва Pacemaker

Шаходат надодан (дастгоҳи кворум) Ман танҳо барои кластери Тучанка1 баррасӣ мекунам, бо ҳамаи дигарон он як ҳикоя хоҳад буд. Агар шоҳид ноком шавад, дар сохтори кластер ҳеҷ чиз тағир намеёбад, ҳама чиз ҳамон тавре ки кор мекард, идома хоҳад дод. Аммо кворум 2 аз 3 хоҳад буд ва аз ин рӯ, ҳар як нокомии минбаъда барои кластер марговар хоҳад буд. Онро боз хам таъчилй ислох кардан лозим меояд.

Тучанка1 рад

Моделсозии кластерҳои ноком дар асоси PostgreSQL ва Pacemaker

Барбод рафтани яке аз марказхои маълумотхои Тучанка1. Дар ин маврид шоҳидон овози худро ба гиреҳи дуюм дар маркази дуюми додаҳо медиҳад. Дар он ҷо, ғуломи собиқ ба устод табдил меёбад, дар натиҷа, ҳарду усто дар як сервер кор мекунанд ва ҳарду IP-и шинокунандаи онҳо ба онҳо ишора мекунанд.

Тучанка2 (классикӣ)

сохтори

Моделсозии кластерҳои ноком дар асоси PostgreSQL ва Pacemaker

Схемаи классикии ду гиреҳ. Дар яке усто кор мекунад, дар дуюмаш гулом. Ҳарду метавонанд дархостҳоро иҷро кунанд (ғулом танҳо хонда мешавад), аз ин рӯ ҳарду ба воситаи IP float ишора мекунанд: krogan2 устод аст, krogan2s1 ғулом аст. Ҳам хоҷа ва ҳам ғулом ба хатогиҳо таҳаммул хоҳанд дошт.

Дар мавриди ду гиреҳ, таҳаммулпазирии хатогӣ танҳо бо такрори асинхронӣ имконпазир аст, зеро ҳангоми такрори синхронӣ нокомии банда боиси боздоштани устод мегардад.

Тучанка2 рад

Моделсозии кластерҳои ноком дар асоси PostgreSQL ва Pacemaker

Агар яке аз марказхои маълумот кор накунад шоҳидон ба тарафдории дуюм овоз медихад. Дар ягона маркази додаҳои корӣ устод баланд мешавад ва ҳарду IP-и шинокунанда ба он ишора мекунанд: усто ва ғулом. Албатта, инстансия бояд тавре конфигуратсия карда шавад, ки он дорои захираҳои кофӣ (маҳдудияти пайвастшавӣ ва ғайра) барои ҳамзамон қабули ҳама пайвастҳо ва дархостҳо аз IP float master ва slave. Яъне ҳангоми кори муқаррарӣ он бояд захираи кофии лимит дошта бошад.

Тучанка4 (ғуломони зиёд)

сохтори

Моделсозии кластерҳои ноком дар асоси PostgreSQL ва Pacemaker

Аллакай экстремали дигар. Пойгоҳи додаҳо вуҷуд доранд, ки дархостҳои зиёдеро барои хондан мегиранд (як ҳолати маъмулии сайти сербориш). Тучанка4 вазъиятест, ки дар он метавонад се ва ё зиёда гулом барои иҷрои ин гуна дархостҳо вуҷуд дошта бошанд, аммо ҳанӯз ҳам зиёд нестанд. Бо шумораи хеле зиёди ғуломон, ихтироъ кардани системаи такрории иерархӣ зарур аст. Дар ҳолати ҳадди ақал (дар расм), ҳар яке аз ду маркази додаҳо ду сервер доранд, ки ҳар яки онҳо як мисоли PostgreSQL доранд.

Хусусияти дигари ин схема дар он аст, ки аллакай як такрори синхронӣ ташкил кардан мумкин аст. Он барои нусхабардорӣ, агар имконпазир бошад, ба маркази додаҳои дигар, на ба нусхабардорӣ дар ҳамон маркази додаҳо бо устод танзим шудааст. Устод ва ҳар як ғулом бо IP-и шинокунанда ишора мекунанд. Хушбахтона, байни ғуломон зарур аст, ки дархостҳоро бо ягон роҳ мувозинат диҳанд прокси sqlмасалан, дар тарафи муштарӣ. Намудҳои гуногуни муштариён метавонанд намудҳои гуногунро талаб кунанд прокси sql, ва танҳо таҳиягарони муштарӣ медонанд, ки ба кӣ ниёз дорад. Ин функсия метавонад аз ҷониби як демони беруна ё китобхонаи муштарӣ (ҳавзи пайвастшавӣ) ва ғайра амалӣ карда шавад. Ҳамаи ин аз доираи мавзӯи кластери пойгоҳи додаҳо (failover Прокси SQL метавонад мустақилона, дар якҷоягӣ бо таҳаммулпазирии айби муштарӣ амалӣ карда шавад).

Тучанка4 рад

Моделсозии кластерҳои ноком дар асоси PostgreSQL ва Pacemaker

Агар як маркази додаҳо (яъне ду сервер) ноком шавад, шоҳид барои дуюм овоз медиҳад. Дар натиҷа, дар маркази додаҳои дуюм ду сервер кор мекунад: яке усторо иҷро мекунад ва IP float усто ба он ишора мекунад (барои қабули дархостҳои хондан ва навиштан); ва дар сервери дуюм ғулом бо такрори синхронӣ кор мекунад ва яке аз IP-ҳои шинокунандаи ғулом ба он ишора мекунад (барои дархостҳои танҳо барои хондан).

Аввалин чизе, ки бояд қайд кард, ин аст, ки на ҳама IP-ҳои шинокунандаи ғулом коргар хоҳанд буд, балки танҳо як. Ва барои дуруст кор кардан бо он зарур аст прокси sql ҳама дархостҳоро ба ягона IP шинокунандаи боқимонда равона кард; ва агар прокси sql не, пас шумо метавонед ҳамаи ғуломҳои шинокунандаи IP-ро дар URL пайваст бо вергул ҷудо кунед. Дар ин маврид бо libpq пайвастшавӣ ба IP-и аввалини корӣ хоҳад буд, ин дар системаи санҷиши автоматӣ анҷом дода мешавад. Шояд дар китобхонаҳои дигар, масалан, JDBC, ин кор намекунад ва зарур аст прокси sql. Ин аз он сабаб анҷом дода мешавад, ки IP-ҳои шинокунанда барои ғуломҳо ҳамзамон дар як сервер манъ карда мешаванд, то онҳо дар байни серверҳои ғулом баробар тақсим карда шаванд, агар чанде аз онҳо кор кунанд.

Дуюм: ҳатто дар сурати нокомии маркази додаҳо, такрори синхронӣ нигоҳ дошта мешавад. Ва ҳатто агар нокомии дуюмдараҷа рух диҳад, яъне яке аз ду сервер дар маркази додаҳои боқимонда кор накунад, кластер, гарчанде ки хидматрасониро қатъ кунад ҳам, маълумотро дар бораи ҳама транзаксияҳои анҷомдодашуда, ки барои онҳо тасдиқи ӯҳдадорӣ додааст, нигоҳ медорад. (дар сурати нокомии дуюмдараҷа маълумот дар бораи талафот вуҷуд нахоҳад дошт).

Tuchanka3 (3 маркази маълумот)

сохтори

Моделсозии кластерҳои ноком дар асоси PostgreSQL ва Pacemaker

Ин кластер барои вазъиятест, ки дар он се маркази додаҳои пурра коркунанда мавҷуданд, ки ҳар кадоми онҳо сервери пурраи пойгоҳи додаҳо доранд. Дар ин маврид дастгоҳи кворум лозим нест. Дар як маркази додаҳо усто кор мекунад, дуи дигар аз ғуломон кор мекунанд. Репликатсия синхронӣ аст, навъи ANY (гулом1, гулом2), яъне муштарӣ тасдиқи ӯҳдадорӣ мегирад, вақте ки яке аз ғуломон аввалин шуда посух медиҳад, ки ӯ ӯҳдадориро қабул кардааст. Сарчашмаҳо бо як IP шинокунанда барои устод ва ду барои ғуломон нишон дода мешаванд. Баръакси Tuchanka4, ҳар се IP-и шинокунанда ба хатогиҳо таҳаммулпазиранд. Барои мувозинат кардани дархостҳои танҳо барои хондан SQL шумо метавонед истифода баред прокси sql (бо таҳаммулпазирии алоҳидаи хато) ё як IP-и шинокунандаи ғуломро ба нисфи муштариён ва нисфи дигарро ба дуюм таъин кунед.

Тучанка3 рад

Моделсозии кластерҳои ноком дар асоси PostgreSQL ва Pacemaker

Агар яке аз марказҳои маълумот кор накунад, дуто боқӣ мемонанд. Дар яке, IP-и усто ва шинокунандаи ғулом аз устод бардошта мешаванд, дар дуюм - IP-ҳои ғулом ва ҳарду шинокунандаи ғулом (барои қабули ҳама пайвастҳо аз ҳарду IP-и шинокунандаи ғулом, инстансия бояд захираи дукаратаи захираҳо дошта бошад). Репликатсияи синхронӣ байни оғоён ва ғуломон. Инчунин, кластер маълумотро дар бораи транзаксияҳои анҷомдодашуда ва тасдиқшударо нигоҳ медорад (ҳеҷ гуна талафоти иттилоот вуҷуд надорад) дар ҳолати нобудшавии ду маркази маълумот (агар онҳо дар як вақт нобуд нашаванд).

Ман тасмим гирифтам, ки тавсифи муфассали сохтори файл ва ҷойгиркуниро дохил накунам. Ҳар касе, ки мехоҳад дар гирду атроф бозӣ кунад, метавонад ҳамаашро дар README бихонад. Ман танҳо тавсифи санҷиши автоматиро пешниҳод мекунам.

Системаи автоматии санҷиш

Барои санҷидани таҳаммулпазирии хатогиҳои кластерҳо тавассути тақлид кардани хатогиҳои гуногун, системаи автоматии санҷиш сохта шудааст. Бо скрипт оғоз карда шудааст test/failure. Скрипт метавонад ҳамчун параметр рақамҳои кластерҳоеро, ки шумо мехоҳед санҷед, бигирад. Масалан, ин фармон:

test/failure 2 3

танҳо кластери дуюм ва сеюмро озмоиш хоҳад кард. Агар параметрҳо муайян нашуда бошанд, пас ҳамаи кластерҳо санҷида мешаванд. Ҳама кластерҳо дар баробари санҷида мешаванд ва натиҷа дар панели tmux намоиш дода мешавад. Tmux сервери махсуси tmux-ро истифода мебарад, аз ин рӯ скриптро аз зери tmux пешфарз иҷро кардан мумкин аст, ки дар натиҷа tmux лона гузошта мешавад. Ман тавсия медиҳам, ки терминалро дар равзанаи калон ва бо шрифти хурд истифода баред. Пеш аз оғози санҷиш, ҳама мошинҳои виртуалӣ ҳангоми ба итмом расидани скрипт ба аксбардорӣ бармегарданд. setup.

Моделсозии кластерҳои ноком дар асоси PostgreSQL ва Pacemaker

Терминал аз рӯи шумораи кластерҳои санҷидашуда ба сутунҳо тақсим карда мешавад; ба таври нобаёнӣ (дар скриншот) чор аст. Ман мазмуни сутунҳоро бо мисоли Тучанка2 тавсиф мекунам. Панелҳо дар скриншот рақамгузорӣ карда мешаванд:

  1. Дар ин ҷо омори санҷиш нишон дода мешавад. Сутунҳо:
    • ноком — номи тест (функсия дар скрипт), ки хатогиро тақлид мекунад.
    • вокуниши — вақти миёнаи арифметикӣ бо сонияҳо, ки дар давоми он кластер фаъолияти худро барқарор кард. Он аз оғози скрипт, ки ба хатогӣ тақлид мекунад, то лаҳзае, ки кластер функсияи худро барқарор мекунад ва метавонад хидматрасониро идома диҳад, чен карда мешавад. Агар вақт хеле кӯтоҳ бошад, масалан, шаш сония (ин дар кластерҳои дорои якчанд ғуломон (Tuchanka3 ва Tuchanka4) рух медиҳад), ин маънои онро дорад, ки хато дар ғуломи асинхронӣ буд ва ба ҳеҷ ваҷҳ ба иҷроиш таъсир нарасонд; вуҷуд надошт. коммутаторҳои ҳолати кластер.
    • инҳироф — паҳншавии (дақиқии) арзишро нишон медиҳад вокуниши бо истифода аз усули инҳирофи стандартӣ.
    • шумурдан — ин озмоиш чанд маротиба гузаронида шуд.
  2. Журнали кӯтоҳ ба шумо имкон медиҳад, ки кластер дар айни замон чӣ кор карда истодааст, арзёбӣ кунед. Рақами такрорӣ (санҷиш), тамғаи вақт ва номи амалиёт нишон дода мешавад. Давидан аз ҳад зиёд (> 5 дақиқа) мушкилотро нишон медиҳад.
  3. дил (дил) - вақти ҷорӣ. Барои арзёбии визуалии иҷроиш устохонахо Вақти ҷорӣ пайваста ба ҷадвали худ бо истифода аз устои шинокунандаи IP навишта мешавад. Агар муваффақ бошад, натиҷа дар ин панел нишон дода мешавад.
  4. зада (набз) - "вақти ҷорӣ", ки қаблан бо скрипт сабт шуда буд дил азхуд кардан, акнун аз ғулом тавассути IP шинокунандаи он. Ба шумо имкон медиҳад, ки иҷрои ғулом ва такрориро ба таври визуалӣ арзёбӣ кунед. Дар Tuchanka1 ғуломон бо IP-и шинокунанда вуҷуд надоранд (ягон ғуломе, ки хидмат мерасонад), аммо ду мисол (МБ) мавҷуданд, аз ин рӯ он дар ин ҷо нишон дода намешавад задава дил мисоли дуюм.
  5. Мониторинги саломатии кластер бо истифода аз утилита pcs mon. Сохтор, тақсимоти захираҳо дар байни гиреҳҳо ва дигар маълумоти муфидро нишон медиҳад.
  6. Мониторинги система аз ҳар як мошини маҷозӣ дар кластер дар ин ҷо нишон дода мешавад. Вобаста аз он, ки кластер чанд мошини виртуалӣ дорад, шояд чунин панелҳо бештар бошанд. Ду график Сарбории CPU (мошинҳои виртуалӣ ду протсессори доранд), номи мошини виртуалӣ, Сарбории система (бо номи миёнаи Load, зеро он ба ҳисоби миёна зиёда аз 5, 10 ва 15 дақиқа аст), коркарди маълумот ва тақсимоти хотира.
  7. Пайгирии скрипт, ки санҷишро иҷро мекунад. Дар сурати вайрон шудани кор - қатъи ногаҳонии кор ё давраи беохири интизорӣ - дар ин ҷо шумо метавонед сабаби ин рафторро бинед.

Санҷиш дар ду марҳила гузаронида мешавад. Аввалан, скрипт аз ҳама намуди санҷишҳо мегузарад ва ба таври тасодуфӣ мошини виртуалиро интихоб мекунад, ки ба он ин санҷиш татбиқ карда мешавад. Сипас як давраи беохири санҷиш гузаронида мешавад, мошинҳои виртуалӣ ва хато ҳар дафъа ба таври тасодуфӣ интихоб карда мешаванд. Қатъи ногаҳонии скрипти санҷишӣ (панели поён) ё ҳалқаи беохири интизории чизе (вақти иҷроиш барои як амалиёт > 5 дақиқа, инро дар пайр дидан мумкин аст) нишон медиҳад, ки баъзе санҷишҳо дар ин кластер ноком шудаанд.

Ҳар як санҷиш аз амалҳои зерин иборат аст:

  1. Функсияеро оғоз кунед, ки хатогиро тақлид мекунад.
  2. Тайёр? — мунтазири барқароршавии кластер (вақте ки ҳама хидматҳо пешниҳод мешаванд).
  3. Вақти анҷоми барқарорсозии кластерро нишон медиҳад (вокуниши).
  4. Бештар — кластер «таъмир» карда мешавад. Пас аз он, он бояд ба ҳолати пурраи корӣ баргардад ва ба корношоямии навбатӣ омода бошад.

Дар ин ҷо як рӯйхати санҷишҳо бо тавсифи корҳое, ки онҳо мекунанд:

  • ForkBomb: Бо истифода аз бомби чанголи "Хотира тамом" -ро эҷод мекунад.
  • OutOfSpace: Диски сахт пур аст. Аммо санҷиш хеле рамзӣ аст; бо сарбории ночизе, ки ҳангоми санҷиш эҷод мешавад, PostgreSQL одатан ҳангоми пур шудани диски сахт ноком намешавад.
  • Postgres-KILL: PostgreSQL-ро бо фармон мекушад killall -KILL postgres.
  • Postgres-STOP: фармони PostgreSQL-ро овезон мекунад killall -STOP postgres.
  • Хомӯш: мошини маҷозӣ бо фармонро "беқувват" мекунад VBoxManage controlvm "виртуалка" poweroff.
  • Reset: мошини виртуалиро бо фармон аз ҳад зиёд бор мекунад VBoxManage controlvm "виртуалка" reset.
  • SBD-STOP: девони СБД-ро бо фармон боздошта killall -STOP sbd.
  • Пӯшида шудан: фармонро ба мошини виртуалӣ тавассути SSH мефиристад systemctl poweroff, система ба таври зебо хомӯш мешавад.
  • Бекор кардан: ҷудокунии шабака, фармон VBoxManage controlvm "виртуалка" setlinkstate1 off.

Анҷоми санҷиш ё бо истифода аз фармони стандартии tmux "kill-window" Ctrl-b &, ё фармони "detach-client" Ctrl-b г: дар ин лаҳза санҷиш ба охир мерасад, tmux баста мешавад, мошинҳои виртуалӣ хомӯш карда мешаванд.

Проблемаҳое, ки ҳангоми санҷиш муайян карда шуданд

  • Дар ин лахза саги посбон sbd оид ба боздоштани демонҳои мушоҳидашуда кор мекунад, аммо ях накардани онҳо. Ва, дар натиҷа, камбудиҳое, ки танҳо ба яхкунӣ оварда мерасонанд Коросинконӣ и стимулятори дил, вале овезон нест сбд... Барои чек Коросинконӣ аллакай доранд PR # 83 (дар GitHub дар сбд), ба ришта кабул карда шуд усто. Онҳо ваъда доданд (дар PR # 83) ки барои стимулятор чизе монанд хоҳад буд, ман умедворам, ки аз ҷониби Red Hat 8 хоҳад кард. Аммо ин гуна "норасоиҳо" тахминӣ мебошанд ва онҳоро ба осонӣ ба таври сунъӣ истифода бурдан мумкин аст, масалан, killall -STOP corosync, аммо дар ҳаёти воқеӣ ҳеҷ гоҳ вонахӯред.

  • У стимулятори дил дар версияи барои CentOS 7 нодуруст муқаррар карда шудааст sync_timeout у дастгоҳи кворум, дар натиҷа агар як гиреҳ ноком шавад, бо эҳтимоли зиёд гиреҳи дуюм низ аз нав оғоз мешавад, ки усто бояд ба он чо меомад. Бо васеъшавӣ табобат карда мешавад sync_timeout у дастгоҳи кворум ҳангоми ҷойгиркунӣ (дар скрипт setup/setup1). Ин ислоҳот аз ҷониби таҳиягарон пазируфта нашуд стимулятори дил, ба ҷои онҳо ваъда доданд, ки инфрасохторро ба тарзе аз нав тарҳрезӣ мекунанд (дар баъзе ояндаи номаълум), ки ин мӯҳлат ба таври худкор ҳисоб карда шавад.

  • Агар конфигуратсияи базаи маълумотҳо инро муайян кунад LC_MESSAGES (паёмҳои матнӣ) Юникод метавонад истифода шавад, масалан. ru_RU.UTF-8, баъд ҳангоми оғозёбӣ постгресс дар муҳите, ки маҳалли ҷойгиршавӣ UTF-8 нест, бигӯед дар муҳити холӣ (дар ин ҷо стимулятори дил+pgsqlms(паф) медавад постгресс), пас журнал ба ҷои ҳарфҳои UTF-8 аломатҳои саволро дар бар мегирад. Таҳиягарони PostgreSQL дар бораи чӣ кор кардан дар ин ҳолат ба мувофиқа нарасидаанд. Он арзиш дорад, шумо бояд насб кунед LC_MESSAGES=en_US.UTF-8 ҳангоми конфигуратсия (эҷоди) як мисоли пойгоҳи додаҳо.

  • Агар wal_receiver_timeout муқаррар карда шуда бошад (бо нобаёнӣ он 60 сония аст), пас ҳангоми санҷиши PostgreSQL-STOP дар мастер дар кластерҳои tuchanka3 ва tuchanka4 такрорӣ ба устоди нав пайваст намешавад. Репликатсия дар он ҷо синхронӣ аст, бинобар ин на танҳо ғулом, балки устои нав низ қатъ мешавад. Ҳангоми танзими PostgreSQL бо гузоштани wal_receiver_timeout=0 кор мекунад.

  • Баъзан ман дар санҷиши ForkBomb (сершавии хотира) яхкунии такрориро дар PostgreSQL мушоҳида мекардам. Пас аз ForkBomb, баъзан ғуломон метавонанд ба устоди нав пайваст нашаванд. Ман бо ин танҳо дар кластерҳои tuchanka3 ва tuchanka4 дучор омадаам, ки устод аз сабаби такрори синхронӣ ях бастааст. Мушкилот пас аз муддати тӯлонӣ (тақрибан ду соат) худ аз худ рафт. Барои ислоҳи ин таҳқиқот бештар лозим аст. Аломатҳо ба хатогиҳои қаблӣ монанданд, ки бо сабабҳои дигар ба вуҷуд омадаанд, аммо бо ҳамон оқибатҳо.

Акс аз Кроган гирифта шудааст Санъати девиант бо иҷозати муаллиф:

Моделсозии кластерҳои ноком дар асоси PostgreSQL ва Pacemaker

Манбаъ: will.com

Илова Эзоҳ