ʻ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.
"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 ...
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:
E nānā moʻolelo hāʻule a ʻike i nā mamana;
E hoʻoholo hilinaʻi koʻikoʻi;
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
kaumaha-ng
ʻO ka lua, ma ka hoʻonui ʻana i ka hihia me wrk a me nā pono hana like ʻole:
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.
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
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.
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:
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"
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...
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."
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!