ProHoster > Blog > Идораи > Postgres Сешанбе № 5: "PostgreSQL ва Kubernetes. CI/CD. Автоматикунонии санҷиш"
Postgres Сешанбе № 5: "PostgreSQL ва Kubernetes. CI/CD. Автоматикунонии санҷиш"
Дар охири соли гузашта боз як пахши мустақими ҷомеаи PostgreSQL-и Русия баргузор шуд #RuPostgres, ки дар ҷараёни он ҳаммуассиси он Николай Самохвалов бо директори техникии Flant Дмитрий Столяров дар бораи ин DBMS дар контексти Кубернетес сӯҳбат кард.
Мо стенограммаи кисми асосии ин мубохисаро чоп мекунем ва дар Канали YouTube ҷомеа Видеои пурра нашр шудааст:
DS: Он қадар муҳим нест. Озодӣ барои сегменти на он қадар калони бозор муҳим аст. Чизи дигар муҳим аст... Шояд шумо гузоришро дар хотир доред "Пойгоҳи додаҳо ва Kubernetes"?"
Аммо дар баъзе лаҳзаҳо мо фаҳмидем, ки ин зарур нест: мо shared_buffers-ро ба 2 ГБ муқаррар кардем. PostgreSQL дорад Андозаи_кэш_самар, ва дар асл он ягонаест, ки таъсир мерасонад нақшаҳо. Мо онро ба 0,5 ТБ муқаррар кардем. Ва ҳатто муҳим нест, ки онҳо воқеан вуҷуд надоранд: ӯ нақшаҳоро тавре месозад, ки гӯё онҳо вуҷуд доранд.
Муносибат, вақте ки мо ягон намуди муҳоҷиратро месанҷем, мо метавонем ҳама нақшаҳоро ҷамъ кунем - мо мебинем, ки он дар истеҳсолот чӣ гуна мешавад. Сонияҳо дар он ҷо гуногун хоҳанд буд (сусттар), аммо маълумоте, ки мо воқеан мехонем ва худи нақшаҳо (дар он ҷо кадомҳо ҶОИН ҳастанд ва ғайра) маҳз ҳамон тавре ки дар истеҳсолот пайдо мешаванд. Ва шумо метавонед бисёр ин гуна чекҳоро дар як мошин мувозӣ иҷро кунед.
DS: Оё шумо фикр намекунед, ки дар ин ҷо якчанд мушкилот вуҷуд дорад? Аввалин ҳалли он аст, ки танҳо дар PostgreSQL кор мекунад. Ин равиш хеле хусусӣ аст, он умумӣ нест. Дуюм ин аст, ки Кубернетес (ва ҳама чизе, ки технологияҳои абрӣ ҳоло ба он ҷо мераванд) гиреҳҳои зиёдеро дар бар мегиранд ва ин гиреҳҳо муваққатӣ мебошанд. Ва дар ҳолати шумо ин гиреҳи давлатӣ ва доимист. Ин чизҳо маро ихтилоф мекунанд.
NS: Аввалан, ман розӣ ҳастам, ки ин як ҳикояи комилан Postgres аст. Ман фикр мекунам, ки агар мо ягон намуди IO-и мустақим ва ҳавзи буферӣ барои қариб ҳама хотира дошта бошем, ин равиш кор намекунад - нақшаҳо гуногун хоҳанд буд. Аммо ҳоло мо танҳо бо Postgres кор мекунем, мо дар бораи дигарон фикр намекунем.
Дар бораи Кубернетес. Шумо худатон ба мо дар ҳама ҷо мегӯед, ки мо базаи доимӣ дорем. Агар инстансия ноком шавад, чизи асосӣ захира кардани диск аст. Дар ин ҷо мо инчунин тамоми платформаро дар Кубернетес дорем ва ҷузъи Postgres алоҳида аст (гарчанде ки он рӯзе дар он ҷо хоҳад буд). Аз ин рӯ, ҳама чиз чунин аст: инстансия афтод, аммо мо PV-и онро захира кардем ва танҳо онро ба дигар (нав) пайваст кардем, гӯё ҳеҷ чиз рӯй надода бошад.
DS: Аз нуқтаи назари ман, мо дар Кубернетес pods эҷод мекунем. K8s - эластикӣ: гиреҳҳо мувофиқи зарурат фармоиш дода мешаванд. Вазифа аз он иборат аст, ки танҳо як подкаст эҷод кунед ва бигӯед, ки ба он миқдори X захираҳо лозим аст ва он гоҳ K8s онро мустақилона муайян мекунад. Аммо дастгирии нигоҳдорӣ дар Kubernetes то ҳол ноустувор аст: 1.16дар дохили 1.17 (ин нашр нашр шуд аз ҳафта пеш) ин хусусиятҳо танҳо бета мешаванд.
Шаш мох то як сол мегузарад — он каму беш устувор мешавад ва ё акаллан хамин тавр эълон карда мешавад. Он гоҳ имкони аксбардорӣ ва тағир додани андоза мушкилоти шуморо комилан ҳал мекунад. Зеро шумо база доред. Бале, он метавонад хеле зуд набошад, аммо суръат аз он чизе, ки "дар зери сарпӯш" аст, вобаста аст, зеро баъзе татбиқҳо метавонанд дар сатҳи зерсистемаи диск нусхабардорӣ ва нусхабардорӣ кунанд.
NS: Аммо барои эҷод кардани як мисол, ба он ҷо овардани Docker ва ғайра ба онҳо сонияҳо, даҳҳо сония лозим аст.
DS: Чаро як мисоли пурраро бардоштан лозим аст? Мо як мисол дорем, ки 32 ядро дорад, 16... ва он метавонад ба он мувофиқат кунад - масалан, чаҳор. Вақте ки мо ба панҷум фармоиш медиҳем, инстансия аллакай бардошта мешавад ва он гоҳ он нест карда мешавад.
NS: Бале, ҷолиб, Кубернетес як ҳикояи дигар мешавад. Пойгоҳи мо дар K8s нест ва мо як мисол дорем. Аммо клон кардани базаи бисёртерабайтӣ на бештар аз ду сонияро мегирад.
DS: Ин бузург аст. Аммо нуқтаи ибтидоии ман ин аст, ки ин як ҳалли умумӣ нест. Бале, ин хуб аст, аммо он танҳо барои Postgres ва танҳо дар як гиреҳ мувофиқ аст.
NS: Он на танҳо барои Postgres мувофиқ аст: ин нақшаҳо, тавре ки ман тавсиф кардам, танҳо дар он кор хоҳанд кард. Аммо агар мо дар бораи нақшаҳо ташвиш надиҳем ва ба мо танҳо тамоми маълумот барои санҷиши функсионалӣ лозим аст, пас ин барои ҳама гуна DBMS мувофиқ аст.
DS: Чанд сол пеш мо дар аксҳои LVM як чизи шабеҳро анҷом дода будем. Ин як классикӣ аст. Ин усул хеле фаъолона истифода мешуд. Гиреҳҳои давлатӣ танҳо дардоваранд. Барои он ки шумо набояд онҳоро тарк кунед, шумо бояд ҳамеша онҳоро дар хотир доред ...
NS: Оё шумо дар ин ҷо ягон имконияти гибридиро мебинед? Биёед бигӯем, ки давлатдор як навъ подкаст аст, он барои якчанд одамон кор мекунад (бисёр озмоишгарон). Мо як ҷилд дорем, аммо ба шарофати системаи файлӣ, клонҳо маҳаллӣ мебошанд. Агар поддон афтад, аммо диск боқӣ монад, поддон баланд мешавад, маълумотро дар бораи ҳамаи клонҳо ҳисоб мекунад, ҳама чизро аз нав бардошта ва мегӯяд: "Инак клонҳои шумо дар ин портҳо кор мекунанд, бо онҳо кор карданро идома диҳед."
DS: Аз ҷиҳати техникӣ ин маънои онро дорад, ки дар дохили Кубернетес он як подделест, ки мо дар дохили он бисёр Postgres идора мекунем.
NS: Бале. Вай маҳдудият дорад: бигӯед, ки дар як вақт бо ӯ бештар аз 10 нафар кор мекунанд. Агар ба шумо 20 адад лозим бошад, мо як порчаи дуюмро ба кор меандозем. Мо онро пурра клон мекунем ва ҷилди дуюми пурраро гирифта, он ҳамон 10 клони "лоғар" хоҳад дошт. Оё шумо ин фурсатро намебинед?
Аз ин рӯ, ман мехостам тағир додани андозае дошта бошам, ки қисмати EBS-ро васеъ кунад ва сипас ба системаи файлӣ бигӯяд, ки фазои навро истифода барад. Ва мо ин корро кардем, аммо дар он вақт Кубернетес барои тағир додани андоза API надошт. Азбаски мо дар AWS кор мекардем, мо барои API-и он код навиштем.
Ҳеҷ кас шуморо аз ин кор барои платформаҳои дигар бозмедорад. Дар изҳорот ягон ишорае вуҷуд надорад, ки онро танҳо дар AWS иҷро кардан мумкин аст ва он дар ҳама чизи дигар кор намекунад. Умуман, ин як лоиҳаи кушодаасос аст: агар касе мехоҳад пайдоиши истифодаи API-и навро суръат бахшад, хуш омадед. Бихӯред GitHub, кашидани дархостҳо - дастаи Zalando мекӯшад, ки ба онҳо зуд ҷавоб диҳад ва операторро пешбарӣ кунад. То ҷое ки ман медонам, лоиҳа иштирок карданд дар Google Summer of Code ва баъзе дигар ташаббусҳои шабеҳ. Заландо дар он хеле фаъолона кор карда истодааст.
PS бонус!
Агар шумо ба мавзӯи PostgreSQL ва Kubernetes таваҷҷӯҳ дошта бошед, лутфан қайд кунед, ки сешанбеи навбатии Postgres ҳафтаи гузашта баргузор шуд, ки ман бо Николай сӯҳбат кардам. Александр Кукушкин аз Заландо. Видео аз он дастрас аст дар ин ҷо.