Huihuinga Failover PostgreSQL + Patroni. Te wheako whakatinana

I roto i tenei tuhinga ka korero atu ahau ki a koe me pehea te whakatata atu ki te take o te PostgreSQL he kino, he aha te take i nui ai ki a matou, me te aha i puta i te mutunga.

He ratonga tino utaina ta matou: 2,5 miriona nga kaiwhakamahi puta noa i te ao, 50K+ nga kaiwhakamahi kaha ia ra. Ko nga kaitoro kei Amazone i tetahi rohe o Irirangi: 100+ nga kaitoro rereke kei te mahi tonu, tata ki te 50 o ratou me nga papaa raraunga.

Ko te tuara katoa he tono Java monolithic nui e mau tonu ana te hononga tukutuku ki te kiritaki. Ina mahi tahi nga kaiwhakamahi i te wa kotahi i runga i te papa kotahi, ka kite katoa ratou i nga huringa i te waa tuuturu, na te mea ka tuhia e matou nga huringa katoa i roto i te paataka raraunga. Tata ki te 10K nga tono mo ia hekona ki o maatau papaanga. I te kawenga teitei i Redis ka tuhia e matou nga tono 80-100K mo ia hekona.
Huihuinga Failover PostgreSQL + Patroni. Te wheako whakatinana

He aha tatou i huri ai i Redis ki PostgreSQL

I te timatanga, i mahi tahi ta maatau ratonga me Redis, he rokiroki uara-matua e pupuri ana i nga raraunga katoa i roto i te RAM o te tūmau.

Nga pai o Redis:

  1. He tere whakautu teitei, na te mea kei te rongoa nga mea katoa ki te mahara;
  2. He pai te taapiri me te tukurua.

Nga kino o Redis mo tatou:

  1. Karekau he whakawhitinga tino. I whakamatau matou ki te pee i a raatau i to maatau taumata tono. Kia aroha mai, kaore tenei i pai i nga wa katoa, me te tuhi i nga waehere tino uaua.
  2. Ko te nui o nga raraunga ka whakaitihia e te nui o te mahara. Ka piki ake te nui o nga raraunga, ka tipu te mahara, a, i te mutunga, ka uru tatou ki nga ahuatanga o te tauira kua tohua, i roto i te AWS me whakamutu ta tatou ratonga ki te whakarereke i te momo tauira.
  3. He mea tika ki te pupuri tonu i te taumata torohū iti, no te mea He nui rawa atu ta matou tono. Ko te taumata torohū pai mo tatou ko te 17-20 ms. I te taumata o te 30-40 ms, ka roa nga whakautu ki a maatau tono tono me te whakahekenga ratonga. Heoi ano, i pa mai tenei ki a matou i te marama o Hepetema 2018, i te wa i whiwhi tetahi o nga keehi me Redis mo etahi take he 2 nga wa teitei ake i te waa. Hei whakatau i te raru, i whakamutua e matou te ratonga i waenganui o te ra mahi mo te tiaki kore i whakaritea me te whakakapi i te tauira Redis raruraru.
  4. He ngawari ki te tiki raraunga maiorooro ahakoa nga hapa iti o te waehere katahi ka whakapau i te wa roa ki te tuhi waehere hei whakatika i taua raraunga.

I whai whakaaro matou ki nga ngoikoretanga me te mohio me neke matou ki tetahi mea pai ake, me nga whakawhitinga noa me te iti ake o te ti'aturi i runga i te waatea. I mahia e matou a maatau rangahau, i tātarihia nga whiringa maha me te whiriwhiri i te PostgreSQL.

Kua nuku matou ki tetahi putunga raraunga hou mo nga tau 1,5 inaianei, kua whakawhiti noa i tetahi waahanga iti o nga raraunga, na inaianei kei te mahi tahi matou me Redis me PostgreSQL. Kua tuhia etahi atu korero mo nga waahanga o te neke me te whakawhiti raraunga i waenga i nga papaunga raraunga tuhinga na taku hoa mahi.

I te wa i timata ai matou ki te neke, i mahi tika ta matou tono me te papaa raraunga me te uru atu ki te rangatira o Redis me PostgreSQL. Ko te kohinga PostgreSQL he rangatira me tetahi tauira me te tukurite tukutahi. Koinei te ahua o te rerengamahi papaunga raraunga:
Huihuinga Failover PostgreSQL + Patroni. Te wheako whakatinana

Te whakatinana i te PgBouncer

I a matou e neke ana, kei te whanake ano te hua: kua piki ake te maha o nga kaiwhakamahi me te maha o nga kaitoro e mahi tahi ana me PostgreSQL, a ka timata matou ki te kore hononga. Ka hangaia e PostgreSQL he tukanga motuhake mo ia hononga ka pau nga rauemi. Ka taea e koe te whakanui ake i te maha o nga hononga ki tetahi waahi, ki te kore he tupono ka kore e pai te mahi a te putunga raraunga. Ko te whiringa pai i roto i tenei ahuatanga ko te kowhiri i tetahi kaiwhakahaere hononga ka tu ki mua o te papaarangi.

E rua nga whiringa mo te kaiwhakahaere hononga: Pgpool me PgBouncer. Engari ko te mea tuatahi kaore i te tautoko i te tikanga tauwhitinga o te mahi me te papaaarangi, na reira i whiriwhiria e matou a PgBouncer.

Kua whirihorahia e matou te kaupapa mahi e whai ake nei: ka uru atu to maatau tono ki tetahi PgBouncer, kei muri ko nga rangatira o PostgreSQL, kei muri i ia rangatira he tauira kotahi me te tukurite tukutahi.
Huihuinga Failover PostgreSQL + Patroni. Te wheako whakatinana

I te wa ano, kaore i taea e matou te penapena i te katoa o nga raraunga i roto i te PostgreSQL me te tere o te mahi me te papaaarangi he mea nui ki a matou, na reira i timata matou ki te tohatoha i te PostgreSQL i te taumata tono. Ko te kaupapa e whakaahuatia ana i runga ake nei he watea mo tenei: ka taapirihia he maramara PostgreSQL hou, ka nui ki te whakahou i te whirihoranga PgBouncer ka taea e te tono te mahi tonu me te maramara hou.

PgBouncer Hapa Tolerance

I mahi tenei kaupapa tae noa ki te mate o te PgBouncer anake. Kei te AWS tatou, kei reira ka whakarewahia nga waahi katoa ki runga i nga taputapu ka mate i ia wa. I enei ahuatanga, ka neke noa te tauira ki nga taputapu hou ka mahi ano. I puta tenei ki a PgBouncer, engari karekau i te waatea. Ko te hua o tenei tukinga ko ta matou ratonga kaore i te waatea mo te 25 meneti. Mo nga ahuatanga penei, e taunaki ana a AWS ki te whakamahi i te taapiri i te taha o te kaiwhakamahi, kaore i mahia e matou i tera wa.

Whai muri i tera, i tino whakaaro matou mo te he o nga kahui PgBouncer me PostgreSQL, na te mea ka puta ano he ahuatanga penei me etahi ahuatanga i roto i ta maatau putea AWS.

I hangahia e matou te kaupapa whakamau i te hapa a PgBouncer penei: ka uru nga kaitoro tono katoa ki te Whatunga Uta Whakatau, kei muri e rua nga PgBouncer. Ka titiro ia o nga PgBouncers ki te rangatira o te PostgreSQL o ia maramara. Mena ka hoki ano te ahuatanga o te tukinga AWS, ka tukuna nga waka katoa ma tetahi atu PgBouncer. Ka tukuna e AWS te whakaraerae i nga hapa o te Whatunga Load Balancer.

Ma tenei kaupapa ka taea e koe te taapiri i nga tūmau PgBouncer hou.
Huihuinga Failover PostgreSQL + Patroni. Te wheako whakatinana

Te hanga i te Pouaka Whakapainga PostgreSQL

I te whakatau i tenei raru, i whakaarohia e matou nga whiringa rereke: te tuhi whaiaro, repmgr, AWS RDS, Patroni.

Nga tuhinga tuhi whaiaro

Ka taea e ratou te aroturuki i nga mahi a te rangatira, a, ki te kore e taea, whakatairanga i te tauira ki te rangatira me te whakahou i te whirihoranga PgBouncer.

Ko nga painga o tenei huarahi ko te tino ngawari, na te mea ka tuhia e koe nga tuhinga ka mohio koe ki te mahi.

Cons:

  • Kaore pea te rangatira i mate; engari, he rahunga whatunga. Ko te kore e mohio ki tenei, ka whakatairanga i te tauira ki te rangatira, ka mahi tonu te rangatira tawhito. Ko te mutunga mai, ka whiwhi matou i nga kaitoro e rua i roto i te mahi rangatira, a kaore e mohio ko wai o raatau nga raraunga hou o naianei. Ka kiia hoki tenei ahuatanga ko te wehe-roro;
  • I mahue matou kaore he whakautu. I roto i ta maatau whirihoranga he rangatira me tetahi tauira, i muri i te hurihanga ka whakatairangahia te tauira ki te rangatira, karekau he tauira, no reira me taapiri a ringa i tetahi tauira hou;
  • Me aro turuki ano matou mo te mahi failover, a he 12 nga maramara PostgreSQL, ko te tikanga me aro turuki kia 12 nga tautau. A, no te whakanui ake i te maha o nga kongakonga, me mahara ano koe ki te whakahou i te failover.

He tino uaua te ahua o te ngoikoretanga o te tuhi whaiaro me te hiahia tautoko kore-iti. Ma te kohinga PostgreSQL kotahi, koinei te waahanga ngawari, engari kaore i te tauine, no reira kaore e pai mo tatou.

Repmgr

Kaiwhakahaere Tukurua mo nga tautau PostgreSQL, ka taea te whakahaere i te mahi o te roopu PostgreSQL. I te wa ano, kaore he ngoikoretanga aunoa i waho o te pouaka, na ki te mahi ka hiahia koe ki te tuhi i taau ake "takai" ki runga ake o te otinga kua oti te hanga. Na ko nga mea katoa ka puta ke atu te uaua atu i nga tuhinga a-whaiaro, na reira kaore matou i whakamatau i a Repmgr.

AWS RDS

Ka tautokohia nga mea katoa e hiahia ana matou, ka taea te mahi taapiri me te tautoko i te puna hononga. He huringa aunoa: ka mate te rangatira, ka noho te tauira hei rangatira hou, ka huri a AWS i te rekoata DNS ki te rangatira hou, ka taea te whakanoho i nga tauira ki nga AZ rereke.

Ko nga ngoikoretanga ko te kore o nga tautuhinga pai. Hei tauira mo te whakatikatika pai: he herea o taatau tauira mo nga hononga tcp, engari kaore e taea te mahi i roto i te RDS:

net.ipv4.tcp_keepalive_time=10
net.ipv4.tcp_keepalive_intvl=1
net.ipv4.tcp_keepalive_probes=5
net.ipv4.tcp_retries2=3

I tua atu, he tata ki te rua te utu o te AWS RDS i te utu o nga wa o mua, koinei te take nui i whakarerea ai tenei otinga.

Patroni

He tauira python tenei mo te whakahaere i te PostgreSQL me nga tuhinga pai, te ngoikore aunoa me te waehere puna i runga i te github.

Nga pai o Patroni:

  • Ka whakaahuahia ia tawhā whirihoranga, he maamaa te mahi;
  • Ka mahi te ngoikore aunoa i waho o te pouaka;
  • I tuhia ki te python, a, i te mea he maha nga tuhinga a tatou ake ki te python, ka mama ake ma tatou ki te whakatutuki i nga raruraru, me te awhina pea i te whakawhanaketanga o te kaupapa;
  • Ka tino whakahaere i te PostgreSQL, ka taea e koe te huri i te whirihoranga ki nga kopuku katoa o te tautau i te wa kotahi, a ki te tono i te whirihoranga hou me whakaara ano te roopu, ka taea ano tenei ma te whakamahi i te Patroni.

Cons:

  • Kaore i te maarama mai i nga tuhinga me pehea te mahi tika me PgBouncer. Ahakoa he uaua ki te kii he iti tenei, na te mea ko te mahi a Patroni ko te whakahaere i te PostgreSQL, me pehea te mahi o nga hononga ki a Patroni ko to tatou raruraru;
  • He iti noa nga tauira o te whakatinanatanga o Patroni i runga i nga tauine nui, engari he maha nga tauira o te whakatinanatanga mai i te wahanga.

Ko te mutunga mai, i kowhiria e matou a Patroni ki te hanga i tetahi tautau failover.

Te tukanga whakatinana Patroni

I mua i a Patroni, he 12 nga maramara PostgreSQL i roto i te rangatira kotahi me te whirihoranga tauira kotahi me te tukuritenga tukutahi. I uru atu nga kaitoro tono ki nga papaaarangi ma te Whatunga Uta Whakairite, kei muri e rua nga waahi me PgBouncer, kei muri i a raatau ko nga tūmau PostgreSQL katoa.
Huihuinga Failover PostgreSQL + Patroni. Te wheako whakatinana

Hei whakatinana i te Patroni, me kowhiria e matou he rokiroki whirihoranga huinga kua tohatohahia. Ka mahi a Patroni me nga punaha rokiroki whirihoranga tohatoha penei i te etcd, Zookeeper, Consul. Kei a matou he kahui Consul katoa i roto i te hanga, e mahi tahi ana me Vault a kare e whakamahia e matou. He take pai ki te timata ki te whakamahi i te Consul mo tana kaupapa.

Me pehea te mahi a Patroni me te Kaihoko

Kei a matou he roopu Consul, e toru nga waahanga, me te roopu Patroni, kei roto he kaihautu me te tauira (i roto i te Patroni, ka kiia te rangatira ko te kaihautu roopu, ko nga pononga e kiia ana ko nga tauira). Ka tukuna e ia tauira roopu Patroni nga korero mo te ahua o te roopu ki a Consul. No reira, mai i te Consul ka kitea e koe te whirihoranga o naianei o te roopu Patroni me ko wai te rangatira i tenei wa.

Huihuinga Failover PostgreSQL + Patroni. Te wheako whakatinana

Hei hono atu a Patroni ki a Consul, ako noa i nga tuhinga whaimana, e kii ana me tohu koe i te kaihautu ki te whakatakotoranga http, https ranei, i runga ano i ta maatau mahi ki a Consul, me te hoahoa hononga, ka taea:

host: the host:port for the Consul endpoint, in format: http(s)://host:port
scheme: (optional) http or https, defaults to http

He ngawari te ahua, engari koinei te waahi ka timata nga mahanga. Ma te Consul ka mahi matou i runga i tetahi hononga haumaru ma te https ka penei te ahua o ta matou whirihora hononga:

consul:
  host: https://server.production.consul:8080 
  verify: true
  cacert: {{ consul_cacert }}
  cert: {{ consul_cert }}
  key: {{ consul_key }}

Engari kaore e mahi pera. I te tiimatanga, kaore e taea e Patroni te hono atu ki a Consul na te mea kei te ngana tonu ia ki te haere ma te http.

I awhina te waehere puna Patroni ki te whakaoti rapanga. He pai kua tuhia ki te python. Ka puta ko te tawhā o te kaihautu kaore i te paahihia i tetahi huarahi, a me tohu te kawa i roto i te kaupapa. Koinei te ahua o te poraka whirihoranga mahi mo te mahi me te Consul mo matou:

consul:
  host: server.production.consul:8080
  scheme: https
  verify: true
  cacert: {{ consul_cacert }}
  cert: {{ consul_cert }}
  key: {{ consul_key }}

Consul-tauira

Na, kua whiriwhiria e matou te rokiroki whirihoranga. Inaianei me maarama me pehea te huri a PgBouncer i tana whirihoranga ina huri te kaiarahi i te roopu Patroni. Kaore he whakautu mo tenei patai i roto i nga tuhinga, na te mea ... Ko te tikanga, ko te mahi tahi me PgBouncer kaore i te whakaahuahia ki reira.

I te rapu i tetahi otinga, i kitea e matou he tuhinga (kaore au e mahara ki te ingoa), i tuhia ai ko te Consul-template he tino awhina ki te whakakotahi i a PgBouncer me Patroni. Na tenei i akiaki matou ki te ako i nga mahi a Consul-template.

I puta ko te Consul-template e aro turuki tonu ana i te whirihoranga o te kohinga PostgreSQL i Consul. Ina huri te kaihautu, ka whakahouhia e ia te whirihoranga PgBouncer ka tukuna he whakahau kia utaina ano.

Huihuinga Failover PostgreSQL + Patroni. Te wheako whakatinana

Ko te painga nui o te tauira ko te penapena hei waehere, no reira ka taapirihia he maramara hou, ka nui ki te hanga i tetahi mahi hou me te whakahou aunoa i te tauira, hei tautoko i te Hanganga hei maapono waehere.

Hangahanga hou me Patroni

Ko te mutunga mai, i whiwhi matou i te kaupapa mahi e whai ake nei:
Huihuinga Failover PostgreSQL + Patroni. Te wheako whakatinana

Ka uru nga kaitoro tono katoa ki te taurite → kei muri e rua nga ahuatanga o te PgBouncer → kei ia wa e whakahaere ana he tauira-Consul, e aro turuki ana i te ahua o ia kahui Patroni me te aro turuki i te whai take o te whirihora PgBouncer, e tuku tono ana ki te kaiarahi o naianei. o ia tautau.

Te whakamatautau a-ringa

I mua i te whakarewatanga ki te hanga, i whakarewahia e matou tenei kaupapa i runga i te taiao whakamatautau iti me te tirotiro i te mahi o te whakawhiti aunoa. I whakatuwheratia e ratou te poari, i nekehia te whakapiri, a i taua wa ka "patua" te rangatira o te tautau. I roto i te AWS, ko nga mea katoa e hiahia ana koe ki te whakakore i te tauira ma te papatohu.

Huihuinga Failover PostgreSQL + Patroni. Te wheako whakatinana

I hoki mai te whakapiri i roto i te 10-20 hekona, katahi ka timata te neke ano. Ko te tikanga i tika te mahi a te roopu Patroni: i whakarereke i te kaiarahi, i tukuna nga korero ki a Consul, a ka mau tonu a Consul-template i enei korero, ka whakakapi i te whirihoranga PgBouncer ka tukuna he whakahau kia utaina ano.

Me pehea te ora i raro i nga kawenga nui me te pupuri i te wa iti?

He pai nga mahi katoa! Engari ka puta ake nga patai hou: Me pehea te mahi i raro i te kawenga nui? Me pehea te tere me te haumaru ki te whakaputa i nga mea katoa i roto i te mahi?

Ko te taiao whakamatautau e whakahaere ana matou i nga whakamatautau kawenga ka awhina i a maatau ki te whakautu i te patai tuatahi. He tino rite ki te hanga i roto i te hoahoanga me te whakaputa i nga raraunga whakamatautau, he rite tonu te rahi ki te whakaputa. Ka whakatau matou ki te "whakamate" i tetahi o nga rangatira o PostgreSQL i te wa o te whakamatautau ka kite he aha te mea ka tupu. Engari i mua i tera, he mea nui ki te tirotiro i te whakaputanga aunoa, na te mea i runga i tenei taiao he maha nga maramara PostgreSQL, na reira ka pai taatau ki te whakamatautau i nga tuhinga whirihoranga i mua i te whakaputa.

He ahua hao nga mahi e rua, engari kei a matou te PostgreSQL 9.6. Ka taea pea e tatou te whakahou ki te 11.2 inaianei?

Ka whakatau matou ki te mahi i tenei i nga waahanga 2: tuatahi whakahou i te putanga ki te 11.2, ka whakarewahia a Patroni.

Whakahoutanga PostgreSQL

Kia tere te whakahou i te putanga PostgreSQL, me whakamahi koe i te whiringa -k, ka hangaia he hononga pakeke ki runga i te kōpae, kaore he take ki te kape i o raraunga. I runga i nga papaa raraunga o te 300-400 GB, he 1 te rua te roa o te whakahou.

He maha a matou mahanga, no reira me mahi aunoa te whakahou. Ki te mahi i tenei, i tuhia e matou he pukapuka takaro Ansible e mahi ana i te tukanga whakahou katoa mo matou:

/usr/lib/postgresql/11/bin/pg_upgrade 
<b>--link </b>
--old-datadir='' --new-datadir='' 
 --old-bindir=''  --new-bindir='' 
 --old-options=' -c config_file=' 
 --new-options=' -c config_file='

He mea nui kia kite i konei i mua i te tiimata i te whakahou, me mahi koe me te tawhā --tirohiakia mohio ka taea te whakahou. Ka whakakapi ano ta maatau tuhinga i nga whirihora i te wa o te whakahoutanga. I oti ta maatau tuhinga i roto i te 30 hēkona, he hua pai rawa atu.

Whakarewatanga o Patroni

Hei whakaoti i te raruraru tuarua, titiro noa ki te whirihoranga Patroni. He tauira whirihoranga kei roto i te whare putunga whaimana me te initdb, kei a ia te haepapa mo te arawhiti i tetahi putunga raraunga hou i te wa tuatahi i whakarewahia ai a Patroni. Engari i te mea kei a matou he papaaarangi kua rite, ka tangohia noa e matou tenei waahanga mai i te whirihoranga.

I te wa i timata ai matou ki te whakauru i a Patroni ki runga i te kahui PostgreSQL kua oti te hanga me te whakarewatanga, he raru hou: i whakarewahia nga kaitoro e rua hei kaiarahi. Kare a Patroni e mohio mo te ahua o te kaapu, ka ngana ki te whakahaere i nga kaitoro e rua hei roopu motuhake e rua me te ingoa kotahi. Hei whakaoti i tenei raruraru, me muku koe i te whaiaronga raraunga i runga i te taurekareka:

rm -rf /var/lib/postgresql/

Me mahi tenei ki te taurekareka anake!

I te wa e hono ana i tetahi tauira ma, ka hanga e Patroni he kaihautu turanga, ka whakahoki ano ki te tauira, katahi ka mau ki te ahua o naianei ma te whakamahi i nga raarangi wal.

Ko tetahi atu uaua i pa ki a matou ko nga tautau PostgreSQL katoa e kiia ana he matua ma te taunoa. Ki te kore e mohio ana ia kahui mo tetahi atu, he mea noa tenei. Engari ka hiahia koe ki te whakamahi i te Patroni, me whai ingoa ahurei nga tautau katoa. Ko te otinga ko te huri i te ingoa tautau i te whirihoranga PostgreSQL.

Whakamatau uta

I whakarewahia e matou he whakamatautau e whakataurite ana i te mahi a nga kaiwhakamahi ki runga papa. I te ekenga o te kawenga ki a maatau toharite ia ra, ka tukuna ano e matou te whakamatautau kotahi, ka whakawetohia e matou tetahi tauira me te kaiarahi PostgreSQL. I mahi te failover aunoa kia rite ki ta matou i tumanako ai: I huri a Patroni i te kaiarahi, i whakahouhia e te Consul-template te whirihoranga PgBouncer ka tukuna he whakahau kia utaina ano. E ai ki o maatau kauwhata i Grafana, i kitea he roa te roa o te 20-30 hēkona me te iti o nga hapa mai i nga kaitoro e pa ana ki te hononga ki te papaarangi. He ahuatanga noa tenei, ko enei uara e manakohia ana mo o maatau karekau he tino pai ake i te waa mahi.

Te whakarewanga o Patroni ki te hanga

Ko te mutunga mai, i puta mai te mahere e whai ake nei:

  • Tukuna te tauira-Consul ki te tūmau PgBouncer ka whakarewahia;
  • Ko nga whakahoutanga PostgreSQL ki te putanga 11.2;
  • Te huri i te ingoa tautau;
  • Te whakarewanga o te roopu Patroni.

I te wa ano, ka taea e ta maatau kaupapa te mahi i te waahi tuatahi i nga wa katoa; ka taea e taatau te tango i ia PgBouncer mai i te mahi takitahi me te mahi i te tukunga me te whakarewatanga o te tauira-tohu ki runga. Koia ta matou mahi.

Mo te whakamatautau tere, i whakamahia e matou te Ansible, i te mea kua whakamatauria e matou te pukapuka takaro katoa i runga i te taiao whakamatautau, a ko te wa mahi mo te tuhinga katoa mai i te 1,5 ki te 2 meneti mo ia maramara. Ka taea e matou te huri i nga mea katoa ki ia kongakonga me te kore e mutu ta matou ratonga, engari me whakaweto ia PostgreSQL mo etahi meneti. I tenei keehi, ko nga kaiwhakamahi kei runga i tenei waahanga kaore e kaha ki te mahi i tenei wa, a kaore tenei e whakaaetia mo matou.

Ko te huarahi ki waho o tenei ahuatanga ko te tiaki i whakamaheretia, ka mahia e matou ia 3 marama. He matapihi tenei mo nga mahi kua whakaritea, ina wetewetetia e matou ta matou ratonga me te whakahou i nga waahi raraunga. Kotahi te wiki e toe ana ki te matapihi e whai ake nei, ka whakatau matou ki te tatari me te whakarite ano. I te wa e tatari ana, i tutakina ano e matou o maatau putea: mo ia maramara PostgreSQL i whakaarahia e matou he tauira mokowhiti i te wa e kore e taka, hei whakaora i nga raraunga hou, me te taapiri i tetahi tauira hou mo ia maramara, ka waiho hei tauira hou i roto i te Patroni tautau, kia kore e tukuna he whakahau ki te muku raraunga . I awhina enei katoa ki te whakaiti i te tupono o te hapa.
Huihuinga Failover PostgreSQL + Patroni. Te wheako whakatinana

I timata ano matou i ta maatau ratonga, i pai nga mea katoa, i mahi tonu nga kaiwhakamahi, engari i runga i nga kauwhata ka kite matou i te nui o te utaina ki runga i nga kaitoro Consul.
Huihuinga Failover PostgreSQL + Patroni. Te wheako whakatinana

He aha tatou i kore ai i kite i tenei i roto i te taiao whakamatautau? Ko tenei raruraru e whakaatu pai ana he mea tika kia whai i te Hanganga hei kaupapa waehere me te whakapai ake i nga hanganga katoa, mai i nga taiao whakamatautau ki te hanga. Ki te kore, he tino ngawari ki te tiki i te raru i pa mai ki a maatau. He aha te mea i tupu? I puta tuatahi a Consul i roto i te whakaputanga, i muri mai i nga waahi whakamatautau, na reira, ko te putanga o te Consul i roto i nga taiao whakamatautau he teitei ake i te whakaputa. I roto noa i tetahi o nga tukunga, he turuturu PTM i te wa e mahi ana me te tauira-consul i whakatauhia. Na ka whakahouhia e matou a Consul, na reira ka whakatauhia te raru.

Tīmata anō te kāhui Patroni

Heoi, ka puta he raru hou kaore matou i te whakapae. I te wa e whakahou ana i a Consul, ka tangohia noa e matou te node Consul mai i te roopu ma te whakamahi i te whakahau waiho consul → Ka hono atu a Patroni ki tetahi atu tūmau Consul → ka mahi nga mea katoa. Engari i to matou taenga atu ki te waa whakamutunga o te roopu Kaihopu me te tuku i te whakahau tuku kaunihera, ka timata ano nga tautau Patroni katoa, a, i roto i nga raarangi ka kite matou i te hapa e whai ake nei:

ERROR: get_cluster
Traceback (most recent call last):
...
RetryFailedError: 'Exceeded retry deadline'
ERROR: Error communicating with DCS
<b>LOG: database system is shut down</b>

Kaore i taea e te roopu Patroni te tiki korero mo tana kahui ka timata ano.

Ki te rapu otinga, i whakapā atu matou ki nga kaituhi o Patroni ma tetahi take i runga i te github. I whakaarohia e ratou he whakapai ake ki a maatau konae whirihoranga:

consul:
 consul.checks: []
bootstrap:
 dcs:
   retry_timeout: 8

I taea e matou te whakahoki i te take i roto i te taiao whakamatautau me te whakamatau i enei tautuhinga ki reira, engari kaore i pai.

Ko te raruraru kei te noho tonu kaore ano kia whakatauhia. Ka whakamahere matou ki te whakamatau i nga otinga e whai ake nei:

  • Whakamahia te Kaitohutohu mo ia tauira o te roopu Patroni;
  • Whakatikahia te raruraru i roto i te waehere.

Kei te mohio matou ki hea i puta ai te hapa: ko te raru pea ko te whakamahi i te waahi taunoa, karekau e whakakorehia ma te konae whirihoranga. Ina tangohia te tūmau Consul whakamutunga mai i te kāhui, ka whakatio te kāhui Consul katoa, ka roa ake i te hēkona; na tenei, kaore e taea e Patroni te whiwhi i te ahua o te kahui me te whakaara ano i te roopu katoa.

Waimarie, kare ano matou i raru i etahi atu hapa.

Nga hua o te whakamahi i a Patroni

Whai muri i te whakarewanga angitu o Patroni, ka taapirihia e matou he tauira taapiri ki ia kahui. Inaianei he ahua o te roopu o ia kahui: kotahi rangatira me nga tauira e rua, hei whakamarumaru i te roro wehea ina huri.
Huihuinga Failover PostgreSQL + Patroni. Te wheako whakatinana

Neke atu i te toru marama a Patroni e mahi ana i nga mahi whakangao. I tenei wa, kua kaha ia ki te awhina i a maatau. I tata nei, ka mate te kaihautu o tetahi o nga tautau i roto i te AWS, i mahi te korekore aunoa me te mahi tonu a nga kaiwhakamahi. Kua tutuki i a Patroni tana mahi matua.

He whakarāpopototanga poto mo te whakamahi i a Patroni:

  • Te ngawari o nga huringa whirihoranga. He nui ki te huri i te whirihoranga i runga i tetahi tauira ka pa ki te huinga katoa. Mena ka hiahiatia he whakaara ano ki te tono i te whirihoranga hou, ka whakamohio atu a Patroni ki a koe mo tenei. Ka taea e Patroni te whakaara ano i te roopu katoa me te whakahau kotahi, he tino watea hoki.
  • Kei te mahi te failover aunoa a kua awhinatia e matou.
  • Te whakahōu i te PostgreSQL me te kore e waatea te tono. Me whakahōu i ngā tauira ki te putanga hōu, kātahi ka huri i te kaiārahi o te kāhui Patroni me te whakahou i te rangatira tawhito. I tenei keehi, ka puta nga whakamatautau e tika ana mo te koretake aunoa.

Source: will.com

Tāpiri i te kōrero