Pehea ka hoʻokō ʻia ʻana o ka hoʻolālā pūnaewele hoʻomanawanui i ka Mail.ru Cloud Solutions platform

Pehea ka hoʻokō ʻia ʻana o ka hoʻolālā pūnaewele hoʻomanawanui i ka Mail.ru Cloud Solutions platform

Aloha, Habr! ʻO wau ʻo Artem Karamyshev, ke poʻo o ka hui hoʻokele ʻōnaehana Mail.Ru Cloud Solutions (MCS). Ua loaʻa iā mākou nā huahana hou he nui i ka makahiki i hala. Makemake mākou e hōʻoia i ka maʻalahi o ka hoʻonui ʻia ʻana o nā lawelawe API, hoʻomanawanui hewa, a mākaukau no ka ulu wikiwiki ʻana i ka ukana mea hoʻohana. Hoʻokomo ʻia kā mākou kahua ma OpenStack, a makemake wau e haʻi iā ʻoe i nā pilikia hoʻomanawanui hewa ʻole a mākou e hoʻoponopono ai no ka loaʻa ʻana o kahi ʻōnaehana hoʻomanawanui. Manaʻo wau he mea hoihoi kēia no ka poʻe e hoʻomohala nei i nā huahana ma OpenStack.

ʻO ka ʻae ʻana i ka hewa holoʻokoʻa o kahi paepae ʻo ia ka resilience o kāna mau ʻāpana. No laila e hele mālie mākou i nā pae āpau kahi i ʻike ai mākou i nā pilikia a pani iā ​​​​lākou.

ʻO ka wikiō wikiō o kēia moʻolelo, ʻo ke kumu mua o ia mea he hōʻike ma ka hālāwai Uptime lā 4, i hoʻonohonoho ʻia e ITSumma, hiki iā ʻoe ke ʻike ma ke kahua YouTube Community Uptime.

ʻO ke kūpaʻa o ka hoʻolālā kino

Hoʻokumu ʻia ka ʻāpana ākea o ke ao MCS i ʻelua mau kikowaena data Tier III, ma waena o lākou aia kona ʻeleʻele ponoʻī, mālama ʻia ma ka pae kino e nā ala like ʻole, me ka throughput o 200 Gbit/s. Hāʻawi ʻo Tier III i ka pae kūpono o ka hoʻomanawanui hewa no ka ʻōnaehana kino.

Mālama ʻia ka fiber ʻeleʻele ma nā pae kino a me nā pae kūpono. Ua hoʻomau ke kaʻina hana hoʻopaʻa ala, ua kū mai nā pilikia, a ke hoʻomaikaʻi mau nei mākou i ke kamaʻilio ma waena o nā kikowaena data.

No ka laʻana, ʻaʻole i liʻuliʻu, ʻoiai e hana ana i loko o ka luawai kokoke i kekahi o nā kikowaena data, ua haki ka mea ʻeli i kahi paipu, a i loko o kēia paipu aia kahi uwea optical a me ke kelepona. ʻO kā mākou ala kamaʻilio hoʻomanawanui hewa me ke kikowaena data i lilo i mea palupalu i kekahi manawa, i loko o ka luawai. No laila, ua nalowale mākou i kahi ʻāpana o ka ʻoihana. Ua hoʻoholo mākou a ua hana i kekahi mau hana, me ka hoʻokomo ʻana i nā optics hou i loko o ka pūnāwai pili.

Ma nā kikowaena ʻikepili, aia nā wahi o nā mea hoʻolako kamaʻilio a mākou e hoʻolaha ai i kā mākou prefix ma o BGP. No kēlā me kēia kuhikuhi pūnaewele, kohoʻia ka metric maikaʻi loa, e hiki ai i nā mea kūʻai likeʻole ke hāʻawiʻia me ka maikaʻi o ka pilina. Inā hāʻule ka kamaʻilio ʻana ma o kekahi mea hoʻolako, kūkulu hou mākou i kā mākou alahele ma o nā mea hoʻolako i loaʻa.

Inā hāʻule ka mea hoʻolako, hoʻololi koke mākou i ka mea aʻe. I ka hopena o ka hāʻule ʻole o kekahi o nā kikowaena data, loaʻa iā mākou kahi kope aniani o kā mākou lawelawe ma ke kikowaena data lua, e lawe ana i ka ukana holoʻokoʻa.

Pehea ka hoʻokō ʻia ʻana o ka hoʻolālā pūnaewele hoʻomanawanui i ka Mail.ru Cloud Solutions platform
ʻO ke kūpaʻa o ke kino kino

ʻO ka mea a mākou e hoʻohana ai no ka ʻae ʻana i ka hewa pae noi

Kūkulu ʻia kā mākou lawelawe ma luna o nā ʻāpana opensource.

ExaBGP He lawelawe ia e hoʻokō ana i kekahi mau hana me ka hoʻohana ʻana i ka protocol routing dynamic based BGP. Hoʻohana ikaika mākou iā ia no ka hoʻolaha ʻana i kā mākou mau helu IP papa inoa keʻokeʻo e komo ai nā mea hoʻohana i ka API.

HAProxy he mea kaulike haawe kiʻekiʻe e hiki ai iā ʻoe ke hoʻonohonoho i nā lula kaulike maʻalahi loa ma nā pae like ʻole o ke kumu hoʻohālike OSI. Hoʻohana mākou iā ia e kaulike i mua o nā lawelawe āpau: nā ʻikepili, nā mea hoʻolaha memo, nā lawelawe API, nā lawelawe pūnaewele, kā mākou papahana kūloko - aia nā mea āpau ma hope o HAProxy.

palapala noi API - he palapala noi pūnaewele i kākau ʻia ma ka python, kahi e hoʻokele ai ka mea hoʻohana i kāna ʻoihana a me kāna lawelawe.

Noi hana (ma hope o ka mea hana maʻalahi) - i nā lawelawe OpenStack, he daemon ʻoihana kēia e hiki ai iā ʻoe ke hoʻolaha i nā kauoha API i ka ʻōnaehana. No ka laʻana, hana ʻia ka disk i loko o ka mea hana, a loaʻa ka noi hana ma ka API noi.

Hoʻolālā Kūlana OpenStack maʻamau

ʻO ka hapa nui o nā lawelawe i kūkulu ʻia no OpenStack e hoʻāʻo e hahai i kahi paradigm hoʻokahi. ʻO ka lawelawe maʻamau he 2 mau ʻāpana: API a me nā limahana (nā mea hoʻokō hope). Ma keʻano he kūlana, he API kahi noi WSGI i ka python, i hoʻokuʻu ʻia ma ke ʻano he kaʻina kūʻokoʻa (daemon), a i ʻole ka hoʻohana ʻana i kahi kikowaena pūnaewele Nginx a Apache i mākaukau. Hoʻoponopono ka API i ka noi a ka mea hoʻohana a hāʻawi i nā ʻōlelo aʻoaʻo hou i ka noi limahana no ka hoʻokō. Hoʻololi ʻia ka hoʻololi ʻana me ka hoʻohana ʻana i kahi mea hoʻolaha memo, ʻo RabbitMQ maʻamau, kākoʻo maikaʻi ʻia nā mea ʻē aʻe. Ke hiki aku nā memo i ka mea hoʻolimalima, hana ʻia e nā limahana a, inā pono, e hoʻihoʻi i kahi pane.

Hoʻopili kēia paradigm i nā wahi maʻamau o ka hemahema: RabbitMQ a me ka waihona. Akā ua hoʻokaʻawale ʻia ʻo RabbitMQ i loko o hoʻokahi lawelawe a, ma ke kumumanaʻo, hiki ke hoʻokahi no kēlā me kēia lawelawe. No laila, ma MCS mākou e hoʻokaʻawale i kēia mau lawelawe e like me ka hiki; no kēlā me kēia papahana mākou e hana i kahi waihona ʻokoʻa, kahi RabbitMQ ʻokoʻa. He maikaʻi kēia ala no ka mea inā he ulia pōpilikia ma kekahi mau wahi pilikia, ʻaʻole i haki ka lawelawe holoʻokoʻa, akā he hapa wale nō.

ʻAʻole palena ka helu o nā noi limahana, no laila hiki i ka API ke hoʻonui maʻalahi ma hope o nā mea kaulike i mea e hoʻonui ai i ka hana a me ka hoʻomanawanui hewa.

Pono kekahi mau lawelawe i ka hoʻonohonoho ʻana i loko o ka lawelawe i ka wā e hana ʻia ai nā hana maʻamau ma waena o nā API a me nā limahana. I kēia hihia, hoʻohana ʻia kahi kikowaena hoʻonohonoho hoʻokahi, kahi ʻōnaehana cluster e like me Redis, Memcache, etcd, e hiki ai i kekahi limahana ke haʻi aku i kekahi ua hāʻawi ʻia kēia hana iā ia ("ʻoluʻolu, mai lawe ʻoe"). Hoʻohana mākou etcd. E like me ke kānāwai, kamaʻilio ikaika nā limahana me ka waihona, kākau a heluhelu i ka ʻike mai laila. Hoʻohana mākou i ka mariadb ma ke ʻano he waihona, aia ma kahi hui multimaster.

Hoʻonohonoho ʻia kēia lawelawe hoʻokahi maʻamau ma ke ʻano i ʻae ʻia no OpenStack. Hiki ke noʻonoʻo ʻia he ʻōnaehana paʻa, kahi e ʻike ʻia ai nā ʻano o ka scaling a me ka hoʻomanawanui hewa. No ka laʻana, no ka hoʻomanawanui hewa ʻana o ka API, ua lawa ia e kau i kahi mea kaulike i mua o lākou. Loaʻa ka hoʻonui ʻana i nā limahana ma ka hoʻonui ʻana i kā lākou helu.

ʻO ka wahi nāwaliwali i ka papahana holoʻokoʻa ʻo RabbitMQ a me MariaDB. Pono ko lākou hoʻolālā ʻana i kahi ʻatikala kaʻawale. Ma kēia ʻatikala makemake wau e nānā i ka hoʻomanawanui hewa API.

Pehea ka hoʻokō ʻia ʻana o ka hoʻolālā pūnaewele hoʻomanawanui i ka Mail.ru Cloud Solutions platform
Opentack Application Architecture. ʻO ke kaulike a me ka hoʻomanawanui hewa o ka paepae ao

Hana i ka HAProxy balancer hewa-tolerant me ka hoʻohana ʻana iā ExaBGP

No ka hoʻonui ʻana i kā mākou mau API, ka wikiwiki a me ka hoʻomanawanui hewa, kau mākou i kahi mea kaulike ukana i mua o lākou. Ua koho mākou iā HAProxy. I koʻu manaʻo, loaʻa iā ia nā hiʻohiʻona pono a pau no kā mākou hana: ke kaupaona ʻana i nā pae OSI he nui, kahi hoʻokele hoʻokele, ka maʻalahi a me ka scalability, ka nui o nā ʻano kaulike, kākoʻo no nā papaʻaina.

ʻO ka pilikia mua i pono e hoʻoponopono ʻia ʻo ka hoʻomanawanui hewa o ka mea kaulike ponoʻī. ʻO ka hoʻokomo wale ʻana i kahi mea kaulike e hana pū ai i kahi hemahema: haki ka mea kaulike a hāʻule ka lawelawe. No ka pale ʻana i kēia, ua hoʻohana mākou i ka HAProxy me ExaBGP.

ʻAe ʻo ExaBGP iā ʻoe e hoʻokō i kahi mīkini no ka nānā ʻana i ke kūlana o kahi lawelawe. Ua hoʻohana mākou i kēia mīkini e nānā i ka hana o HAProxy a, inā pilikia, hoʻopau i ka lawelawe HAProxy mai BGP.

Hoʻolālā ExaBGP+HAProxy

  1. Hoʻokomo mākou i ka polokalamu pono, ExaBGP a me HAProxy, ma ʻekolu mau kikowaena.
  2. Hana mākou i ka loopback interface ma kēlā me kēia kikowaena.
  3. Ma nā kikowaena ʻekolu, hāʻawi mākou i ka leka uila IP keʻokeʻo like i kēia interface.
  4. Hoʻolaha ʻia kahi leka uila IP keʻokeʻo i ka Pūnaewele ma o ExaBGP.

Loaʻa ka hoʻomanawanui hewa ma ka hoʻolaha ʻana i ka leka uila IP like mai nā kikowaena ʻekolu. Mai kahi ʻike pūnaewele, hiki ke ʻike ʻia ka helu wahi like mai ʻekolu mau hops hou aʻe. ʻIke ka mea alalai i ʻekolu ala like, koho i ka mea kiʻekiʻe loa o lākou e pili ana i kāna metric ponoʻī (ʻo ia ka mea maʻamau i ka koho like), a ke hele nei ke kaʻa i kekahi o nā kikowaena.

I ka hihia o nā pilikia me ka hana o HAProxy a i ʻole kahi kikowaena server, hoʻopau ʻo ExaBGP i ka hoʻolaha ʻana i ke ala, a hoʻololi mālie ke kaʻa i kahi kikowaena ʻē aʻe.

No laila, ua hoʻokō mākou i ka hoʻomanawanui hewa o ka mea kaulike.

Pehea ka hoʻokō ʻia ʻana o ka hoʻolālā pūnaewele hoʻomanawanui i ka Mail.ru Cloud Solutions platform
Ka hoʻomanawanui hewa o nā mea kaulike HAProxy

Ua ʻike ʻole ʻia ka papahana: ua aʻo mākou i ka mālama ʻana iā HAProxy, akā ʻaʻole i aʻo pehea e puʻunaue i ka ukana i loko o nā lawelawe. No laila, ua hoʻonui liʻiliʻi mākou i kēia kumumanaʻo: ua neʻe mākou i ke kaulike ma waena o nā helu IP keʻokeʻo.

Ke kaulike ma luna o DNS me BGP

ʻAʻole i hoʻoholo ʻia ka pilikia o ka hoʻohālikelike ʻana i kā mākou HAProxy. Eia naʻe, hiki ke hoʻoholo maʻalahi, e like me kā mākou i hana ai ma aneʻi.

No ke kaulike ʻana i ʻekolu mau kikowaena pono ʻoe i 3 mau IP keʻokeʻo a me DNS kahiko maikaʻi. Hoʻoholo ʻia kēlā me kēia mau ʻōlelo ma ka loopback interface o kēlā me kēia HAProxy a hoʻolaha ʻia i ka Pūnaewele.

Ma OpenStack, e hoʻokele i nā kumuwaiwai, hoʻohana ʻia kahi papa kuhikuhi lawelawe, e kuhikuhi ana i ka API hope o kahi lawelawe. Ma kēia papa kuhikuhi mākou e hoʻopaʻa inoa i kahi inoa inoa - public.infra.mail.ru, i hoʻoholo ʻia ma o DNS e ʻekolu mau helu IP ʻokoʻa. ʻO ka hopena, loaʻa iā mākou ka hoʻoili ukana ma waena o ʻekolu mau helu ma o DNS.

Akā mai ka hoʻolaha ʻana i nā leka IP keʻokeʻo ʻaʻole mākou e hoʻomalu i nā mea koho koho kikowaena, ʻaʻole i kaulike kēia. ʻO ka maʻamau, hoʻokahi wale nō kikowaena e koho ʻia ma muli o ke kūlana kiʻekiʻe o ka IP address, a ʻo nā mea ʻelua ʻē aʻe e hana ʻole no ka mea ʻaʻohe metric i kuhikuhi ʻia ma BGP.

Hoʻomaka mākou e hoʻouna i nā ala ma o ExaBGP me nā metric like ʻole. Hoʻolaha kēlā me kēia mea kaulike i nā helu IP keʻokeʻo ʻekolu, akā hoʻokahi o lākou, ka mea nui no kēia mea kaulike, hoʻolaha ʻia me ka metric haʻahaʻa. No laila, ʻoiai e hoʻohana ana nā mea kaulike ʻekolu, nā kelepona i ka helu IP mua e hele i ka mea kaulike mua, kāhea i ka lua i ka lua, a kāhea i ke kolu i ke kolu.

He aha ka hopena ke hāʻule kekahi o nā mea kaulike? Inā hāʻule kekahi mea kaulike, hoʻolaha ʻia kāna helu nui mai nā mea ʻelua ʻē aʻe, a hāʻawi hou ʻia ke kaʻa ma waena o lākou. No laila, hāʻawi mākou i ka mea hoʻohana i nā helu IP i ka manawa hoʻokahi ma o DNS. Ma ke kaulike ʻana e DNS a me nā metric ʻokoʻa, loaʻa iā mākou ka puʻunaue like ʻana o ka ukana ma nā mea kaulike ʻekolu. A i ka manawa like ʻaʻole mākou e nalowale i ka hoʻomanawanui hewa.

Pehea ka hoʻokō ʻia ʻana o ka hoʻolālā pūnaewele hoʻomanawanui i ka Mail.ru Cloud Solutions platform
ʻO ke kaulike HAProxy ma muli o DNS + BGP

Ka pilina ma waena o ExaBGP a me HAProxy

No laila, ua hoʻokō mākou i ka hoʻomanawanui hewa inā haʻalele ke kikowaena, ma muli o ke kāpae ʻana i ka hoʻolaha ʻana o nā ala. Akā hiki iā HAProxy ke pani no nā kumu ʻē aʻe ma mua o ka hemahema o ka server: nā hewa hoʻokele, nā hemahema i loko o ka lawelawe. Makemake mākou e wehe i ka mea kaulike haʻihaʻi mai lalo o ka ukana i kēia mau hihia, a pono mākou i kahi ʻano hana ʻē aʻe.

No laila, i ka hoʻonui ʻana i ka papahana mua, ua hoʻokō mākou i ka puʻuwai puʻuwai ma waena o ExaBGP a me HAProxy. He polokalamu polokalamu kēia o ka pilina ma waena o ExaBGP a me HAProxy, ke hoʻohana ʻo ExaBGP i nā palapala maʻamau e nānā i ke kūlana o nā noi.

No ka hana ʻana i kēia, pono ʻoe e hoʻonohonoho i kahi mea nānā olakino ma ka config ExaBGP, hiki ke nānā i ke kūlana o HAProxy. I kā mākou hihia, ua hoʻonohonoho mākou i ka backend olakino ma HAProxy, a mai ka ʻaoʻao ExaBGP mākou e nānā me kahi noi GET maʻalahi. Inā pau ka hoʻolaha ʻana, a laila ʻaʻole hana ʻo HAProxy a ʻaʻohe pono e hoʻolaha.

Pehea ka hoʻokō ʻia ʻana o ka hoʻolālā pūnaewele hoʻomanawanui i ka Mail.ru Cloud Solutions platform
HAProxy Nānā Ola

HAProxy Peers: hoʻonohonoho manawa

ʻO ka mea aʻe e hana ai, ʻo ia ka synchronize i nā kau. I ka hana ʻana ma o nā mea kaulike i puʻunaue ʻia, paʻakikī ka hoʻonohonoho ʻana i ka mālama ʻana i ka ʻike e pili ana i nā kau mea kūʻai aku. Akā ʻo HAProxy kekahi o nā mea kaulike liʻiliʻi e hiki ke hana i kēia ma muli o ka hana Peers - ka hiki ke hoʻololi i nā papa kau ma waena o nā kaʻina HAProxy like ʻole.

Aia nā ʻano kaulike like ʻole: nā mea maʻalahi e like me puni-robin, a hoʻopaneʻe ʻia, ke hoʻomanaʻo ʻia ke kau o ka mea kūʻai aku, a i kēlā me kēia manawa e hoʻopau ʻo ia ma ka server like me ka wā ma mua. Ua makemake mākou e hoʻokō i ka koho lua.

Hoʻohana ʻo HAProxy i nā papa lāʻau no ka mālama ʻana i nā manawa o nā mea kūʻai aku o kēia mīkini. Mālama lākou i ka helu IP kumu o ka mea kūʻai aku, ka helu wahi i koho ʻia (backend) a me kekahi ʻike lawelawe. ʻO ka mea maʻamau, hoʻohana ʻia nā papa lāʻau no ka mālama ʻana i kahi kumu-IP + huakaʻi-IP pair, he mea pono loa ia no nā noi ʻaʻole hiki ke hoʻololi i ka pōʻaiapili kau o ka mea hoʻohana ke hoʻololi i kahi mea kaulike ʻē aʻe, no ka laʻana, ma ke ʻano kaulike RoundRobin.

Inā aʻo ʻia kahi pākaukau lāʻau e neʻe i waena o nā kaʻina HAProxy like ʻole (ma waena o ka hana ʻana i ke kaulike), hiki i kā mākou mea kaulike ke hana me hoʻokahi puna o nā papa lāʻau. ʻO kēia ka mea e hiki ai ke hoʻololi maʻalahi i ka pūnaewele o ka mea kūʻai aku inā hāʻule kekahi o nā mea kaulike; e hoʻomau ka hana me nā kau mea kūʻai aku ma nā hope like i koho ʻia ma mua.

No ka hana kūpono, pono e hoʻoholo ʻia ka pilikia o ka IP address kumu o ka balancer kahi i hoʻokumu ʻia ai ka hālāwai. I kā mākou hihia, he ʻōlelo koʻikoʻi kēia ma ka interface loopback.

Loaʻa ka hana kūpono o nā hoa ma lalo o kekahi mau kūlana. ʻO ia hoʻi, pono e lawa ka nui o nā manawa hoʻopau TCP a i ʻole e wikiwiki ka hoʻololi ʻana i ʻole e loaʻa ka manawa TCP e hoʻopau ai. Eia nō naʻe, ʻae ia i ka hoʻololi maʻalahi.

Ma IaaS he lawelawe mākou i kūkulu ʻia me ka hoʻohana ʻana i ka ʻenehana like. ʻO kēia Load Balancer ma ke ʻano he lawelawe no OpenStack, i kapaia o Octavia. Hoʻokumu ʻia ia ma nā kaʻina HAProxy ʻelua a loaʻa mua ke kākoʻo no nā hoa. Ua hōʻike maikaʻi lākou iā lākou iho i kēia lawelawe.

Hōʻike maʻalahi ke kiʻi i ka neʻe ʻana o nā papa hoa ma waena o ʻekolu mau manawa HAProxy, ua manaʻo ʻia kahi config pehea e hoʻonohonoho ai:

Pehea ka hoʻokō ʻia ʻana o ka hoʻolālā pūnaewele hoʻomanawanui i ka Mail.ru Cloud Solutions platform
HAProxy Peers (ka hoʻonohonoho hui)

Inā hoʻokō ʻoe i ka hoʻolālā like, pono e hoʻāʻo pono ʻia kāna hana. ʻAʻole ia he ʻoiaʻiʻo e hana ia ma ke ala like 100% o ka manawa. Akā ma ka liʻiliʻi, ʻaʻole ʻoe e nalowale i nā papa lāʻau inā pono ʻoe e hoʻomanaʻo i ka IP kumu o ka mea kūʻai.

E kaupalena ana i ka helu o nā noi like mai ka mea kūʻai aku

ʻO nā lawelawe i loaʻa i ka lehulehu, me kā mākou mau API, hiki ke hoʻopili ʻia i nā avalanches o nā noi. Hiki ke ʻokoʻa nā kumu o lākou, mai nā hewa o ka mea hoʻohana i nā hoʻouka kaua. DDoSed mākou i kēlā me kēia manawa e nā helu IP. Hana hewa pinepine nā mea kūʻai aku i kā lākou mau palapala a hāʻawi iā mākou i nā mini-DDoS.

ʻO kekahi ala a i ʻole, pono e hāʻawi ʻia kahi pale hou. ʻO ka hoʻonā ʻike ʻia ʻo ka kaupalena ʻana i ka helu o nā noi API a ʻaʻole hoʻopau i ka manawa CPU e hoʻoponopono i nā noi hewa.

No ka hoʻokō ʻana i ia mau kapu, hoʻohana mākou i nā palena palena, i hoʻonohonoho ʻia ma ke kumu o HAProxy, me ka hoʻohana ʻana i nā papa lāʻau like. He mea maʻalahi ka hoʻonohonoho ʻana i nā palena a hiki iā ʻoe ke kaupalena i ka mea hoʻohana ma ka helu o nā noi i ka API. Hoʻomanaʻo ka algorithm i ke kumu IP kahi i hana ʻia ai nā noi a kaupalena i ka helu o nā noi like ʻole mai hoʻokahi mea hoʻohana. ʻOiaʻiʻo, ua helu mākou i ka awelika o ka hoʻouka ʻana o ka API no kēlā me kēia lawelawe a kau i kahi palena o ≈ 10 mau manawa i kēia waiwai. Ke hoʻomau nei mākou e nānā pono i ke kūlana a mālama i ko mākou manamana lima ma ka pulse.

Pehea ke ano o keia ma ka hana? Loaʻa iā mākou nā mea kūʻai aku e hoʻohana i kā mākou autoscaling API i nā manawa a pau. Hana lākou ma kahi o ʻelua a ʻekolu haneli mau mīkini virtual i ke kakahiaka a holoi iā lākou i ke ahiahi. No OpenStack, e hana ana i ka mīkini makamae, a me nā lawelawe PaaS, pono ma ka liʻiliʻi he 1000 mau noi API, no ka mea, e hana pū ana ka pilina ma waena o nā lawelawe ma o ka API.

ʻO ia hoʻoili ʻana o nā hana ke kumu i kahi haʻahaʻa nui loa. Ua loiloi mākou i kēia ukana, hōʻiliʻili i nā piko i kēlā me kēia lā, hoʻonui iā lākou he ʻumi, a lilo kēia i kā mākou palena palena. Mālama mākou i ko mākou manamana lima ma ka pulse. ʻIke pinepine mākou i nā bots a me nā scanners e hoʻāʻo nei e nānā iā mākou e ʻike inā loaʻa iā mākou nā palapala CGA hiki ke holo, ke ʻoki ikaika nei mākou iā lākou.

Pehea e hoʻonui ai i kāu codebase me ka ʻike ʻole o nā mea hoʻohana

Hoʻokomo pū mākou i ka hoʻomanawanui hewa ma ke kiʻekiʻe o nā kaʻina hana hoʻolaha code. Loaʻa paha nā glitches i ka wā o ka rollouts, akā hiki ke hōʻemi ʻia ko lākou hopena i ka loaʻa o ka lawelawe.

Hoʻopau mau mākou i kā mākou mau lawelawe a pono mākou e hōʻoia i ka hoʻonui ʻia o ka codebase me ka ʻole o ka hoʻopili ʻana i nā mea hoʻohana. Ua hiki iā mākou ke hoʻoponopono i kēia pilikia me ka hoʻohana ʻana i nā mana hoʻokele o HAProxy a me ka hoʻokō ʻana o Graceful Shutdown i kā mākou lawelawe.

No ka hoʻoponopono ʻana i kēia pilikia, pono ia e hōʻoia i ka mana o ka mea kaulike a me ka "pololei" pani o nā lawelawe:

  • Ma ka hihia o HAProxy, hoʻokō ʻia ka mana ma o kahi faila stats, ʻo ia ke kumu kumu a wehewehe ʻia ma ka config HAProxy. Hiki iā ʻoe ke hoʻouna i nā kauoha iā ia ma o stdio. Akā hiki i kā mākou mea hana hoʻonohonoho hoʻonohonoho koʻikoʻi, no laila aia kahi module i kūkulu ʻia no ka mālama ʻana iā HAProxy. Ka mea a mākou e hoʻohana ikaika nei.
  • Kākoʻo ka hapa nui o kā mākou API a me nā lawelawe ʻenehana i nā ʻenehana pani maikaʻi: ke pani ʻia, kali lākou i ka hana o kēia manawa e hoʻopau, inā he noi http a i ʻole kekahi hana lawelawe. Pela no ka mea hana. ʻIke ʻo ia i nā hana a pau āna e hana nei a pau i ka wā i hoʻopau pono ai i nā mea āpau.

Mahalo i kēia mau helu ʻelua, ʻo ka algorithm palekana no kā mākou hoʻolaha e like me kēia.

  1. Hoʻākoakoa ka mea hoʻomohala i kahi pūʻolo code hou (no mākou ʻo RPM kēia), hoʻāʻo iā ia i loko o ke kaiapuni dev, hoʻāʻo iā ia ma ke kahua, a waiho i loko o ka waihona kahua.
  2. Hoʻonohonoho ka mea hoʻomohala i ka hana no ka hoʻolaha ʻana me ka wehewehe kikoʻī loa o nā "artifacts": ke ʻano o ka pūʻolo hou, ka wehewehe ʻana i ka hana hou a me nā kikoʻī ʻē aʻe e pili ana i ka waiho ʻana inā pono.
  3. Hoʻomaka ka luna ʻōnaehana i ka hoʻohou. Hoʻokuʻu i ka puke pāʻani Ansible, ʻo ia hoʻi ka hana penei:
    • Lawe i kahi pūʻolo mai ka waihona kahua a hoʻohana iā ia e hoʻohou i ka mana o ka pūʻolo ma ka waihona huahana.
    • Hoʻopili i kahi papa inoa o nā hope hope o ka lawelawe hou.
    • Hoʻopau i ka lawelawe mua e hōʻano hou ʻia ma HAProxy a kali i kāna mau hana e hoʻopau i ka holo. Mahalo i ka hoʻopaʻa maikaʻi ʻana, ke hilinaʻi nei mākou e hoʻopau pono nā noi a nā mea kūʻai aku i kēia manawa.
    • Ma hope o ka pau ʻana o ka API a me nā limahana, a ua pio ʻo HAProxy, ua hōʻano hou ʻia ke code.
    • Ansible holo lawelawe.
    • No kēlā me kēia lawelawe, huki ʻia kekahi mau "lima", e hana ana i ka hoʻāʻo ʻana o ka ʻāpana i kekahi mau hoʻāʻo kī mua i wehewehe ʻia. Hana ʻia kahi loiloi kumu o ke code hou.
    • Inā ʻaʻohe hewa i ʻike ʻia ma ka ʻanuʻu mua, hoʻāla ʻia ka hope.
    • E neʻe kākou i ka hope hope.
  4. Ma hope o ka hoʻonui ʻia ʻana o nā hope hope, hoʻomaka ʻia nā hoʻokolohua hana. Inā nalo lākou, a laila nānā ka mea hoʻomohala i nā hana hou āna i hana ai.

Hoʻopau kēia i ka hoʻolaha.

Pehea ka hoʻokō ʻia ʻana o ka hoʻolālā pūnaewele hoʻomanawanui i ka Mail.ru Cloud Solutions platform
Ka pōʻaiapuni o ka lawelawe

ʻAʻole e holo kēia papahana inā ʻaʻole i loaʻa iā mākou hoʻokahi lula. Kākoʻo mākou i nā mana kahiko a me nā mana hou i ke kaua. Ma mua, ma ke kahua o ka hoʻomohala ʻana i ka polokalamu, ua waiho ʻia inā he mau loli i ka waihona lawelawe, ʻaʻole lākou e uhaʻi i ke code mua. ʻO ka hopena, ua hōʻano hou ʻia ke kumu code.

hopena

Ke kaʻana nei i koʻu mau manaʻo e pili ana i kahi hoʻolālā WEB hoʻomanawanui hewa, makemake wau e nānā hou i kāna mau kumu nui:

  • hoʻomanawanui hewa kino;
  • ka hoʻomanawanui hewa ʻana o ka pūnaewele (balancers, BGP);
  • ka hoʻomanawanui hewa o ka polokalamu i hoʻohana ʻia a kūkulu ʻia.

Hoʻopaʻa manawa paʻa i kēlā me kēia kanaka!

Source: www.habr.com

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