ProHoster > ΠΠ»ΠΎΠ³ > Maamulka > Dulmar kooban oo ku saabsan Bayaanada PostgreSQL ee Kubernetes, Dookhyadayada iyo Khibradayada
Dulmar kooban oo ku saabsan Bayaanada PostgreSQL ee Kubernetes, Dookhyadayada iyo Khibradayada
Waxaa sii kordhaya, macaamiishu waxay helayaan codsiyada soo socda: "Waxaan rabnaa sida Amazon RDS, laakiin ka jaban"; "Waxaan rabnaa sida RDS, laakiin meel kasta, kaabayaal kasta." Si loo hirgeliyo xalkan la maareeyay ee Kubernetes, waxaanu eegnay xaaladda hadda jirta ee hawl-wadeennada ugu caansan ee PostgreSQL (Stolon, hawlwadeennada Crunchy Data iyo Zalando) waxaanan samaynay doorashadayada.
Maqaalkani waa waayo-aragnimada aynu ka kasbannay aragti ahaan (dib u eegida xalalka) iyo dhinaca la taaban karo (maxaa la doortay iyo waxa ka soo baxay). Laakiin marka hore, aan go'aamino waxa shuruudaha guud ay yihiin beddelka suurtagalka ah ee RDS...
Waa maxay RDS
Marka ay dadku ka hadlaan RDS, waayo-aragnimadayada, waxay ula jeedaan adeeg DBMS la maareeyay oo:
fududahay in la habeeyo;
wuxuu awood u leeyahay inuu la shaqeeyo sawir-qaadista oo uu ka soo kabsado (gaar ahaan taageerada PITR);
wuxuu kuu ogolaanayaa inaad abuurto sayid-addoon topologies;
Guud ahaan, hababka loo maro hirgelinta hawsha gacanta lagu hayo aad bay u kala duwanaan karaan, laakiin dariiqa maangal ah ee shuruudaysani inooma dhowa. (Asxaabtii ka socotay 2GIS waxay gaadheen natiijo la mid ah natiijada isku daygiisa samee "qalab si degdeg ah loo geeyo koox-fashilmayn ku salaysan Postgres.")
Hawl-wadeenadu waa hab caadi ah oo lagu xaliyo mashaakil la mid ah nidaamka deegaanka Kubernetes. Agaasimaha farsamada ee "Flanta" ayaa mar hore si faahfaahsan uga hadlay iyaga oo ku saabsan xog-ururinta laga bilaabay gudaha Kubernetes. distolgudaha mid ka mid ah warbixintiisa.
NB: Si aad si dhakhso ah u abuurto hawl-wadeenno fudud, waxaan kugula talineynaa inaad fiiro gaar ah u yeelato utility Source Source qolof-shaqaale. Isticmaalka, waxaad samayn kartaa tan adigoon aqoon u lahayn Go, laakiin siyaabo aad u yaqaan maamulayaasha nidaamka: Bash, Python, iwm.
Marka lagu daro astaamaha muhiimka ah ee kor lagu soo sheegay, annagu - sida Kubernetes injineerada hawlaha kaabayaasha - sidoo kale waxaan ka filnay kuwan soo socda hawlwadeenada:
ku rakibida xidhidhnimada noodhka ama dooraha noodhka;
rakibidda dulqaadka;
helitaanka awoodaha hagaajinta;
tignoolajiyada la fahmi karo iyo xitaa amarrada.
Adigoon tafaasiil ka bixin mid kasta oo ka mid ah qodobbada (weydii faallooyinka haddii aad weli wax su'aalo ah ka qabto iyaga ka dib markaad akhrido maqaalka oo dhan), waxaan si guud u xusi doonaa in cabbirradan loo baahan yahay si loo si sax ah u qeexo takhasuska qanjidhada kooxda si loo ogaado u dalbo codsiyo gaar ah. Sidan waxaan ku gaari karnaa dheelitirka ugu fiican marka la eego waxqabadka iyo qiimaha.
Hadda aan u gudubno hawl-wadeennada PostgreSQL laftooda.
1. Stolon
Stolon Shirkadda Sorint.lab ee laga leeyahay dalka Talyaaniga warbixin hore loo sheegay waxaa loo tixgeliyey nooc ka mid ah halbeegga ka mid ah hawl-wadeennada DBMS. Kani waa mashruuc da' weyn: siideynteedii ugu horeysay ee dadweynaha waxay dhacday Noofambar 2015(!), Kaydka GitHub wuxuu ku faanaa ku dhawaad ββββxiddigle 3000 iyo 40+ wax ku darsaday.
Runtii, Stolon waa tusaale aad u fiican ee qaab dhismeedka fikirka leh:
Qalabka hawlwadeenkan waxaa si faahfaahsan looga heli karaa warbixinta ama dukumentiyada mashruuca. Guud ahaan, waxaa ku filan in la sheego in ay samayn karto wax kasta oo lagu sharraxay: failureover, proxies for transparent client access, backups ... Waxaa intaa dheer, proxies waxay bixiyaan helitaanka hal adeeg oo dhamaadka ah - si ka duwan labada xal ee kale ee hoos looga hadlay (mid kastaa wuxuu leeyahay laba adeeg saldhiga gelitaanka).
Si kastaba ha ahaatee, Stolon ma jiro Khayraad gaar ah, taas oo ah sababta aan loo geyn karin si sahlan oo degdeg ah - "sida keega kulul" - si loo abuuro xaaladaha DBMS ee Kubernetes. Maareynta waxaa lagu fuliyaa utility stolonctl, keenista waxaa lagu sameeyaa jaantuska Helm, iyo kuwa gaarka ah waxaa lagu qeexay oo lagu qeexay ConfigMap.
Dhinaca kale, waxa soo baxday in hawlwadeenku aanu ahayn hawlwadeen (ka dib oo dhan, ma isticmaalo CRD). Laakiin dhanka kale, waa nidaam dabacsan oo kuu oggolaanaya inaad u habayn karto ilaha K8s sida aad u aragto inay ku habboon tahay.
Si aan u soo koobno, anaga shaqsi ahaan uma muuqan mid ku fiicneyd in la sameeyo shax gaar ah database kasta. Sidaa darteed, waxaan bilownay inaan raadino waxyaabo kale.
2. Hawlwadeenka Xogta Crunchy PostgreSQL
Hawlwadeen ka socda Xogta Crunchy, bilawgii da'da yar ee Maraykanka, wuxuu u muuqday beddel macquul ah. Taariikhdeeda dadweynuhu waxay ka bilaabantaa siidaynta ugu horraysa ee Maarso 2017, tan iyo markaas kaydka GitHub wuxuu helay wax ka yar 1300 xiddigood iyo 50+ wax ku darsaday. Siideynta ugu dambeysay ee Sebtember waxaa lagu tijaabiyay inuu la shaqeeyo Kubernetes 1.15-1.18, OpenShift 3.11+ iyo 4.4+, GKE iyo VMware Enterprise PKS 1.3+.
Naqshadeynta Crunchy Data PostgreSQL Operator sidoo kale waxay buuxisaa shuruudaha la sheegay:
Maareynta waxay ku dhacdaa utility pgo, si kastaba ha ahaatee, waxay iyaduna soo saartaa Khayraadka Gaarka ah ee Kubernetes. Sidaa darteed, hawlwadeenku wuxuu naga farxiyay isticmaalayaasha suurtagalka ah:
waxaa jira xakameyn iyada oo loo marayo CRD;
maaraynta isticmaale habboon (sidoo kale CRD);
dhexgalka qaybaha kale Crunchy Data Container Suite - sawirro gaar ah oo sawirro weel ah oo loogu talagalay PostgreSQL iyo yutiilitiyada la shaqayntiisa (ay ku jiraan pgBackRest, pgAudit, kordhinta wax ku biirinta, iwm.).
Si kastaba ha ahaatee, isku dayga lagu bilaabay isticmaalka hawlwadeenka xogta Crunchy waxay muujisay dhibaatooyin dhowr ah:
Ma jirin wax suurtagal ah oo loo dulqaadan karo - kaliya nodeSelector ayaa la bixiyay.
Caleemaha la abuuray waxay qayb ka ahaayeen Hawlgelinta, inkastoo xaqiiqda ah inaan geynay codsi qeexan. Si ka duwan StatefulSets, Gelintu ma abuuri karto saxanadaha.
Dhibaatada ugu dambeysa waxay keenaysaa waqtiyo qosol leh: jawiga tijaabada waxaan ku guuleysanay inaan ku wadno 3 nuqul oo hal disk ah kaydinta deegaanka, taasoo keentay in hawlwadeenku uu sheego in 3 nuqul ay shaqaynayeen (inkasta oo aanay ahayn).
Muuqaal kale oo ka mid ah hawlwadeenkan ayaa ah is-dhexgalka diyaarsan oo leh nidaamyo gargaar oo kala duwan. Tusaale ahaan, way fududahay in la rakibo pgAdmin iyo pgBounce, iyo gudaha dukumentiyo Grafana iyo Prometheus oo horay loo habeeyey ayaa la tixgeliyaa. Dhawaanahan sii daayo 4.5.0-beta1 La qabsiga mashruuca oo la hagaajiyay ayaa si gaar ah loo xusay pgMonitor, taas oo ay ugu mahadcelinayso hawlwadeenku si cad u muujinayo cabbirada PgSQL ee ka baxsan sanduuqa.
Si kastaba ha ahaatee, doorashada la yaabka leh ee Kubernetes-ku-abuuray kheyraadka ayaa noo horseeday baahida loo qabo in la helo xal kale.
3. Hawlwadeenka Zalando Postgres
Waxaan ognahay alaabta Zalando muddo dheer: waxaan khibrad u leenahay isticmaalka Zalenium iyo, dabcan, waxaan isku daynay Batrooni waa xalkooda caanka ah ee HA ee PostgreSQL. Ku saabsan habka shirkadu u abuurto Hawlwadeenka Postgres Mid ka mid ah qorayaasha, Alexey Klyukin, ayaa ku yiri hawada Talaado-Talaado #5, waana ka helnay.
Tani waa xalka ugu da'da yar ee looga hadlay maqaalka: sii deynta ugu horeysay waxay dhacday Agoosto 2018. Si kastaba ha noqotee, inkasta oo tirada yar ee siidaynta rasmiga ah, mashruucu wuxuu soo maray waddo dheer, mar horeba wuxuu ka sarreeyaa caannimada xalka Crunchy Data oo leh 1300+ xiddigood oo ku yaal GitHub iyo tirada ugu badan ee wax ku biirinta (70+).
Sidan waa sida naqshadeeyaha hawlwadeenka ee Zalando loo soo bandhigay:
Hawl-wadeenka si buuxda ayaa loo maareeyaa iyada oo loo marayo Khayraadka Gaarka ah, si toos ah ayuu StatefulSet ka sameeyaa weelasha, kaas oo markaa lagu beddeli karo iyada oo lagu darayo baabuur-geesooyin kala duwan. Waxaas oo dhami waa faa'iido la taaban karo marka la barbar dhigo hawlwadeenka xogta Crunchy.
Tan iyo markii aan ka dooranay xalka Zalando oo ka mid ah fursadaha 3 ee la tixgelinayo, sharraxaad dheeraad ah oo ku saabsan awoodeeda ayaa lagu soo bandhigi doonaa hoos, isla markiiba oo ay weheliso dhaqanka codsiga.
Ku tababaro hawlwadeenka Postgres ee Zalando
Hawlgelinta hawl wadeenadu aad bay u fudud tahay: kaliya ka soo deji sii-deynta hadda GitHub oo ka dalbo faylasha YAML tusaha ayaa muujinaya. Haddii kale, waxaad sidoo kale isticmaali kartaa operatorhub.
Ka dib markii la rakibo, waa in aad ka welwelsan tahay dejinta kaydinta logyada iyo kaydinta. Tan waxaa lagu sameeyaa ConfigMap postgres-operator meesha magaca meesha aad ku rakibtay hawlwadeenka. Marka bakhaarrada la habeeyo, waxaad geyn kartaa kooxdaada ugu horreysa ee PostgreSQL.
Tusaale ahaan, geynteena caadiga ah waxay u egtahay sidan:
Muujintani waxa ay gaynaysaa koox ka kooban 3 xaaladood oo leh gaadhi dhinac ah oo qaabaysan postgres_dhoofin, kaas oo aan ka soo qaadanno cabbirada codsiga. Sida aad arki karto, wax walba waa mid aad u fudud, iyo haddii aad rabto, waxaad samayn kartaa tiro aan xad lahayn oo macno ahaan.
Waxaa mudan in fiiro gaar ah loo yeesho maamulka webka - postgres-operator-ui. Waxay la socotaa hawlwadeenka waxayna kuu ogolaanaysaa inaad abuurto oo aad tirtirto rucubyada, iyo sidoo kale inaad la shaqeyso kaydinta uu sameeyay hawlwadeenku.
Liiska kooxaha PostgreSQL
Maamulka kaabta
Muuqaal kale oo xiiso leh ayaa ah taageerada Kooxaha API. Habkani si toos ah ayuu u abuuraa doorarka PostgreSQL, oo ku salaysan liiska ka soo baxay ee isticmaalayaasha. API wuxuu markaa kuu ogolaanayaa inaad soo celiso liiska isticmaalayaasha kuwaas oo doorarka si toos ah loo abuuray.
Dhibaatooyinka iyo xalkooda
Si kastaba ha ahaatee, isticmaalka hawlwadeenku wuxuu si dhakhso ah u muujiyay dhowr cilladood oo muhiim ah:
la'aanta taageerada nodeSelector;
awood la'aanta in la joojiyo kaydinta;
Markaad isticmaalayso shaqada abuurista xogta, mudnaanta hore ma muuqato;
Mararka qaarkood dukumeenti waa la waayayaa ama waa dhacay.
Nasiib wanaag, qaar badan oo iyaga ka mid ah waa la xallin karaa. Aan ka bilowno dhamaadka - dhibaatooyinka leh dukumeenti.
Waxay u badan tahay, inaad la kulmi doonto xaqiiqda ah inaysan mar walba caddayn sida loo diiwaan geliyo kaydka iyo sida loogu xidho baaldiga kaydinta ee Operator UI. Dukumeentigu wuxuu ka hadlayaa tan marka la dhaafo, laakiin sharaxaadda dhabta ah ayaa ku jirta PR:
u baahan in la sameeyo sir;
u gudbi hawlwadeenka sidii halbeeg ahaan pod_environment_secret_name gudaha CRD oo leh goobaha hawlwadeenka ama ConfigMap (waxay kuxirantahay sida aad u go'aansato inaad ku rakibto hawlwadeenka).
Si kastaba ha ahaatee, sida ay soo baxday, tani hadda waa wax aan macquul ahayn. Taasi waa sababta aan u ururinay noocaaga hawlwadeenka oo leh qaar ka mid ah horumarinta dhinac saddexaad oo dheeraad ah. Wixii macluumaad dheeraad ah oo ku saabsan, eeg hoos.
Haddii aad u gudbiso halbeegyada kaydinta hawlwadeenka, kuwaas oo kala ah - wal_s3_bucket iyo furayaasha gelitaanka AWS S3, ka dibna waa wax walba ayaa kaydin doonaMa aha oo kaliya saldhigyada wax soo saarka, laakiin sidoo kale diyaarinta. Tani naguma ay habboonayn.
Sharaxaadda xuduudaha Spilo, oo ah duubka aasaasiga ah ee Docker ee PgSQL marka la isticmaalayo hawlwadeenka, waxay soo baxday: waxaad gudbin kartaa halbeeg WAL_S3_BUCKET maran, oo meesha ka saaraya kaydka Waxaa intaa dheer, farxad weyn, ayaan helay diyaarsan PR, kaas oo aanu isla markiiba ku aqbalnay fargeeto. Hadda waxaad u baahan tahay oo kaliya inaad ku darto enableWALArchiving: false ilaa agabka kutlada PostgreSQL
Haa, waxaa jirtay fursad ah in si ka duwan loo sameeyo iyada oo la adeegsanayo 2 hawlwadeen: mid loogu talagalay diyaarinta (aan lahayn kayd), iyo tan labaad ee wax soo saarka. Laakiin waxaan awoodnay inaan mid ku samayno.
Hagaag, waxaan baranay sida loo wareejiyo gelitaanka xogta S3 iyo kaydintu waxay bilaabeen inay galaan kaydinta. Sida loo sameeyo bogag kayd ah oo ku shaqeeya Operator UI?
Waxaad u baahan doontaa inaad ku darto 3 doorsoomayaasha UI Operator:
SPILO_S3_BACKUP_BUCKET
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
Taas ka dib, maaraynta kaydinta ayaa diyaar noqon doonta, taas oo kiiskeena ay fududeyn doonto shaqada iyada oo la hagaajinayo, taas oo noo ogolaanaysa inaan keeno xaleef wax soo saarka halkaas oo aan lahayn qoraallo dheeraad ah.
Faa'iidada kale waxay ahayd la shaqaynta Kooxaha API iyo fursado ku filan abuurista xog-ururin iyo doorar iyadoo la isticmaalayo qalabka hawlwadeenka. Si kastaba ha ahaatee, la abuuray doorarka ma lahayn wax xuquuq ah marka loo eego. Sidaa darteed, isticmaale leh xuquuqda akhrinta ma akhrin karo jadwal cusub.
Waa maxay sababtu? Inkastoo xaqiiqda ah in code waa lagama maarmaan GRANT, mar walba lama isticmaalo. Waxaa jira 2 hab: syncPreparedDatabases ΠΈ syncDatabases. The syncPreparedDatabases - inkastoo xaqiiqda ah in qaybta preparedDatabaseswaa shuruud baa jirta defaultRoles ΠΈ defaultUsers si loo abuuro door, xuquuqaha caadiga ah lama dabaqo. Waxaan ku guda jirnaa diyaarinta balastar si xuquuqahan si toos ah loogu dabaqo.
Iyo qodobka ugu dambeeya ee hagaajinta innaga khuseeya - balastar, Kaas oo ku daraya Xidhiidhka Node ee la abuuray StatefulSet. Macaamiishayadu waxay inta badan door bidaan inay dhimaan kharashaadka iyagoo isticmaalaya tusaalooyin boos ah, waxayna cadahay inaysan u qalmin martigelinta adeegyada xogta. Arrintaan waxaa lagu xallin karaa dulqaad, laakiin joogitaanka Node Affinity wuxuu siinayaa kalsooni weyn.
Maxaa dhacay?
Iyada oo ku saleysan natiijooyinka xallinta dhibaatooyinka kor ku xusan, waxaan fargeeto u galnay Operator Postgres oo ka yimid Zalando kaydkaaga, halkaasoo lagu soo ururiyo balastar faa'iido leh. Iyo ku habboonaanta, waxaan sidoo kale soo aruurinnay Sawirka Docker.
Way fiicnaan doontaa haddii bulshadu taageerto PR-yadan si ay ula socdaan nooca xiga ee hawlwadeenka (1.6).
Gunno! Sheekada guusha wax soo saarka socdaalka
Haddii aad isticmaasho Patroni, wax-soo-saarka tooska ah ayaa loo haajirin karaa hawl-wadeenka iyada oo wakhtiga yar ee hoos u dhaco.
Spilo kuu ogolaanaya in aad si ay u abuuraan kooxaha heegan via S3 kaydinta la Wal-E, marka PgSQL binary log marka hore lagu kaydiyo S3 ka dibna soo saaray by nuqul ka. Laakiin maxaa la sameeyaa haddii aad leedahay ma uu Wal-E ku isticmaalo kaabayaasha hore? Xalka dhibaatadan waa horeba ayaa la soo jeediyay xuddunta.
PostgreSQL ku celcelin macquul ah ayaa u yimaada samatabbixinta. Si kastaba ha ahaatee, ma aadi doono faahfaahin ku saabsan sida loo abuuro daabacaadyo iyo is-diiwaangelin, sababtoo ah ... qorshahayagu wuxuu ahaa fiasco.
Xaqiiqdu waxay tahay in xog-ururintu ay lahayd dhowr miis oo la raray oo malaayiin saf ah, kuwaas oo, sidoo kale, si joogto ah loo buuxiyey oo la tirtiray. Isdiiwaangelinta fudud Ρ copy_dataMarka nuqulka cusub uu koobiyo dhammaan waxa ku jira sayidkiisa, si fudud ulama socon karto sayidku. Koobiyaynta nuxurka waxay shaqeysay hal usbuuc, laakiin waligeed lama qabsan sayidkii. Ugu dambeyntii, waxay iga caawisay inaan xalliyo dhibaatada maqaal asxaabta ka socota Avito: waxaad ku wareejin kartaa xogta adigoo isticmaalaya pg_dump. Waxaan qeexi doonaa noocayada (wax yar la beddelay) ee algoorithm.
Fikradda ayaa ah in aad samayn karto rukhsad naafada ah oo ku xidhan boos celin gaar ah, ka dibna aad saxdo lambarka wax kala iibsiga. Waxaa jiray nuqullo loo heli karo shaqada wax soo saarka. Tani waa muhiim sababtoo ah nuqulku wuxuu gacan ka geysan doonaa abuurista qashin-qubka joogtada ah oo sii wadi doona helitaanka isbeddellada sayidyada.
Amarada soo socda ee qeexaya habka socdaalka ayaa isticmaali doona tilmaamaha soo socda ee martida loo yahay:
Master - server isha;
nuqul1 - nuqulka qulqulka ee wax soo saarkii hore;
nuqul2 - nuqul cusub oo macquul ah.
Qorshaha socdaalka
1. Samee rukunka sayidkaaga dhammaan miisaska qorshaha public saldhig dbname:
psql -h master -d dbname -c "CREATE PUBLICATION dbname FOR ALL TABLES;"
12. Marka la bilaabo ku celcelintu ka dib oo xogta macluumaadka la is waafajiyo, waad beddeli kartaa.
13. Ka dib markaad joojiso ku celcelinta, waxaad u baahan tahay inaad saxdo taxanaha. Tani si fiican ayaa loo sharraxay maqaalka wiki.postgresql.org.
Waad ku mahadsan tahay qorshahan, wareejintu waxay ku dhacday dib u dhacyo yar.
gunaanad
Hawl-wadeennada Kubernetes waxay kuu oggolaanayaan inaad fududayso ficillada kala duwan adoo hoos u dhigaya abuurista ilaha K8s. Si kastaba ha noqotee, ka dib markii ay ku guuleysteen automation cajiib ah iyaga oo kaashanaya, waxaa habboon in la xasuusto in ay sidoo kale keeni karto tiro ka mid ah nuances lama filaan ah, markaa dooro hawlwadeennadaada si caqli leh.
Ka dib markii aan tixgelinnay saddexda hawl wadeen ee Kubernetes ee ugu caansan PostgreSQL, waxaan ka doorannay mashruuca Zalando. Waxaana ku qasbanaaday inaan ka gudubno dhibaatooyin gaar ah, laakiin natiijadu waxay ahayd mid aad loogu farxo, marka waxaan qorsheyneynaa inaan khibradan ku ballaarino qaar ka mid ah rakibaadaha PgSQL. Haddii aad khibrad u leedahay isticmaalka xalalka la midka ah, waxaan ku farxi doonaa inaan aragno faahfaahinta faallooyinka!