Hoʻohālike i nā puʻupuʻu failover ma muli o PostgreSQL a me Pacemaker

Hōʻike

I kekahi manawa i hala aku nei ua hāʻawi ʻia iaʻu ka hana o ka hoʻomohala ʻana i kahi puʻupuʻu failover no PostgreSQL, e hana ana ma kekahi mau kikowaena ʻikepili i hoʻopili ʻia e ka fiber optical i loko o hoʻokahi kūlanakauhale, a hiki iā ia ke pale aku i kahi hemahema (e laʻa, ʻeleʻele) o hoʻokahi kikowaena data. E like me ka lako polokalamu nona ke kuleana no ka hoʻomanawanui hewa, ua koho wau pacemakerno ka mea, ʻo kēia ka hopena mana mai RedHat no ka hoʻokumu ʻana i nā puʻupuʻu failover. Maikaʻi ia no ka mea hāʻawi ʻo RedHat i ke kākoʻo no ia, a no ka mea ʻo kēia hoʻonā ke ao holoʻokoʻa (modular). Me kāna kōkua, hiki ke hōʻoia i ka hoʻomanawanui hewa ʻaʻole wale o PostgreSQL, akā i nā lawelawe ʻē aʻe, me ka hoʻohana ʻana i nā modula maʻamau a i ʻole ka hana ʻana iā lākou no nā pono kikoʻī.

Ua hāpai kēia hoʻoholo i kahi nīnau kūpono: pehea ka hoʻomanawanui hewa ʻana o kahi puʻupuʻu failover? No ka noiʻi ʻana i kēia, ua kūkulu au i kahi papa hoʻāʻo e hoʻohālikelike i nā hemahema like ʻole ma nā node cluster, kali no ka hoʻihoʻi ʻana o ka lawelawe, hoʻihoʻi i ka node i hāʻule ʻole, a hoʻomau i ka hoʻāʻo ʻana i kahi loop. Ua kapa ʻia kēia papahana ʻo hapgsql, akā i ka wā lōʻihi, ua ʻoluʻolu wau i ka inoa, hoʻokahi wale nō vowel. No laila, hoʻomaka wau e kāhea i nā ʻikepili hoʻomanawanui hewa (a lele IP e kuhikuhi ana iā lākou) krogan (he ʻano mai ka pāʻani lolouila kahi i hoʻopālua ʻia ai nā ʻāpana koʻikoʻi a pau), a ʻo nā nodes, nā pūʻulu a me ka papahana ponoʻī. tuchanka (ka honua kahi e noho ai nā krogans).

I kēia manawa ua ʻae ka hoʻokele wehe i ka papahana i ke kaiāulu open source ma lalo o ka laikini MIT. E unuhi koke ʻia ka README i ka ʻōlelo Pelekania (no ka mea, ua manaʻo ʻia ʻo nā mea kūʻai nui ʻo Pacemaker a me nā mea hoʻomohala PostgreSQL), a ua hoʻoholo wau e hōʻike i ka mana Lūkini kahiko o README (ma kahi hapa) ma ke ʻano o kēia ʻatikala.

Hoʻohālike i nā puʻupuʻu failover ma muli o PostgreSQL a me Pacemaker

Hoʻopili ʻia nā hui ma nā mīkini virtual ʻO VirtualBox. He 12 mau mīkini virtual (36GiB ka huina) e hoʻolālā ʻia, e hana ana i 4 mau pūʻulu hoʻomanawanui hewa (nā koho like ʻole). Aia nā pūʻulu mua ʻelua i ʻelua mau kikowaena PostgreSQL, aia ma nā kikowaena ʻikepili like ʻole, a me kahi kikowaena maʻamau. hoike ana c mea kōrum (hoʻokipa ʻia ma kahi mīkini virtual maʻalahi ma kahi kikowaena data ʻekolu), e hoʻonā i ka maopopo ʻole 50% / 50%, e haawi ana i kou balota i kekahi o na aoao. ʻO ka hui ʻekolu ma ʻekolu mau kikowaena data: hoʻokahi haku, ʻelua kauā, ʻaʻole mea kōrum. ʻO ka ʻehā o ka pūʻulu he ʻehā mau kikowaena PostgreSQL, ʻelua ma kēlā me kēia kikowaena data: hoʻokahi haku, ʻo ke koena replicas, a hoʻohana pū kekahi. hoike ana c mea kōrum. Hiki i ka hā ke kū i ka hemahema o ʻelua mau kikowaena a i ʻole hoʻokahi kikowaena data. Hiki ke hoʻonui ʻia kēia hoʻonā i ka nui o nā replicas inā pono.

Ka lawelawe manawa pololei ntpd hoʻonohonoho hou ʻia no ka hoʻomanawanui hewa, akā hoʻohana ʻo ia i ke ʻano ponoʻī ntpd (ano keiki makua ole). kikowaena kaʻana like hoike ana hana ma ke ʻano he kikowaena NTP kikowaena, e puʻunaue ana i kona manawa i nā pūʻulu āpau, a laila hoʻonohonoho pū i nā kikowaena āpau me kekahi. Ina hoike ana hāʻule a kaʻawale paha, a laila e hoʻomaka kekahi o nā kikowaena cluster (i loko o ka pūpū) e puʻunaue i kona manawa. Kākoʻo kōkua HTTP proxy hāpai ʻia hoʻi i hoike ana, me kāna kōkua, hiki i nā mīkini virtual ʻē aʻe ke komo i nā waihona Yum. ʻO ka ʻoiaʻiʻo, e hoʻokipa ʻia nā lawelawe e like me ka manawa kūpono a me nā proxies ma nā kikowaena i hoʻolaʻa ʻia, akā i loko o ka hale hoʻokipa e mālama ʻia ai lākou. hoike ana e mālama wale i ka helu o nā mīkini virtual a me ka lewa.

Nā'Ōlelo

v0. Hana pū me CentOS 7 a me PostgreSQL 11 ma VirtualBox 6.1.

ʻĀpana hui

Hoʻolālā ʻia nā pūʻulu a pau e loaʻa i nā kikowaena ʻikepili he nui, i hui pū ʻia i hoʻokahi pūnaewele palahalaha a pono e kū i ka hemahema a i ʻole ka hoʻokaʻawale ʻana o ka pūnaewele o kahi kikowaena data hoʻokahi. ʻo ia ke kumu hikiʻole hoʻohana no ka pale ʻana mai lolo-māka ʻenehana Pacemaker maʻamau i kapa ʻia STONITH (Pō I Ka Poʻo ʻE aʻe) a i ʻole paʻa. ʻO kona kumu: inā hoʻomaka ka manaʻo o nā node o ka puʻupuʻu ua hewa kekahi mea i kekahi node, ʻaʻole ia e pane a hewa ʻole paha, a laila e hoʻohuli ikaika lākou iā ia ma o nā mea "waho", no ka laʻana, kahi kāleka IPMI a i ʻole UPS. . Akā, e hana wale kēia i nā hihia kahi, i ka wā o ka hāʻule hoʻokahi, hoʻomau ka hana IPMI a i ʻole UPS. Maʻaneʻi mākou e hoʻolālā e pale aku i kahi pōʻino nui aʻe, ke hāʻule ka kikowaena data holoʻokoʻa (no ka laʻana, nalowale ka mana). A me kēlā hōʻole, nā mea a pau stonith-ʻaʻole e hana nā mea hana (IPMI, UPS, etc.).

Ma kahi, hoʻokumu ʻia ka ʻōnaehana ma ka manaʻo o ka quorum. He leo ko nā node a pau, a ʻo ka poʻe i ʻike ma mua o ka hapalua o nā node a pau hiki ke hana. Kapa ʻia kēia nui o “half + 1”. kōrama. Inā ʻaʻole i hiki i ka quorum, a laila hoʻoholo ka node aia ia i kahi kaʻawale pūnaewele a pono e hoʻopau i kāna mau kumuwaiwai, ʻo ia. ʻo kēia ka mea pale-lolo ʻokiʻoki. Inā ʻaʻole hana ka polokalamu nona ke kuleana o kēia ʻano, a laila pono e hana kahi ʻīlio kiaʻi, no ka laʻana, ma muli o IPMI.

Inā like ka helu o nā nodes (kahi puʻupuʻu ma nā kikowaena ʻikepili ʻelua), a laila hiki mai ka mea i kapa ʻia ʻaʻole maopopo. 50% / 50% (kanalima-kumamalima) i ka wā e puunaue pono ai ka hui kaawale i ka hapalua. No laila, no ka helu ʻana o nā nodes, hoʻohui mākou mea kōrum he daemon undemanding hiki ke hoʻokuʻu ʻia ma ka mīkini virtual ʻoi loa ma kahi kikowaena data ʻekolu. Hāʻawi ʻo ia i kāna koho i kekahi o nā ʻāpana (nāna i ʻike ai), a laila hoʻoholo i ka 50%/50% kānalua. Ua kapa aku au i ke kikowaena kahi e hoʻokuʻu ʻia ai ka mea korum hoike ana (ʻōlelo ʻōlelo mai repmgr, makemake wau ia).

Hiki ke hoʻoneʻe ʻia nā kumuwaiwai mai kēlā me kēia wahi, no ka laʻana, mai nā kikowaena hewa i nā mea olakino, a i ʻole ma ke kauoha a nā luna hoʻonohonoho. I ʻike nā mea kūʻai aku i kahi o nā kumuwaiwai e pono ai lākou (ma hea e hoʻopili ai?), e lana ana IP (lana IP). ʻO kēia nā IP e hiki ai iā Pacemaker ke neʻe a puni nā nodes (aia nā mea āpau ma kahi pūnaewele palahalaha). Hōʻike kēlā me kēia o lākou i kahi kumuwaiwai (lawelawe) a e loaʻa i kahi āu e pono ai e hoʻopili i mea e hiki ai ke komo i kēia lawelawe (i kā mākou hihia, kahi waihona).

Tuchanka1 (kaapuni me ka hoʻopili)

'ole

Hoʻohālike i nā puʻupuʻu failover ma muli o PostgreSQL a me Pacemaker

ʻO ka manaʻo he nui nā waihona liʻiliʻi liʻiliʻi me ka haʻahaʻa haʻahaʻa, no ka mea, ʻaʻole pono ka mālama ʻana i kahi kikowaena kauā i hoʻolaʻa ʻia ma ke ʻano wela wela no ka heluhelu wale ʻana i nā kālepa (ʻaʻohe pono o ia ʻano waiwai).

Hoʻokahi kikowaena o kēlā me kēia kikowaena data. Loaʻa i kēlā me kēia kikowaena ʻelua mau manawa PostgreSQL (ma ka ʻōlelo PostgreSQL ua kapa ʻia lākou he mau puʻupuʻu, akā no ka pale ʻana i ka huikau e kapa wau iā lākou he mau manawa (ma ka hoʻohālikelike ʻana me nā waihona ʻikepili ʻē aʻe), a e kāhea wale wau i nā puʻupuʻu Pacemaker). Hoʻohana ʻia kahi hana ma ke ʻano master, a hāʻawi wale ia i nā lawelawe (ʻo float IP wale nō ke alakaʻi iā ia). Ke hana nei ka lua ma ke ʻano he kauā no ke kikowaena ʻikepili ʻelua, a e hāʻawi i nā lawelawe inā hāʻule kona haku. No ka mea ʻo ka hapa nui o ka manawa hoʻokahi wale nō o nā mea ʻelua (ka haku) e hāʻawi i nā lawelawe (hana i nā noi), ua hoʻopaʻa ʻia nā kumuwaiwai āpau no ka haku (ua hoʻokaʻawale ʻia ka hoʻomanaʻo no ka shared_buffers cache, etc.), akā no ka lua o ka manawa. loaʻa nō hoʻi nā kumu waiwai (ʻoiai no ka hana suboptimal ma o ka waihona ʻōnaehana waihona) i ka hihia o ka hāʻule ʻole o kekahi o nā kikowaena data. ʻAʻole hāʻawi ke kauā i nā lawelawe (ʻaʻole e hana i nā noi heluhelu wale nō) i ka wā o ka hana maʻamau o ka puʻupuʻu, i ʻole he kaua no nā kumuwaiwai me ka haku ma ka mīkini like.

I ka hihia o nā node ʻelua, hiki ke hoʻomanawanui wale me ka replication asynchronous, ʻoiai me ka replication synchronous, ʻo ka hemahema o ke kauā e alakaʻi i ka pau ʻana o ka haku.

ʻAʻole hōʻike

Hoʻohālike i nā puʻupuʻu failover ma muli o PostgreSQL a me Pacemaker

ʻAʻole hōʻike (mea kōrum) E noʻonoʻo wau no ka hui Tuchanka1 wale nō, me nā mea ʻē aʻe a pau e like ia moʻolelo. Inā hāʻule ka hōʻike, ʻaʻohe mea e hoʻololi i ka ʻōnaehana cluster, e hoʻomau nā mea a pau e hana like me ia. Akā, e lilo ka kōrum i 2 mai loko o 3, a no laila, ʻo ka hāʻule hope ʻana e make no ka hui. Pono e hoʻoponopono koke ʻia.

Tuchanka1 hoole

Hoʻohālike i nā puʻupuʻu failover ma muli o PostgreSQL a me Pacemaker

ʻO ka hemahema o kekahi o nā kikowaena ʻikepili no Tuchanka1. Ma keia hihia hoike ana hoʻolei i kāna koho i ka lua node ma kahi kikowaena ʻikepili ʻelua. Ma laila, lilo ke kauā mua i haku, no laila, hana nā haku ʻelua ma ka server hoʻokahi a kuhikuhi i kā lāua mau IP lana ʻelua iā lāua.

Tuchanka2 (maʻamau)

'ole

Hoʻohālike i nā puʻupuʻu failover ma muli o PostgreSQL a me Pacemaker

ʻO ka hoʻolālā maʻamau o nā node ʻelua. Hana ka haku ma kekahi, ʻo ke kauā ma ka lua. Hiki iā lāua ke hoʻokō i nā noi (heluhelu wale ʻia ke kauā), no laila ua kuhikuhi ʻia lāua ʻelua e ka IP lana: ʻo krogan2 ka haku, ʻo krogan2s1 ke kauā. E hoʻomanawanui hewa ka haku a me ke kauā.

I ka hihia o nā nodes ʻelua, hiki ke hoʻomanawanui i ka hewa me ka replication asynchronous, no ka mea me ka replication synchronous, ʻo ka hemahema o ke kauā e alakaʻi i ka pau ʻana o ka haku.

Tuchanka2 hoole

Hoʻohālike i nā puʻupuʻu failover ma muli o PostgreSQL a me Pacemaker

Inā hāʻule kekahi o nā kikowaena data hoike ana koho no ka lua. Ma ke kikowaena ʻikepili hana wale nō, e hoʻokiʻekiʻe ʻia ka haku, a ʻo nā IP lana ʻelua e kuhikuhi iā ia: ka haku a me ke kauā. ʻOiaʻiʻo, pono e hoʻonohonoho ʻia ke ʻano i ke ala e lawa ai nā kumuwaiwai (nā palena pili, a me nā mea ʻē aʻe) e ʻae like i nā pili āpau a me nā noi mai ka haku a me ke kauā float IP. ʻO ia hoʻi, i ka wā o ka hana maʻamau e loaʻa iā ia kahi lako o nā palena.

Tuchanka4 (nui nā kauā)

'ole

Hoʻohālike i nā puʻupuʻu failover ma muli o PostgreSQL a me Pacemaker

ʻO kekahi ʻoi loa. Loaʻa nā waihona i loaʻa i ka nui o nā noi heluhelu wale nō (kahi hihia maʻamau o kahi pūnaewele hoʻouka nui). ʻO Tuchanka4 kahi kūlana e hiki ai i ʻekolu a ʻoi aku paha nā kauā e mālama i ia mau noi, akā ʻaʻole naʻe he nui. Me ka nui loa o nā kauā, pono ia e hana i kahi ʻōnaehana replication hierarchical. Ma ka liʻiliʻi liʻiliʻi (ma ke kiʻi), ʻelua mau kikowaena o kēlā me kēia kikowaena data, kēlā me kēia me kahi postgreSQL.

ʻO kekahi hiʻohiʻona o kēia papahana ʻo ia ka hiki ke hoʻonohonoho i hoʻokahi replication synchronous. Hoʻonohonoho ʻia e hana hou, inā hiki, i kahi kikowaena ʻikepili ʻē aʻe, ma mua o ka hoʻopili ʻana i ka kikowaena data like me ka haku. Kuhi ʻia ka haku a me kēlā me kēia kauā e kahi IP lana. ʻO ka mea pōmaikaʻi, ma waena o nā kauā e pono ke kaulike i nā noi i kekahi ʻano sql proxy, no ka laʻana, ma ka ʻaoʻao o ka mea kūʻai aku. Pono nā ʻano mea kūʻai aku i nā ʻano like ʻole sql proxy, a ʻo nā mea hoʻomohala wale nō e ʻike i ka mea e pono ai. Hiki ke hoʻokō ʻia kēia hana e kahi daemon waho a i ʻole e kahi waihona mea kūʻai aku (wai hoʻohui), etc. ʻO kēia mau mea a pau ma mua o ke kumuhana o kahi puʻupuʻu waihona failover (failover SQL proxy hiki ke hoʻokō kūʻokoʻa, me ka hoʻomanawanui hewa o ka mea kūʻai aku).

Tuchanka4 hoole

Hoʻohālike i nā puʻupuʻu failover ma muli o PostgreSQL a me Pacemaker

Inā hāʻule hoʻokahi kikowaena ʻikepili (ʻo ia hoʻi, ʻelua mau kikowaena), koho balota i ka lua. ʻO ka hopena, e holo ana ʻelua mau kikowaena ma ka lua o ka ʻikepili: ke holo nei kekahi i ka haku, a ʻo ka master float IP kuhikuhi iā ia (no ka loaʻa ʻana o nā noi heluhelu-kākau); a ma ka lua o ke kikowaena aia ke kauā e holo ana me ka synchronous replication, a kekahi o ke kauā float IPs kuhikuhi ia ia (no ka heluhelu-wale noi noi).

ʻO ka mea mua e hoʻomaopopo ai, ʻaʻole nā ​​IP kauā a pau e lilo i poʻe limahana, akā hoʻokahi wale nō. A e hana pono me ia e pono ia sql proxy hoʻihoʻi hou i nā noi āpau i ka IP lana i koe; a ina sql proxy ʻaʻole, a laila hiki iā ʻoe ke papa inoa i nā kauā IP lana a pau i hoʻokaʻawale ʻia e nā koma ma ka URL pili. Ma keia hihia, me libpq e pili ana ka pilina i ka IP hana mua, hana ʻia kēia ma ka ʻōnaehana hoʻāʻo maʻalahi. Malia paha ma nā hale waihona puke ʻē aʻe, no ka laʻana, JDBC, ʻaʻole e hana kēia a pono sql proxy. Hana ʻia kēia no ka mea ua pāpā ʻia ka hoʻāla ʻia ʻana o nā IP float no nā kauā i ka manawa like ma kahi kikowaena hoʻokahi, no laila e puʻunaue like ʻia i waena o nā kikowaena kauā inā he nui o lākou e holo ana.

ʻO ka lua: ʻoiai inā he hemahema ke kikowaena data, e mālama ʻia ka hoʻopiʻi synchronous. A inā hiki mai ka lua o ka hāʻule ʻana, ʻo ia hoʻi, ʻaʻole i hāʻule kekahi o nā kikowaena ʻelua i ke kikowaena data i koe, ʻo ka cluster, ʻoiai e hoʻōki ia i ka hāʻawi ʻana i nā lawelawe, e paʻa mau i ka ʻike e pili ana i nā hana i hana ʻia i hāʻawi ʻia i ka hōʻoia o ka hana. (ʻaʻole e loaʻa ka ʻike pohō inā loaʻa ʻole ka lua).

Tuchanka3 (3 mau kikowaena ʻikepili)

'ole

Hoʻohālike i nā puʻupuʻu failover ma muli o PostgreSQL a me Pacemaker

He pūʻulu kēia no kahi kūlana i ʻekolu mau kikowaena ʻikepili e holo pono ana, ʻo kēlā me kēia me kahi kikowaena waihona e holo pono ana. Ma keia hihia mea kōrum ʻaʻole pono. Hoʻokahi kikowaena ʻikepili i mālama ʻia e kahi haku, ʻo nā mea ʻelua ʻelua i hoʻohana ʻia e nā kauā. Hoʻopili ʻia ka hoʻopiʻi ʻana, ʻano ANY (slave1, slave2), ʻo ia hoʻi, e loaʻa i ka mea kūʻai aku ka hōʻoia ʻana i ka wā e pane mua ai kekahi o nā kauā ua ʻae ʻo ia i ka hana. Hōʻike ʻia nā kumuwaiwai e hoʻokahi IP lana no ka haku a ʻelua no nā kauā. ʻAʻole like me Tuchanka4, ʻo nā IP float ʻekolu a pau i ka hewa. No ke kaulike ʻana i nā nīnau SQL heluhelu wale nō hiki iā ʻoe ke hoʻohana sql proxy (me ka hoʻomanawanui hewa ʻokoʻa), a i ʻole e hāʻawi i hoʻokahi kauā lana IP i ka hapalua o nā mea kūʻai aku, a ʻo ka hapa ʻē aʻe i ka lua.

Tuchanka3 hoole

Hoʻohālike i nā puʻupuʻu failover ma muli o PostgreSQL a me Pacemaker

Inā hāʻule kekahi o nā kikowaena data, ʻelua koe. I hoʻokahi, hoʻokiʻekiʻe ka haku a me ka IP lana mai ka haku, ma ka lua - ke kauā a me ke kauā ʻelua IP lana (pono ke loaʻa i kahi waihona waiwai ʻelua i mea e ʻae ai i nā pilina āpau mai nā IP float float ʻelua). Hoʻopili like ma waena o nā haku a me nā kauā. Eia kekahi, e mālama ka pūʻulu i ka ʻike e pili ana i nā hana i hoʻopaʻa ʻia a hoʻopaʻa ʻia (ʻaʻole e nalowale ka ʻike) i ka wā o ka luku ʻia ʻana o ʻelua mau kikowaena data (inā ʻaʻole i luku ʻia i ka manawa hoʻokahi).

Ua hoʻoholo wau ʻaʻole e hoʻokomo i kahi wehewehe kikoʻī o ka hoʻolālā faila a me ka hoʻolaha ʻana. Hiki i ka poʻe makemake e pāʻani ke heluhelu ia mea a pau ma README. Ke hāʻawi wale nei au i ka wehewehe ʻana o ka hoʻāʻo ʻakomi.

Pūnaehana hoʻāʻo ʻakomi

No ka hoʻāʻo ʻana i ka ʻae ʻana i ka hewa o nā pūpū ma ka hoʻohālikelike ʻana i nā hewa like ʻole, ua hana ʻia kahi ʻōnaehana hoʻāʻo ʻakomi. Hoʻomaka ʻia e ka palapala test/failure. Hiki i ka ʻatikala ke lawe i nā ʻāpana i nā helu o nā pūʻulu āu e makemake ai e hoʻāʻo. Eia kekahi laʻana kēia kauoha:

test/failure 2 3

e ho'āʻo wale i ka hui lua a me ke kolu. Inā ʻaʻole i kuhikuhi ʻia nā ʻāpana, a laila e hoʻāʻo ʻia nā hui āpau. Hoʻāʻo like ʻia nā hui āpau, a hōʻike ʻia ka hopena ma ka panel tmux. Hoʻohana ʻo Tmux i kahi kikowaena tmux i hoʻolaʻa ʻia, no laila hiki ke holo ka palapala mai lalo o ka tmux paʻamau, ka hopena i kahi tmux nested. Manaʻo wau e hoʻohana i ka terminal ma kahi puka makani nui a me kahi font liʻiliʻi. Ma mua o ka hoʻomaka ʻana o ka hoʻāʻo ʻana, ʻōwili ʻia nā mīkini virtual āpau i kahi kiʻi paʻi i ka manawa i pau ai ka palapala setup.

Hoʻohālike i nā puʻupuʻu failover ma muli o PostgreSQL a me Pacemaker

Hoʻokaʻawale ʻia ka pahu i nā kolamu e like me ka nui o nā puʻupuʻu e hoʻāʻo ʻia; ma ke ʻano maʻamau (ma ka screenshot) ʻehā. E wehewehe au i nā mea o nā kolamu e hoʻohana ana i ka laʻana o Tuchanka2. Ua helu ʻia nā paneli ma ka kiʻi:

  1. Hōʻike ʻia nā helu hoʻāʻo ma aneʻi. Nā kolamu:
    • nele - ka inoa o ka ho'āʻo (hana ma ka palapala) e hoʻohālike i ka hewa.
    • naoh - ka manawa awelika helu helu i kekona i ka wā i hoʻihoʻi hou ai ka pūʻulu i kāna hana. Ana ʻia ia mai ka hoʻomaka ʻana o ka palapala e hoʻohālikelike ana i kahi hewa a hiki i ka manawa e hoʻihoʻi ai ka hui i kāna hana a hiki ke hoʻomau i ka hāʻawi ʻana i nā lawelawe. Inā pōkole loa ka manawa, no ka laʻana, ʻeono kekona (hiki kēia i nā hui me nā kauā he nui (Tuchanka3 a me Tuchanka4)), ʻo ia hoʻi, aia ka hewa i ke kauā asynchronous a ʻaʻole i pili i ka hana ma kekahi ʻano; ʻaʻohe hoʻololi mokuʻāina cluster.
    • hoʻowalewale - hōʻike i ka laha (ka pololei) o ka waiwai naoh me ka hoʻohana ʻana i ke ʻano hoʻokaʻawale maʻamau.
    • helu — ehia mau manawa i hana ʻia ai kēia hoʻokolohua.
  2. Hiki i kahi log pōkole ke loiloi i ka hana a ka hui i kēia manawa. Hōʻike ʻia ka helu helu (hōʻoia), timestamp a me ka inoa o ka hana. ʻO ka holo lōʻihi (> 5 mau minuke) e hōʻike ana i kahi pilikia.
  3. Puʻuwai (naʻau) - manawa manawa. No ka loiloi maka o ka hana haku wahine Ua kākau mau ʻia ka manawa o kēia manawa i kāna papa me ka hoʻohana ʻana i ka float IP master. Inā kūleʻa, hōʻike ʻia ka hopena ma kēia panel.
  4. kuikui aku la (pulse) - "manawa i kēia manawa", i hoʻopaʻa mua ʻia e ka palapala Puʻuwai i haku, heluhelu mai ohou ma o kona IP lana. Hāʻawi iā ʻoe e nānā i ka hana o ke kauā a me ka replication. Ma Tuchanka1 ʻaʻohe kauā me ka IP float (ʻaʻohe kauā e hāʻawi i nā lawelawe), akā aia ʻelua mau manawa (DB), no laila ʻaʻole e hōʻike ʻia ma aneʻi. kuikui aku laa me ka Puʻuwai lua.
  5. Ka nānā ʻana i ke olakino cluster me ka hoʻohana ʻana i ka pono pcs mon. Hōʻike i ke ʻano, ka māhele ʻana o nā kumuwaiwai ma nā node a me nā ʻike pono ʻē aʻe.
  6. Hōʻike ʻia ka nānā ʻana o ka ʻōnaehana mai kēlā me kēia mīkini virtual ma ka hui. Nui aʻe paha nā panela e like me ka nui o nā mīkini virtual i loaʻa i ka pūpū. ʻElua kiʻi Hoʻouka CPU (ʻelua kaʻina hana i nā mīkini virtual), inoa mīkini virtual, Uku ʻōnaehana (i kapa ʻia ʻo Load Average no ka mea ʻoi aku ka awelika ma luna o 5, 10 a me 15 mau minuke), kaʻina hana ʻikepili a me ka hoʻokaʻawale hoʻomanaʻo.
  7. ʻO ka ʻimi o ka palapala e hoʻāʻo ana. I ka hopena o kahi hana hewa - kahi hikiwawe o ka hana a i ʻole kahi pōʻai kali pau ʻole - ma aneʻi hiki iā ʻoe ke ʻike i ke kumu o kēia ʻano.

Hana ʻia ka hoʻāʻo ʻana i ʻelua pae. ʻO ka mea mua, hele ka palapala i nā ʻano hoʻāʻo āpau, e koho maʻamau i kahi mīkini virtual kahi e hoʻohana ai i kēia hoʻāʻo. A laila hana ʻia kahi pōʻai pau ʻole o ka hoʻāʻo ʻana, koho ʻia nā mīkini virtual a me ka hewa i kēlā me kēia manawa. ʻO ka hoʻopau koke ʻana o ka hōʻike hoʻāʻo (papa lalo) a i ʻole ka loop loop pau ʻole o ke kali ʻana i kekahi mea (> 5 mau minuke manawa hoʻokō no hoʻokahi hana, ʻike ʻia kēia ma ka trace) e hōʻike ana ua hāʻule kekahi o nā hoʻāʻo ma kēia puʻupuʻu.

Loaʻa i kēlā me kēia hoʻokolohua nā hana penei:

  1. E hoʻomaka i kahi hana e hoʻohālike i kahi hewa.
  2. Makaukau? - ke kali nei no ka hoʻihoʻi ʻana o ka puʻupuʻu (ke hāʻawi ʻia nā lawelawe āpau).
  3. Hōʻike i ka manawa hoʻihoʻi puʻupuʻu (naoh).
  4. Hoʻopaʻa - ke "hoʻoponopono ʻia" ka hui. Ma hope o ia mea e hoʻi i kahi kūlana hana piha a mākaukau no ka hana hewa aʻe.

Eia ka papa inoa o nā hoʻokolohua me ka wehewehe ʻana i kā lākou hana:

  • ForkBomb: Hoʻokumu i "Ma waho o ka hoʻomanaʻo" me ka hoʻohana ʻana i kahi pōkā pōkā.
  • OutOfSpace: Ua piha ka paakiki. Akā, he hōʻailona ka hoʻāʻo; me ka haʻahaʻa haʻahaʻa i hana ʻia i ka wā o ka hoʻāʻo ʻana, ʻaʻole hāʻule ka PostgreSQL i ka wā i piha ai ka paʻakikī.
  • Postgres-Pepehi: pepehi iā PostgreSQL me ke kauoha killall -KILL postgres.
  • Postgres-STOP: kau i ke kauoha PostgreSQL killall -STOP postgres.
  • Mana aku: "de-energizes" i ka mīkini virtual me ke kauoha VBoxManage controlvm "виртуалка" poweroff.
  • hoʻopaʻa hou: hoʻonui i ka mīkini virtual me ke kauoha VBoxManage controlvm "виртуалка" reset.
  • SBD-STOP: hoʻokuʻu i ka daimonio SBD me ke kauoha killall -STOP sbd.
  • E hoʻopio: hoʻouna i kahi kauoha i ka mīkini virtual ma o SSH systemctl poweroff, ua pani ka ʻōnaehana me ka nani.
  • Unlink: kaʻawale pūnaewele, kauoha VBoxManage controlvm "виртуалка" setlinkstate1 off.

Ke hoʻopau nei i ka hoʻāʻo ʻana me ka hoʻohana ʻana i ke kauoha tmux maʻamau "kill-window" Ctrl-b &, a i ʻole ke kauoha "detach-client". Ctrl-b d: i kēia manawa pau ka hoʻāʻo ʻana, pani ʻo tmux, pio nā mīkini virtual.

ʻIke ʻia nā pilikia i ka wā hoʻāʻo

  • I kēia manawa kiai daimonio sbd hana i ka hooki ʻana i nā daemon i ʻike ʻia, ʻaʻole naʻe e hoʻokuʻu iā lākou. A ʻo ka hopena, nā hewa e hiki ai i ka hau hau wale nō Corosync и pacemaker, aole nae e kau ana sbd... No ka hōʻoia Corosync ua i PR#83 (ma GitHub ma sbd), ʻae ʻia i ka pae haku. Ua hoʻohiki lākou (ma PR #83) aia kekahi mea like no ka Pacemaker, ke manaʻolana nei au e ʻO RedHat 8 e hana. Akā ʻo ia mau "malfunctions" he speculative a hiki ke maʻalahi ke hoʻohālikelike ʻia me ka hoʻohana ʻana, no ka laʻana, killall -STOP corosync, akā ʻaʻole e hui i ke ola maoli.

  • У pacemaker i ka mana no CentOS 7 hoonoho hewa sync_timeout у mea kōrum, ma ka hopena inā i hāʻule hoʻokahi node, me ka mea hiki ke hoʻomaka hou ka node ʻelua, kahi e neʻe ai ka haku. Hoʻōla ʻia e ka hoʻonui sync_timeout у mea kōrum i ka wā hoʻolālā (ma ka script setup/setup1). ʻAʻole i ʻae ʻia kēia hoʻololi e nā mea hoʻomohala pacemaker, akā, ua hoʻohiki lākou e hoʻolālā hou i ka ʻōnaehana ma ke ʻano (i kekahi manawa i ʻike ʻole ʻia) e helu ʻia kēia manawa.

  • Inā hōʻike ka hoʻonohonoho waihona i kēlā LC_MESSAGES (memo kikokikona) Hiki ke hoʻohana ʻia Unicode, e.g. ru_RU.UTF-8, a laila i ka hoʻomaka ʻana postgres ma kahi kaiapuni ʻaʻole ʻo UTF-8 ka wahi, e ʻōlelo i kahi kaʻawale (eia kahu+pgsqlms(paf) holo postgres) alaila e loaʻa i ka log nā māka nīnau ma kahi o nā leka UTF-8. ʻAʻole ʻae nā mea hoʻomohala PostgreSQL i ka mea e hana ai i kēia hihia. ʻO ke kumukūʻai, pono ʻoe e hoʻokomo LC_MESSAGES=en_US.UTF-8 i ka hoʻonohonoho ʻana (hana) i kahi laʻana waihona.

  • Inā hoʻonoho ʻia ka wal_receiver_timeout (ma ka maʻamau ʻo 60s), a laila i ka wā o ka hoʻāʻo ʻo PostgreSQL-STOP ma ka haku ma nā pūʻulu tuchanka3 a me tuchanka4 ʻAʻole pili hou ka hana hou i ka haku hou. ʻO ka hoʻopiʻi ʻana aia ka synchronous, no laila ʻaʻole i kū ke kauā wale nō, akā ʻo ka haku hou. Hana ʻia ma ka hoʻonohonoho ʻana i ka wal_receiver_timeout=0 i ka hoʻonohonoho ʻana iā PostgreSQL.

  • I kekahi manawa ua ʻike au i ka hoʻopiʻi hou ʻana ma PostgreSQL i ka hoʻāʻo ForkBomb (hoʻonui ka hoʻomanaʻo). Ma hope o ForkBomb, ʻaʻole hiki i nā kauā ke hoʻopili hou i ka haku hou. Ua ʻike wale au i kēia ma nā pūʻulu tuchanka3 a me tuchanka4, kahi i maloʻo ai ka haku ma muli o ka replication synchronous. Ua hala ka pilikia ma hope o ka manawa lōʻihi (ma kahi o ʻelua hola). Pono e noiʻi hou aku e hoʻoponopono i kēia. Ua like nā hōʻailona me ka pahu mua, i kumu ʻia e kekahi kumu ʻē aʻe, akā me nā hopena like.

Krogan kiʻi i lawe ʻia mai Hoʻopau kiʻi me ka ʻae o ka mea kākau:

Hoʻohālike i nā puʻupuʻu failover ma muli o PostgreSQL a me Pacemaker

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka