ʻO Chaos Engineering: ke ʻano o ka luku ʻia. Mahele 2

Nānā. unuhi.: Ke hoʻomau nei kēia ʻatikala i nā moʻolelo nui mai ka ʻeuanelio ʻenehana AWS ʻo Adrian Hornsby, nāna i hoʻomaka e wehewehe ma ke ala maʻalahi a maopopo i ke koʻikoʻi o ka hoʻokolohua e hoʻēmi i nā hopena o nā hāʻule i nā ʻōnaehana IT.

ʻO Chaos Engineering: ke ʻano o ka luku ʻia. Mahele 2

"Inā ʻaʻole ʻoe e hoʻomākaukau i kahi hoʻolālā, a laila hoʻolālā ʻoe e hāʻule." - Benjamin Franklin

В ʻO ka hapa mua Ma kēia pūʻulu ʻatikala, ua hoʻolauna au i ka manaʻo o ka chaos engineering a wehewehe i ke ʻano e kōkua ai e ʻimi a hoʻoponopono i nā hemahema o ka ʻōnaehana ma mua o ke alakaʻi ʻana i nā hemahema o ka hana. Ua kūkākūkā pū ʻia pehea e hāpai ai ka chaos engineering i ka loli moʻomeheu maikaʻi i loko o nā hui.

I ka pau ʻana o ka hapa mua, ua hoʻohiki wau e kamaʻilio e pili ana i "nā mea hana a me nā ala no ka hoʻokomo ʻana i nā hemahema i nā ʻōnaehana." Auē, ua hoʻolālā koʻu poʻo i kēia mea, a ma kēia ʻatikala e hoʻāʻo wau e pane i ka nīnau kaulana loa e kū nei i waena o ka poʻe makemake e komo i ka ʻenehana chaos: He aha ka mea e haki mua ai?

Nīnau nui! Eia naʻe, ʻaʻole ʻo ia e hopohopo nui i kēia panda ...

ʻO Chaos Engineering: ke ʻano o ka luku ʻia. Mahele 2
Mai huikau me ka chaos panda!

Pane pōkole: Huli i nā lawelawe koʻikoʻi ma ke ala noi.

ʻOi aku ka lōʻihi akā ʻoi aku ka maopopo o ka pane: No ka hoʻomaopopo ʻana i kahi e hoʻomaka ai e hoʻāʻo me ka haunaele, e hoʻolohe i ʻekolu mau wahi:

  1. E nānā moʻolelo hāʻule a ʻike i nā mamana;
  2. E hoʻoholo hilinaʻi koʻikoʻi;
  3. E hoʻohana i ka mea i kapa ʻia hopena hilinaʻi nui.

He ʻakaʻaka, akā hiki ke kapa ʻia kēia ʻāpana "He huakaʻi i ka ʻike pilikino a me ka naʻauao". Ma loko e hoʻomaka mākou e "pāʻani" me kekahi mau mea kani.

1. Aia ka pane i ka hala

Inā ʻoe e hoʻomanaʻo, ma ka ʻāpana mua ua hoʻokomo wau i ka manaʻo o Correction-of-Errors (COE) - kahi ala e nānā ai mākou i kā mākou mau hewa - hewa i ka ʻenehana, kaʻina hana a hui paha - i mea e hoʻomaopopo ai i kā lākou kumu (s) a pale aku. hoʻi hou i ka wā e hiki mai ana . Ma keʻano laulā, ma laila ʻoe e hoʻomaka ai.

"No ka hoʻomaopopo ʻana i kēia manawa, pono ʻoe e ʻike i ka hala." — Carl Sagan

E nānā i ka mōʻaukala o nā hemahema, e kau iā lākou ma COE a i ʻole postmortems a hoʻokaʻawale iā lākou. E ʻike i nā ʻano maʻamau e alakaʻi pinepine ai i nā pilikia, a no kēlā me kēia COE, e nīnau iā ʻoe iho i kēia nīnau:

"Ua wānana ʻia paha kēia a no laila ke pale ʻia e ka hoʻopiʻi hewa?"

Hoʻomanaʻo wau i kekahi hāʻule i ka wā mua o kaʻu ʻoihana. Ua hiki ke pale maʻalahi inā ua hana mākou i ʻelua mau hoʻokolohua chaos maʻalahi:

Ma lalo o nā kūlana maʻamau, pane nā manawa backend i nā nānā olakino mai mea kaulike hoʻouka (ELB)). Hoʻohana ʻo ELB i kēia mau loiloi e hoʻohuli hou i nā noi i nā manawa olakino. Ke ʻike ʻia he "maikaʻi ʻole" kahi hihia, hoʻopau ʻo ELB i ka hoʻouna ʻana i nā noi iā ia. I kekahi lā, ma hope o kahi hoʻolaha kūʻai kūleʻa kūleʻa, ua hoʻonui ʻia ka nui o ke kaʻa a hoʻomaka nā hope i ka pane ʻana i nā loiloi olakino ma mua o ka maʻamau. Pono e ʻōlelo ʻia ʻo kēia mau nānā olakino hohonu, ʻo ia hoʻi, ua nānā ʻia ke kūlana o nā mea hilinaʻi.

Akā naʻe, ua maikaʻi nā mea a pau no kekahi manawa.

A laila, ma lalo o nā kūlana koʻikoʻi, ua hoʻomaka kekahi o nā manawa e hoʻokō i kahi hana maʻamau ETL cron maʻamau. ʻO ka hui pū ʻana o nā kaʻa kiʻekiʻe a me ka cronjob i hoʻoikaika i ka hoʻohana ʻana i ka CPU i kahi kokoke i 100%. Ua hoʻolōʻihi ka CPU overload i nā pane i nā loiloi olakino, no laila ua hoʻoholo ka ELB e loaʻa ana ka pilikia i ka hana. E like me ka mea i manaʻo ʻia, ua hoʻōki ka mea kaulike i ka hāʻawi ʻana i nā kaʻa iā ia, a ma ia mea, alakaʻi i ka hoʻonui ʻana i ka ukana ma nā mea i koe o ka hui.

ʻAʻole koke, hoʻomaka nā mea ʻē aʻe a pau e hāʻule i ka nānā olakino.

ʻO ka hoʻomaka ʻana i kahi manawa hou e pono ai ka hoʻoiho ʻana a me ka hoʻokomo ʻana i nā pūʻolo a ʻoi aku ka lōʻihi ma mua o ka lawe ʻana i ka ELB e hoʻopau iā lākou - hoʻokahi i kēlā me kēia - i ka hui autoscaling. Ua maopopo ua hiki koke ke kaʻina hana a pau i kahi koʻikoʻi a hāʻule ka noi.

A laila, hoʻomaopopo mau mākou i kēia mau mea:

  • ʻO ka hoʻokomo ʻana i nā polokalamu i ka wā e hana ai i kahi mea hou e lōʻihi ka manawa; ʻoi aku ka maikaʻi o ka hāʻawi ʻana i ka makemake i ke ala hiki ʻole a AMI gula.
  • I nā kūlana paʻakikī, pono nā pane i nā loiloi olakino a me nā ELB - ʻo ka mea hope āu e makemake ai ʻo ka hoʻopilikino i ke ola no nā mea i koe.
  • He kōkua nui ka hoʻokolo ʻana o nā loiloi olakino (ʻoiai no kekahi mau kekona).
  • Ma kahi kūlana paʻakikī, mai holo i nā hana cron a me nā kaʻina hana koʻikoʻi ʻē aʻe - mālama i nā kumuwaiwai no nā hana nui loa.
  • I ka hoʻonui ʻana, e hoʻohana i nā mea liʻiliʻi. ʻOi aku ka maikaʻi o kahi hui o 10 mau mea liʻiliʻi ma mua o kahi hui o 4 mau mea nui; inā hāʻule kekahi laʻana, ma ka hihia mua e puʻunaue ʻia ka 10% o ke kaʻa ma luna o 9 mau helu, ma ka lua - 25% o ke kaʻa ma luna o ʻekolu mau helu.

A pēlā, Ua ʻike mua ʻia paha kēia, a no laila ke pale ʻia ma ka hoʻokomo ʻana i ka pilikia?

ia, a ma kekahi mau ano.

ʻO ka mea mua, ma ka hoʻohālikelike ʻana i ka hoʻohana ʻana i ka CPU kiʻekiʻe me ka hoʻohana ʻana i nā mea hana e like me stress-ng ai ole ia, cpuburn:

❯ stress-ng --matrix 1 -t 60s

ʻO Chaos Engineering: ke ʻano o ka luku ʻia. Mahele 2
kaumaha-ng

ʻO ka lua, ma ka hoʻonui ʻana i ka hihia me wrk a me nā pono hana like ʻole:

❯ wrk -t12 -c400 -d20s http://127.0.0.1/api/health

ʻO Chaos Engineering: ke ʻano o ka luku ʻia. Mahele 2

He mea maʻalahi nā hoʻokolohua, akā hiki ke hāʻawi i kahi meaʻai maikaʻi no ka noʻonoʻo me ka ʻole e hele i loko o ke koʻikoʻi o kahi hemahema maoli.

Eia naʻe, mai hooki i laila. E ho'āʻo e hana hou i ka ulia i loko o kahi hoʻāʻo ʻana a nānā i kāu pane i ka nīnau "Ua ʻike mua ʻia paha kēia a no laila ua pale ʻia e ka hoʻokomo ʻana i kahi hewa?" He hoʻokolohua mini chaos kēia i loko o kahi hoʻokolohua chaos e hoʻāʻo ai i nā manaʻo, akā hoʻomaka me ka hāʻule.

ʻO Chaos Engineering: ke ʻano o ka luku ʻia. Mahele 2
He moeʻuhane paha ia, a i ʻole i hana maoli ʻia?

No laila e aʻo i ka mōʻaukala o nā hāʻule, e nānā ʻO COE, e hōʻailona a hoʻokaʻawale iā lākou e ka "hit radius"—a ʻoi aku ka pololei, ka helu o nā mea kūʻai aku i hoʻopili ʻia—a laila e ʻimi i nā mamana. E nīnau iā ʻoe iho inā ua wānana a pale ʻia kēia ma ka hoʻokomo ʻana i ka pilikia. E nānā i kāu pane.

A laila e hoʻololi i nā hiʻohiʻona maʻamau me ka laulā nui loa.

2. E hana i ka palapala 'āina hilina'i

E noʻonoʻo e pili ana i kāu noi. Aia kahi palapala ʻāina maopopo o kona mau hilinaʻi? ʻIke paha ʻoe i ka hopena e loaʻa iā lākou inā he hāʻule?

Inā ʻaʻole ʻoe i kamaʻāina loa i ke code o kāu noi a i ʻole ua lilo ia i mea nui loa, hiki ke paʻakikī ke hoʻomaopopo i ka hana a ke code a me kāna mau hilinaʻi. ʻO ka hoʻomaopopo ʻana i kēia mau hilinaʻi a me kā lākou hopena hiki i ka noi a me nā mea hoʻohana he mea koʻikoʻi ia e ʻike i kahi e hoʻomaka ai me ka ʻenehana chaos: ʻo ka hoʻomaka ʻana ka mea me ka radius hopena nui loa.

ʻO ka ʻike a me ka palapala ʻana i nā hilinaʻi i kapa ʻia "ke kūkulu ʻana i palapala ʻāina hilinaʻi» (ka palapala ʻāina hilinaʻi). Hana ʻia kēia no nā noi me kahi waihona code nui me ka hoʻohana ʻana i nā mea hana code profiling. (ka helu helu helu) a me ka mea kani (mea kani). Hiki iā ʻoe ke kūkulu i kahi palapala ʻāina ma ka nānā ʻana i nā kaʻa pūnaewele.

Eia naʻe, ʻaʻole like nā mea hilinaʻi āpau (ʻo ia ka mea e hoʻopiʻi hou ai i ke kaʻina hana). ʻO kekahi koʻikoʻi, ʻē aʻe - lua (ma ka liʻiliʻi loa ma ke kumumanaʻo, no ka mea, hiki pinepine nā pōpilikia ma muli o nā pilikia me nā hilinaʻi i manaʻo ʻia ʻaʻole koʻikoʻi).

Me ka ʻole o nā hilinaʻi koʻikoʻi, ʻaʻole hiki ke hana ka lawelawe. ʻO nā hilinaʻi koʻikoʻi ʻole "pono ʻole»e hoʻoikaika i ka lawelawe inā hāʻule. No ka hoʻomaopopo ʻana i nā hilinaʻi, pono ʻoe e ʻike maopopo i nā API i hoʻohana ʻia e kāu noi. ʻOi aku ka paʻakikī o kēia ma mua o ka mea i ʻike ʻia - ma ka liʻiliʻi loa no nā noi nui.

E hoʻomaka me ka hele ʻana i nā API āpau. E hōʻike i ka mea nui loa koʻikoʻi a koʻikoʻi. Lawe nā dependencies mai ka waihona code, e nānā iā ia nā lāʻau pili, a laila nānā palapala (ʻoiaʻiʻo, inā loaʻa - inā ʻaʻole, aia nō ʻoeоnā pilikia nui). E hoʻohana i nā mea hana e ka hoʻopili ʻana a me ka huli ʻana, kānana i nā kelepona waho.

Hiki iā ʻoe ke hoʻohana i nā polokalamu like netstat - he mea hoʻohana laina kauoha e hōʻike ana i ka papa inoa o nā pili pūnaewele (nā kumu hana) i ka ʻōnaehana. No ka laʻana, e papa inoa i nā pilina o kēia manawa, ʻano:

❯ netstat -a | more 

ʻO Chaos Engineering: ke ʻano o ka luku ʻia. Mahele 2

Ma AWS hiki iā ʻoe ke hoʻohana nā lāʻau kahe (nā logs kahe) ʻO VPC kahi ala e hiki ai iā ʻoe ke hōʻiliʻili i ka ʻike e pili ana i ka hele ʻana o IP a i ʻole mai nā pilina pūnaewele ma kahi VPC. Hiki ke kōkua ia mau lāʻau i nā hana ʻē aʻe - no ka laʻana, ka ʻimi ʻana i ka pane i ka nīnau no ke kumu i hiki ʻole ai kekahi mau kaʻa i ka laʻana.

Hiki iā ʻoe ke hoʻohana AWS X-Ray. ʻAe ʻo X-Ray iā ʻoe e kiʻi i nā kikoʻī, "ultimate" (hope-to-hope) ka nānā 'ana i nā noi i ko lākou ne'e 'ana i ka palapala noi, a kūkulu pū i ka palapala 'āina o nā mea i lalo o ka noi. Maʻalahi loa inā pono ʻoe e ʻike i nā hilinaʻi.

ʻO Chaos Engineering: ke ʻano o ka luku ʻia. Mahele 2
AWS X-Ray Console

ʻO ka palapala ʻāina hilinaʻi pūnaewele he hopena hapa wale nō. ʻAe, hōʻike ia i ka noi e kamaʻilio me ia, akā aia nā mea hilinaʻi ʻē aʻe.

Nui nā noi e hoʻohana i ka DNS no ka hoʻopili ʻana i nā mea hilinaʻi, aʻo nā mea ʻē aʻe e hoʻohana i ka ʻike lawelawe a i ʻole nā ​​helu IP paʻakikī i nā faila hoʻonohonoho (e.g. /etc/hosts).

No ka laʻana, hiki iā ʻoe ke hana ʻeleʻele DNS me ke kōkuaʻana o iptables a ʻike i ka mea i haki. No ka hana ʻana i kēia, e hoʻokomo i kēia kauoha:

❯ iptables -I OUTPUT -p udp --dport 53 -j REJECT -m comment --comment "Reject DNS"

ʻO Chaos Engineering: ke ʻano o ka luku ʻia. Mahele 2
Puka ʻeleʻele DNS

Inā i loko /etc/hosts a i ʻole nā ​​faila hoʻonohonoho ʻē aʻe, e ʻike ʻoe i nā helu IP āu i ʻike ʻole ai (ʻae, ʻaʻole naʻe, hiki mai kēia), hiki iā ʻoe ke hele hou mai e hoʻopakele iptables. E ʻōlelo mākou ua ʻike ʻoe 8.8.8.8 ʻaʻole ʻike ʻoe ʻo ia ka helu kikowaena DNS lehulehu o Google. Ma ka hoʻohana ʻana iptables Hiki iā ʻoe ke ālai i ka hele ʻana mai a i waho i kēia helu wahi me ka hoʻohana ʻana i kēia mau kauoha:

❯ iptables -A INPUT -s 8.8.8.8 -j DROP -m comment --comment "Reject from 8.8.8.8"
❯ iptables -A OUTPUT -d 8.8.8.8 -j DROP -m comment --comment "Reject to 8.8.8.8"

ʻO Chaos Engineering: ke ʻano o ka luku ʻia. Mahele 2
Ke pani ʻana i ke komo

Hoʻokuʻu ka lula mua i nā ʻeke āpau mai ka DNS lehulehu o Google: ping hana, akā ʻaʻole i hoʻihoʻi ʻia nā ʻeke. Hoʻokuʻu ka lula ʻelua i nā ʻeke a pau mai kāu ʻōnaehana i ka DNS lehulehu o Google - i pane ʻia ping loaʻa iā mākou ʻAʻole ʻae ʻia ka hana.

'Ōlelo Aʻo: ma kēia hihia, ʻoi aku ka maikaʻi o ka hoʻohana ʻana whois 8.8.8.8, akā he laʻana wale nō kēia.

Hiki iā mākou ke hele hohonu i lalo o ka lua rabbit, no ka mea, ʻo nā mea a pau e hoʻohana ana iā TCP a me UDP e hilinaʻi maoli nō hoʻi i ka IP. I ka hapanui o nā hihia, pili ka IP i ARP. Mai poina e pili ana i nā pā ahi...

ʻO Chaos Engineering: ke ʻano o ka luku ʻia. Mahele 2
Inā ʻoe e lawe i ka lāʻau ʻulaʻula, e noho ʻoe ma Wonderland, a naʻu e hōʻike iā ʻoe i ka hohonu o ka lua rabbit."

ʻO kahi ala ʻoi aku ka radical ʻoi aku ka hoʻokaʻawale nā kaʻa i kēlā me kēia a ʻike i ka mea i haki ... lilo i "chaos monkey." ʻOiaʻiʻo, ʻaʻole i hoʻolālā ʻia ka nui o nā ʻōnaehana hana no ka hoʻouka kaua ʻana, akā ma ka liʻiliʻi hiki ke hoʻāʻo ʻia ma kahi ʻano hoʻāʻo.

He hana lōʻihi loa ke kūkulu ʻana i ka palapala ʻāina hilinaʻi. Ua kamaʻilio hou wau me kahi mea kūʻai aku i hoʻopau ma kahi o 2 mau makahiki i ka hoʻomohala ʻana i kahi mea hana semi-akomi e hana i nā palapala hilinaʻi no nā haneli microservices a me nā kauoha.

ʻO ka hopena, akā, he mea hoihoi loa a pono. E aʻo nui ʻoe e pili ana i kāu ʻōnaehana, kona mau hilinaʻi a me nā hana. Eia hou, e hoʻomanawanui: ʻo ka huakaʻi ponoʻī ka mea nui.

3. E makaala i ka paulele nui

"ʻO ka mea moeʻuhane i ka mea, manaʻoʻiʻo iā ia." — Demosthenes

Ua lohe paha ʻoe hopena hilinaʻi nui?

Wahi a Wikipedia, ʻo ka hopena overconfidence ʻo ia "he manaʻo noʻonoʻo i ʻoi aku ka nui o ka hilinaʻi o ke kanaka i kāna mau hana a me kāna mau hoʻoholo ʻana ma mua o ka pololei o ka pahuhopu o kēlā mau hoʻoholo, ʻoiai ke kiʻekiʻe ke kiʻekiʻe o ka hilinaʻi."

ʻO Chaos Engineering: ke ʻano o ka luku ʻia. Mahele 2
Ma muli o ka instinct a me ka ʻike...

I koʻu ʻike, he hōʻailona maikaʻi kēia distortion i kahi e hoʻomaka ai me ka ʻenehana chaos.

E makaʻala i ka mea hoʻohana hilinaʻi nui:

Charlie: "ʻAʻole i hāʻule kēia mea i nā makahiki ʻelima, maikaʻi nā mea āpau!"
Crash: "E kali ... e hiki koke ana au!"

Ma muli o ka hilinaʻi nui ʻana, he mea hoʻopunipuni a pōʻino hoʻi ma muli o nā ʻano kumu like ʻole e hoʻopili ai. Heʻoiaʻiʻo loa kēia i ka wā i ninini ai nā lālā o ka hui i ko lākou mau naʻau i kahi ʻenehana a i ʻole i hoʻohana nui i ka manawa "hoʻoponopono" iā ia.

ʻO ka hōʻuluʻulu ʻana

ʻO ka ʻimi ʻana i kahi hoʻomaka no ka ʻenekinia chaos e lawe mai i nā hopena hou aʻe ma mua o ka mea i manaʻo ʻia, a ʻo nā hui e hoʻomaka ana e wāwahi i nā mea me ka wikiwiki e nalowale i ka ʻike o ka honua a me ka hoihoi o (chaos-)ʻenekinia - hoʻohana noʻonoʻo ʻano ʻepekema и hōʻike pili no ka hoʻolālā, hoʻomohala, hana, mālama a hoʻomaikaʻi i nā ʻōnaehana (polokalamu).

Hoʻopau kēia i ka ʻāpana ʻelua. E ʻoluʻolu e kākau i nā loiloi, kaʻana like i nā manaʻo a i ʻole e paʻipaʻi wale i kou mau lima Medium. Ma ka ʻāpana aʻe I ʻoiaʻiʻo E noʻonoʻo wau i nā mea hana a me nā ala no ka hoʻokomo ʻana i nā hemahema i nā ʻōnaehana. A hiki i ka!

PS mai ka unuhi

E heluhelu pū ma kā mākou blog:

Source: www.habr.com

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