Orchestrator a me VIP ma ke ʻano he haʻina HA no kahi pūʻulu MySQL

Ma Citymobil hoʻohana mākou i kahi waihona MySQL e like me kā mākou mālama ʻikepili hoʻomau. Loaʻa iā mākou nā pūʻulu waihona waihona no nā lawelawe a me nā kumu like ʻole.

ʻO ka loaʻa mau o ka haku he hōʻailona koʻikoʻi o ka hana o ka ʻōnaehana holoʻokoʻa a me kāna mau ʻāpana. ʻO ka hoʻihoʻi hou ʻana i ka puʻupuʻu ʻakomi i ka wā o ka hemahema o ka haku e hōʻemi nui i ka manawa pane hanana a me ka manawa hoʻomaha o ka ʻōnaehana. Ma kēia ʻatikala, e nānā au i kahi hoʻolālā kiʻekiʻe loa (HA) no kahi pūʻulu MySQL e pili ana MySQL Orchestrator a me nā helu IP virtual (VIP).

Orchestrator a me VIP ma ke ʻano he haʻina HA no kahi pūʻulu MySQL

HA hoʻonā ma muli o VIP

ʻO ka mea mua, e haʻi pōkole wau iā ʻoe i ke ʻano o kā mākou ʻōnaehana mālama data.

Hoʻohana mākou i kahi papa hana hoʻopiʻi maʻamau me hoʻokahi haku hiki ke kākau a me nā kope heluhelu-wale wale nō. Hiki ke loaʻa i kahi puʻupuʻu kahi haku waena - he node he kope a he haku no nā poʻe ʻē aʻe. Loaʻa nā mea kūʻai aku i nā replicas ma o HAProxy, kahi e hiki ai i ka hoʻoili ukana a me ka maʻalahi scaling. ʻO ka hoʻohana ʻana o HAProxy ma muli o nā kumu mōʻaukala, a ke hele nei mākou i kēia manawa i ka neʻe ʻana i ProxySQL.

Hana ʻia ka hana hou ʻana ma ke ʻano semi-synchronous ma muli o GTID. ʻO ia hoʻi, pono e hoʻopaʻa inoa i hoʻokahi kope ma mua o ka manaʻo ʻia he kūleʻa. Hāʻawi kēia ʻano hana hoʻopiʻi i kahi kaulike maikaʻi loa ma waena o ka hana a me ka palekana ʻikepili i ka wā o ka hemahema master node. Hoʻololi ʻia nā hoʻololi āpau mai ka haku i nā replicas e hoʻohana ana Row Based Replication (RBR), akā loaʻa paha i kekahi mau node mixed binlog format.

Hoʻoponopono ka mea hoʻokani pila i ke kūlana o ka topology cluster, kānana i ka ʻike i loaʻa, a inā e kū mai nā pilikia, hiki iā ia ke hoʻomaka i kahi kaʻina hana hoʻihoʻi. Na ka mea hoʻomohala ke kuleana no ke kaʻina hana ponoʻī, no ka mea hiki ke hoʻokō ʻia ma nā ʻano like ʻole: e pili ana i ka VIP, DNS, me ka hoʻohana ʻana i nā lawelawe ʻike lawelawe a i ʻole nā ​​​​mekanika kākau ponoʻī.

ʻO kahi ala maʻalahi e hoʻihoʻi i kahi haku inā hāʻule ʻo ia ka hoʻohana ʻana i nā helu VIP e lana ana.

He aha kāu e ʻike ai e pili ana i kēia hoʻonā ma mua o ka neʻe ʻana i mua:

  • ʻO ka VIP kahi IP IP i pili ʻole me kahi kikowaena pūnaewele kino kikoʻī. Inā hāʻule ka node a i ʻole i ka manawa o ka mālama ʻana, hiki iā mākou ke hoʻololi i ka VIP i kahi kumuwaiwai ʻē aʻe me ka liʻiliʻi o ka downtime.
  • ʻO ka hoʻokuʻu ʻana a me ka hoʻopuka ʻana i kahi leka uila IP virtual he hana maʻalahi a wikiwiki hoʻi.
  • No ka hana pū me VIP, pono ʻoe e komo i ke kikowaena ma o SSH, a i ʻole ka hoʻohana ʻana i nā pono kūikawā, no ka laʻana, keepalived.

E nānā kāua i nā pilikia me kā mākou wizard a noʻonoʻo pehea e hana ai ka mīkini hoʻihoʻi maʻalahi.

Ua nalowale ka hoʻohui pūnaewele me ka haku, a i ʻole ua kū mai kekahi pilikia ma ka pae ʻenehana, a ʻaʻole i loaʻa ke kikowaena.

  1. Hoʻopau ka mea hoʻokani i ka topology cluster, hōʻike kēlā me kēia kope ʻaʻole i loaʻa ka haku. Hoʻomaka ka mea hoʻokani i ke kaʻina o ke koho ʻana i kahi kope kūpono no ke kuleana o ka haku hou a hoʻomaka i ka hoʻōla.
  2. Ke hoʻāʻo nei mākou e wehe i ka VIP mai ka haku kahiko - ʻaʻohe kūleʻa.
  3. Hoʻololi ka replica i ke kuleana o ka haku. Ke kūkulu hou ʻia nei ka topology.
  4. Hoʻohui i kahi kikowaena pūnaewele hou me VIP. No ka mea ʻaʻole hiki ke wehe i ka VIP, hoʻomaka mākou e hoʻouna i kahi noi ma hope ARP manuahi. ʻO kēia ʻano noi/pane e ʻae iā ʻoe e hōʻano hou i ka papa kuhikuhi IP a me MAC address mapping table ma nā hoʻololi pili, a laila e haʻi aku iā ʻoe ua neʻe kā mākou VIP. Hoʻemi kēia i ka likelihood split brain i ka hoi ana mai o ka haku kahiko.
  5. Hoʻouna koke ʻia nā pilina hou a pau i ka haku hou. Hana ʻia nā pilina kahiko a kāhea ʻia nā kelepona i ka waihona ma ka pae noi.

Ke hana nei ke kikowaena ma ke ʻano maʻamau, ua loaʻa kahi hemahema ma ka pae DBMS

Ua like ka algorithm me ka hihia mua: hoʻonui i ka topology a hoʻomaka i ke kaʻina hana hoʻihoʻi. No ka loaʻa ʻana o ke kikowaena, hoʻokuʻu maikaʻi mākou i ka VIP ma ka haku kahiko, hoʻololi iā ia i ka mea hou, a hoʻouna i kekahi mau noi ARP. ʻAʻole pono ka hoʻihoʻi ʻana mai o ka haku kahiko i ka pūʻulu i kūkulu hou ʻia a me ka hana o ka noi.

Nā pilikia'ē aʻe

ʻO ka hemahema o nā kope a i ʻole nā ​​haku waena aole alakai i nā hana ʻakomi a koi i ka hana lima.

Hoʻohui mau ʻia kahi kikowaena pūnaewele virtual no ka manawa pōkole, ʻo ia hoʻi, ma hope o ka hoʻomaka hou ʻana o kahi kikowaena, ʻaʻole i hāʻawi ʻia ka VIP. Hoʻomaka kēlā me kēia waihona waihona ma ke ʻano heluhelu-wale nō ma ke ʻano maʻamau, hoʻololi koke ka mea hoʻokani i ka haku hou e kākau a hoʻāʻo e hoʻokomo. read only ma ka haku kahiko. ʻO kēia mau hana e hoʻemi i ka likelihood split brain.

Hiki mai nā pilikia i ka wā o ka hoʻihoʻi ʻana, pono e hoʻolaha ʻia ma o ka orchestrator UI me ka hoʻohui ʻana i nā mea hana maʻamau. Ua hoʻonui mākou i ka REST API ma ka hoʻohui ʻana i kēia hiʻohiʻona (PR ke nānā ʻia nei i kēia manawa).

Hōʻike ʻia ke kiʻi nui o ka haʻina HA ma lalo nei.

Orchestrator a me VIP ma ke ʻano he haʻina HA no kahi pūʻulu MySQL

Ke koho ʻana i haku hou

He akamai ka mea hoʻokani pila a hoʻāʻo e koho ʻo ke kope kūpono loa ma ke ʻano he haku hou e like me nā pae hoʻohālike:

  • aia ke kope ma hope o ka haku;
  • ʻO ka mana MySQL o ka haku a me ke kope;
  • ʻano hoʻopiʻi (RBR, SBR a hui pū paha);
  • wahi i loko o nā kikowaena ʻikepili like a ʻokoʻa paha;
  • loaʻa errant GTID - nā hana i hana ʻia ma ke kope a ʻaʻole ma ka haku;
  • Ua mālama pū ʻia nā lula koho maʻamau.

ʻAʻole kēlā me kēia cue he moho kūpono no ka haku. No ka laʻana, hiki ke hoʻohana ʻia kahi kope no ka hoʻihoʻi ʻana i ka ʻikepili, a i ʻole ke kikowaena ʻoi aku ka nāwaliwali o ka hoʻonohonoho ʻenehana. Mea hookani pila kākoʻo nā lula manual e hiki ai iā ʻoe ke hoʻopilikino i kāu mau koho koho mai ka mea i makemake ʻole ʻia.

Pane a me ka manawa ho'ōla

I ka hopena o kahi hanana, he mea nui ia e hōʻemi i ka manawa haʻahaʻa o ka ʻōnaehana, no laila e noʻonoʻo kākou i nā ʻāpana MySQL e pili ana i ka hana ʻana a me ka hoʻonui ʻana i ka topology cluster e ka orchestrator:

  • slave_net_timeout - ka helu o nā kekona i ka manawa e kali ai ka replica no ka ʻikepili hou a i ʻole ka hōʻailona puʻuwai e hōʻea mai ka haku ma mua o ka ʻike ʻia ʻana o ka pilina ua nalowale a pili hou. ʻO ka haʻahaʻa o ka waiwai, ʻoi aku ka wikiwiki o ka replica e hiki ke hoʻoholo ua haki ke kamaʻilio me ka haku. Hoʻonoho mākou i kēia waiwai i 5 kekona.
  • MASTER_CONNECT_RETRY — ka helu o nā kekona ma waena o nā hoʻāʻo hoʻohui hou. Inā pilikia ka pūnaewele, ʻo ka haʻahaʻa haʻahaʻa no kēia ʻāpana e ʻae i ka hoʻopili hou ʻana a pale i ke kaʻina hana hoʻihoʻi cluster mai ka hoʻomaka ʻana. ʻO ka waiwai i manaʻo ʻia he 1 kekona.
  • MASTER_RETRY_COUNT - ka nui o nā ho'āʻo hoʻohui hou.
  • MASTER_HEARTBEAT_PERIOD - ka wā ma kekona ma hope o ka hoʻouna ʻana o ka haku i ka hōʻailona puʻuwai. Default i ka hapalua o ka waiwai slave_net_timeout.

Nā koho mea hoʻokani pila:

  • DelayMasterPromotionIfSQLThreadNotUpToDate - ina like true, a laila, ʻaʻole e hoʻohana ʻia ke kuleana kumu ma ka replica moho a hiki i ka pau ʻana o ke kaula SQL o ka replica i nā hana a pau i hoʻohana ʻole ʻia mai ka Relay Log. Hoʻohana mākou i kēia koho e pale aku i ka nalo ʻana i nā kālepa ke hāʻule nā ​​​​replicas a pau i hope.
  • InstancePollSeconds - ka pinepine o ke kūkulu ʻana a me ka hoʻonui ʻana i ka topology.
  • RecoveryPollSeconds - ka pinepine o ka loiloi topology. Inā ʻike ʻia kahi pilikia, hoʻomaka ka hoʻihoʻi topology. ʻO kēia kūmau mau, like me 1 kekona.

Hoʻopili ʻia kēlā me kēia puʻupuʻu e ka mea hoʻokani pila i kēlā me kēia InstancePollSeconds kekona Ke ʻike ʻia kahi pilikia, koi ʻia ka mokuʻāina cluster hōʻano hou, a laila hoʻoholo ka hoʻoholo hope e hana i ka hoʻihoʻi. Ma ka hoʻokolohua ʻana me nā ʻokoʻa waihona a me nā ʻāpana orkestra, ua hiki iā mākou ke hoʻemi i ka pane a me ka manawa hoʻihoʻi i 30 kekona.

Kū hoʻāʻo

Hoʻomaka mākou e hoʻāʻo i ka hoʻolālā HA me ka hoʻomohala ʻana i kahi kūloko papa hoao a me ka hoʻokō hou aku i ka hoʻāʻo a me ka hana ʻana. Hoʻopili piha ʻia ke kūlana kūloko e pili ana iā Docker a hiki iā ʻoe ke hoʻokolohua me ka hoʻonohonoho ʻana o ka orchestrator a me ka pūnaewele, e hoʻonui i ka cluster mai nā kikowaena 2-3 a hiki i nā haneli, a hana i nā hoʻomaʻamaʻa i kahi wahi palekana.

I ka wā o ka hoʻomaʻamaʻa, koho mākou i kekahi o nā ala emulation pilikia: pana koke i ka haku me ka hoʻohana ʻana kill -9, hoʻopau mālie i ke kaʻina hana a hoʻōki i ke kikowaena (docker-compose stop), hoʻohālikelike i nā pilikia pūnaewele me ka hoʻohana ʻana iptables -j REJECT ai ole ia, iptables -j DROP. Manaʻo mākou i kēia mau hopena:

  • e ʻike ka mea hoʻokani pila i nā pilikia me ka haku a hoʻohou i ka topology ma mua o 10 kekona;
  • e hoʻomaka koke ke kaʻina hana hoʻihoʻi: e hoʻololi ka hoʻonohonoho pūnaewele, e hele ke kuleana o ka haku i ka replica, e kūkulu hou ʻia ka topology;
  • hiki ke kākau ʻia ka haku hou, ʻaʻole e nalowale nā ​​kope ola i ke kaʻina hana hou;
  • e hoʻomaka ka ʻikepili e kākau ʻia i ka haku hou a hana hou ʻia;
  • ʻAʻole ʻoi aku ka nui o ka manawa hoʻihoʻi ma mua o 30 kekona.

E like me kāu e ʻike ai, ʻokoʻa ke ʻano o ka ʻōnaehana i ka hoʻāʻo ʻana a me ka hana ʻana ma muli o nā ʻokoʻa ʻokoʻa a me nā hoʻonohonoho pūnaewele, ʻokoʻa i ka synthetic a me ka ukana maoli, etc. No laila, hana mākou i kēlā me kēia manawa i nā hoʻomaʻamaʻa i nā kūlana maoli, e nānā i ke ʻano o ka ʻōnaehana i ka wā e nalowale ai ka pilina pūnaewele a i ʻole nā ​​​​ʻāpana pilikino. I ka wā e hiki mai ana, makemake mākou e kūkulu i kahi ʻōnaehana like loa no nā kaiapuni ʻelua a hoʻomaʻamaʻa i kāna hoʻāʻo.

haʻina

ʻO ke olakino o ka node pūnaewele mālama nui kekahi o nā hana nui o ka SRE a me ka hui hana. ʻO ka hoʻokō ʻana o ka mea hoʻokele a me ka hoʻonā HA e pili ana i ka VIP ua ʻae iā mākou e hoʻokō i nā hopena aʻe:

  • ʻike pono i nā pilikia me ka topology o ka pūʻulu waihona;
  • pane 'akomi a wikiwiki hoʻi i nā hanana e pili ana i ka haku, e hōʻemi ana i ka manawa hoʻomaha o ka ʻōnaehana.

Eia naʻe, aia nā palena a me nā hemahema o ka hopena:

  • ʻO ka hoʻonui ʻana i ka hoʻolālā HA i kekahi mau kikowaena data e koi ʻia kahi pūnaewele L2 hoʻokahi ma waena o lākou;
  • Ma mua o ka hāʻawi ʻana iā VIP i ka haku hou, pono mākou e hoʻokuʻu iā ia ma ka mea kahiko. ʻO ke kaʻina hana he sequential, e hoʻonui i ka manawa hoʻihoʻi;
  • ʻO ka hoʻokuʻu ʻana i ka VIP pono ke komo SSH i ke kikowaena, a i ʻole kekahi ʻano hana ʻē aʻe o ke kāhea ʻana i nā kaʻina hana mamao. No ka loaʻa ʻana o ka server a i ʻole ka ʻikepili i nā pilikia i kumu i ke kaʻina hana hoʻihoʻi, ʻaʻole hiki iā mākou ke maopopo e hoʻopau pono ka wehe ʻana o VIP. A hiki i kēia ke alakaʻi i ke ʻano o nā kikowaena ʻelua me ka helu IP virtual like a me kahi pilikia split brain.

E pale aku split brain, hiki iā ʻoe ke hoʻohana i ke ʻano STONITH ("Shoot The Other Node In The Head"), e hoʻokaʻawale a hoʻopau paha i ka node pilikia. Aia kekahi mau ala ʻē aʻe e hoʻokō ai i ka loaʻa kiʻekiʻe o ka puʻupuʻu: kahi hui o VIP a me DNS, ʻike lawelawe a me nā lawelawe proxy, synchronous replication a me nā ʻano hana ʻē aʻe i loaʻa i kā lākou mau hemahema a me nā pono.

Ua kamaʻilio wau e pili ana i kā mākou ala e hana ai i kahi pūʻulu failover MySQL. He maʻalahi ke hoʻokō a hāʻawi i kahi pae kūpono o ka hilinaʻi ma lalo o nā kūlana o kēia manawa. I ka ulu ʻana o ka ʻōnaehana holoʻokoʻa a me ka hoʻomohala ʻana i nā ʻōnaehana, e ulu aʻe kēia ala.

Source: www.habr.com

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