Ntau ntxiv, cov neeg siv khoom tau txais cov lus thov hauv qab no: "Peb xav tau nws zoo li Amazon RDS, tab sis pheej yig dua"; "Peb xav kom nws zoo li RDS, tab sis txhua qhov chaw, hauv txhua qhov chaw." Txhawm rau ua raws li kev tswj hwm kev daws teeb meem ntawm Kubernetes, peb tau saib lub xeev tam sim no ntawm cov neeg ua haujlwm nrov tshaj plaws rau PostgreSQL (Stolon, cov neeg ua haujlwm ntawm Crunchy Data thiab Zalando) thiab ua rau peb xaiv.
Kab lus no yog qhov kev paub uas peb tau txais ob qho tib si los ntawm qhov kev xav ntawm kev xav (kev tshuaj xyuas ntawm cov kev daws teeb meem) thiab los ntawm cov tswv yim sab (dab tsi tau xaiv thiab dab tsi los ntawm nws). Tab sis ua ntej, cia peb txiav txim siab seb qhov kev xav tau dav dav yog dab tsi rau kev hloov pauv rau RDS ...
NB: Txhawm rau tsim kom yooj yim cov tswv lag luam sai sai, peb pom zoo kom ua tib zoo saib peb cov khoom siv Open Source shell-operator. Siv nws, koj tuaj yeem ua qhov no yam tsis muaj kev paub txog Go, tab sis nyob rau hauv txoj kev paub ntau dua rau cov thawj tswj hwm: hauv Bash, Python, thiab lwm yam.
Muaj ntau tus neeg ua haujlwm K8s nrov rau PostgreSQL:
Stolon;
Crunchy Data PostgreSQL tus neeg teb xov tooj;
Zalando Postgres Operator.
Cia peb saib lawv ntau dua.
Kev xaiv tus neeg ua haujlwm
Ntxiv rau cov yam ntxwv tseem ceeb uas twb tau hais los saum toj no, peb - ββraws li Kubernetes cov kws tshaj lij kev tsim kho vaj tse - kuj xav tau cov hauv qab no los ntawm cov neeg ua haujlwm:
Nov yog li cas tus neeg teb xov tooj architecture ntawm Zalando tau nthuav tawm:
Tus neeg teb xov tooj tau tswj hwm tag nrho los ntawm Custom Resources, cia li tsim ib lub StatefulSet los ntawm cov thawv, uas tuaj yeem hloov kho los ntawm kev ntxiv ntau yam khoom siv rau lub pod. Tag nrho cov no yog qhov txiaj ntsig tseem ceeb hauv kev sib piv nrog tus neeg teb xov tooj los ntawm Crunchy Data.
Txij li thaum peb xaiv qhov kev daws teeb meem los ntawm Zalando ntawm 3 qhov kev xaiv nyob rau hauv kev txiav txim siab, ib qho kev piav qhia ntxiv ntawm nws lub peev xwm yuav raug nthuav tawm hauv qab no, tam sim ntawd nrog rau kev xyaum ua daim ntawv thov.
Xyaum nrog Postgres Operator los ntawm Zalando
Kev xa tawm tus neeg teb xov tooj yog qhov yooj yim heev: tsuas yog rub tawm qhov kev tso tawm tam sim no los ntawm GitHub thiab siv YAML cov ntaub ntawv los ntawm cov npe. tshwm sim. Xwb, koj tuaj yeem siv tau operatorhub.
Tom qab installation, koj yuav tsum txhawj xeeb txog kev teeb tsa cia rau cov cav thiab thaub qab. Qhov no ua tiav ntawm ConfigMap postgres-operator nyob rau hauv lub namespace qhov twg koj ntsia tus neeg teb xov tooj. Thaum lub repositories tau teeb tsa, koj tuaj yeem xa koj thawj PostgreSQL pawg.
Nws yog tsim nyog them sai sai rau web tswj vaj huam sib luag - postgres-operator-ui. Nws los nrog tus neeg teb xov tooj thiab tso cai rau koj los tsim thiab tshem tawm pawg, nrog rau kev ua haujlwm nrog cov thaub qab los ntawm tus neeg teb xov tooj.
Cov npe ntawm PostgreSQL pawg
Kev tswj hwm thaub qab
Lwm qhov nthuav tshwj xeeb yog kev txhawb nqa Pab pawg API. Qhov no mechanism yeej tsim Lub luag haujlwm hauv PostgreSQL, raws li qhov tshwm sim ntawm cov npe siv. API tom qab ntawd tso cai rau koj xa rov qab cov npe ntawm cov neeg siv uas lub luag haujlwm raug tsim.
Teeb meem thiab kev daws teeb meem
Txawm li cas los xij, kev siv tus neeg teb xov tooj sai sai tau qhia ntau qhov tsis txaus ntseeg:
tsis muaj nodeSelector txhawb;
tsis muaj peev xwm lov tes taw backups;
thaum siv lub database creation muaj nuj nqi, default cai tsis tshwm sim;
Nyob rau tib lub sijhawm, cov ntaub ntawv ploj lawm lossis tsis dhau hnub.
Hmoov zoo, ntau ntawm lawv tuaj yeem daws tau. Cia peb pib los ntawm qhov kawg - teeb meem nrog cov ntaub ntawv.
Feem ntau, koj yuav ntsib qhov tseeb tias nws tsis yog ib txwm paub meej tias yuav sau npe li cas rau thaub qab thiab yuav ua li cas txuas lub thoob thaub qab mus rau Operator UI. Cov ntaub ntawv hais txog qhov no hauv kev dhau mus, tab sis cov lus piav qhia tiag tiag nyob hauv PR:
yuav tsum ua kom tsis pub leej twg paub;
hla nws mus rau tus neeg teb xov tooj raws li qhov parameter pod_environment_secret_name hauv CRD nrog tus neeg teb xov tooj chaw lossis hauv ConfigMap (nyob ntawm seb koj txiav txim siab rau nruab tus neeg teb xov tooj).
Txawm li cas los xij, raws li nws hloov tawm, qhov no yog tam sim no ua tsis tau. Yog vim li cas peb thiaj sau koj version ntawm tus neeg teb xov tooj nrog qee qhov kev txhim kho thib peb ntxiv. Yog xav paub ntxiv txog nws, saib hauv qab no.
Yog tias koj dhau qhov kev txwv rau thaub qab rau tus neeg teb xov tooj, uas yog - wal_s3_bucket thiab nkag mus rau cov yuam sij hauv AWS S3, tom qab ntawd nws yuav backup txhua yam: tsis yog tsuas yog hauv paus hauv kev tsim khoom, tab sis kuj ua haujlwm. Qhov no tsis haum peb.
Hauv kev piav qhia ntawm qhov tsis muaj rau Spilo, uas yog qhov yooj yim Docker wrapper rau PgSQL thaum siv tus neeg teb xov tooj, nws tau muab tawm: koj tuaj yeem dhau qhov ntsuas. WAL_S3_BUCKET npliag, li no disabling backups. Ntxiv mus, kom muaj kev xyiv fab loj, kuv pom npaj PR, uas peb tau txais tam sim ntawd rau hauv peb rab rawg. Tam sim no koj tsuas yog xav tau ntxiv enableWALArchiving: false rau PostgreSQL pab pawg.
Yog, muaj lub sijhawm los ua qhov sib txawv los ntawm kev khiav 2 tus neeg ua haujlwm: ib qho rau kev ua haujlwm (tsis muaj thaub qab), thiab qhov thib ob rau kev tsim khoom. Tab sis peb muaj peev xwm ua tau nrog ib tug.
Ok, peb tau kawm yuav ua li cas hloov kev nkag mus rau hauv cov ntaub ntawv rau S3 thiab cov thaub qab pib nkag mus rau hauv cia. Yuav ua li cas ua kom cov nplooj ntawv thaub qab ua haujlwm hauv Operator UI?
Koj yuav tsum tau ntxiv 3 qhov sib txawv rau tus neeg teb xov tooj UI:
SPILO_S3_BACKUP_BUCKET
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
Tom qab no, kev tswj cov thaub qab yuav dhau los ua muaj, uas nyob rau hauv peb rooj plaub yuav yooj yim rau kev ua hauj lwm nrog staging, tso cai rau peb xa cov hlais los ntawm kev tsim khoom muaj yam tsis muaj ntawv sau ntxiv.
Lwm qhov zoo dua yog kev ua haujlwm nrog Teams API thiab muaj sijhawm txaus los tsim cov ntaub ntawv thiab lub luag haujlwm siv cov cuab yeej ua haujlwm. Txawm li cas los xij, tus tsim lub luag hauj lwm tsis muaj cai los ntawm lub neej ntawd. Yog li, tus neeg siv uas muaj cai nyeem tsis tuaj yeem nyeem cov lus tshiab.
Yog vim li cas? Txawm tias muaj tseeb hais tias nyob rau hauv cov cai yog tsim nyog GRANT, lawv tsis tas siv. Muaj 2 txoj kev: syncPreparedDatabases ΠΈ syncDatabases. Cov syncPreparedDatabases - Txawm tias muaj tseeb hais tias nyob rau hauv seem preparedDatabasesyog muaj mob defaultRoles ΠΈ defaultUsers los tsim lub luag haujlwm, cov cai qub tsis raug siv. Peb tab tom npaj ib thaj chaw kom cov cai no tau txais kev thov.
Raws li cov txiaj ntsig ntawm kev daws cov teeb meem saum toj no, peb forked Postgres Operator los ntawm Zalando rau hauv koj repository, qhov twg nws yog sau nrog xws li pab tau thaj ua rau thaj. Thiab kom yooj yim dua, peb kuj tau sau Docker duab.
Spilo tso cai rau koj los tsim cov pawg standby ntawm S3 cia nrog Wal-E, thaum PgSQL binary cav yog thawj zaug khaws cia hauv S3 thiab tom qab ntawd tso tawm los ntawm qhov hloov pauv. Tab sis yuav ua li cas yog tias koj muaj tsis siv los ntawm Wal-E ntawm cov txheej txheem qub? Txoj kev daws teeb meem no twb yog lawm nws tau tawm tswv yim pe hub.
PostgreSQL logical replication los cawm. Txawm li cas los xij, peb yuav tsis mus rau hauv kev nthuav dav txog yuav ua li cas los tsim cov ntawv tshaj tawm thiab kev tso npe, vim ... peb txoj kev npaj yog fiasco.
Qhov tseeb yog tias cov ntaub ntawv muaj ntau lub rooj thauj khoom nrog ntau lab kab, uas, ntxiv mus, tau tas li rov ntxiv thiab tshem tawm. Yooj yim subscription Ρ copy_data, thaum tus tshiab replica luam tag nrho cov ntsiab lus los ntawm tus tswv, nws tsuas tsis tuaj yeem nrog tus tswv. Luam cov ntsiab lus ua haujlwm rau ib lub lim tiam, tab sis tsis tau ntes tus tswv. Thaum kawg, nws pab kuv daws qhov teeb meem ib tsab xov xwm Cov npoj yaig los ntawm Avito: koj tuaj yeem hloov cov ntaub ntawv siv pg_dump. Kuv yuav piav txog peb (hloov me ntsis) version ntawm no algorithm.
Lub tswv yim yog tias koj tuaj yeem ua tus neeg xiam oob khab subscription khi rau ib qho replication qhov tshwj xeeb, thiab tom qab ntawd kho tus lej pauv. Muaj replicas muaj rau kev ua hauj lwm ntau lawm. Qhov no yog ib qho tseem ceeb vim hais tias lub replica yuav pab tsim ib tug zoo ib yam pov tseg thiab mus txuas ntxiv tau txais kev hloov ntawm tus tswv.
Cov lus txib nram qab no piav qhia txog txoj kev tsiv teb tsaws chaw yuav siv cov npe hauv qab no: