Malangizo & zidule za Kubernetes: mawonekedwe otseka mwachisomo mu NGINX ndi PHP-FPM
Zomwe zimachitika mukakhazikitsa CI / CD ku Kubernetes: pulogalamuyo iyenera kuvomereza zopempha zatsopano zamakasitomala musanayime kwathunthu, ndipo koposa zonse, kumaliza zomwe zilipo kale.
Kutsatira chikhalidwechi kumakupatsani mwayi wopeza zero panthawi yotumiza. Komabe, ngakhale mutagwiritsa ntchito mitolo yodziwika bwino (monga NGINX ndi PHP-FPM), mutha kukumana ndi zovuta zomwe zingayambitse kuchuluka kwa zolakwika pakutumiza kulikonse ...
Chiphunzitso. Moyo wa pod
Tasindikiza kale mwatsatanetsatane za moyo wa pod nkhaniyi. Pankhani ya mutu womwe ukukambidwa, tili ndi chidwi ndi izi: panthawi yomwe pod imalowa m'boma Kuthetsa, zopempha zatsopano zimasiya kutumizidwa kwa izo (pod kuchotsedwa kuchokera pamndandanda wa mathero a utumiki). Chifukwa chake, kuti tipewe kutsika panthawi yotumiza, ndikokwanira kuti tithane ndi vuto loyimitsa pulogalamuyo moyenera.
Pankhaniyi, timangolandira khodi yolakwika ya 503 kuchokera ku Ingress yokha: sikungathe kupeza chidebe cha NGINX, chifukwa sichikupezekanso. Mukayang'ana zipika za NGINX, zili ndi izi:
[alert] 13939#0: *154 open socket #3 left in connection 16
[alert] 13939#0: *168 open socket #6 left in connection 13
Pambuyo posintha chizindikiro choyimitsa, chidebecho chimayamba kuyima bwino: izi zimatsimikiziridwa ndi chakuti cholakwika cha 503 sichinawonedwenso.
Mukakumana ndi vuto lofananalo, ndizomveka kudziwa kuti chizindikiro choyimitsa chomwe chimagwiritsidwa ntchito m'chidebecho ndi chiyani komanso kuti mbedza ya preStop imawoneka bwanji. Ndi zotheka kuti chifukwa chagona ndendende mu izi.
PHP-FPM... ndi zina
Vuto la PHP-FPM limafotokozedwa mopepuka: silimadikirira kumalizidwa kwa njira za ana, zimawathetsa, chifukwa chake zolakwika za 502 zimachitika pakutumiza ndi ntchito zina. Pali malipoti angapo a cholakwika pa bugs.php.net kuyambira 2005 (mwachitsanzo apa ΠΈ apa), lomwe limafotokoza vuto ili. Koma mwina simudzawona chilichonse muzolemba: PHP-FPM ilengeza kutha kwa ntchito yake popanda zolakwika kapena zidziwitso za gulu lachitatu.
Ndikoyenera kufotokozera kuti vutoli palokha likhoza kudalira pang'ono kapena kukulirapo pa ntchito yokha ndipo silingadziwonetsere, mwachitsanzo, pakuwunika. Mukakumana nazo, njira yosavuta yosinthira imabwera m'maganizo: onjezani mbedza ya preStop ndi sleep(30). Ikuthandizani kuti mumalize zopempha zonse zomwe zidalipo kale (ndipo sitikuvomereza zatsopano, popeza pod kale wokhoza Kuthetsa), ndipo pambuyo pa masekondi a 30 pod yokha idzatha ndi chizindikiro SIGTERM.
Izo zikutanthauza kuti lifecycle pakuti chotengeracho chidzawoneka chonchi:
Komabe, chifukwa cha 30-sekondi sleep ife kwambiri tidzawonjezera nthawi yotumizira, popeza pod iliyonse idzathetsedwa osachepera 30 masekondi, zomwe ziri zoipa. Kodi chingachitike nβchiyani pa zimenezi?
Tiyeni titembenukire ku chipani chomwe chimayang'anira ntchitoyo mwachindunji. Kwa ife zili choncho PHP-FPM, zomwe mwachikhazikitso sichiyang'anira machitidwe a mwana wake: Ndondomekoyi imathetsedwa nthawi yomweyo. Mutha kusintha izi pogwiritsa ntchito malangizo process_control_timeout, yomwe imatchula malire a nthawi kuti mwana adikire zizindikiro kuchokera kwa mbuye. Ngati muyika mtengo kukhala masekondi a 20, izi zidzayankha mafunso ambiri omwe ali mumtsuko ndipo adzayimitsa njirayo ikamalizidwa.
Ndi chidziwitso ichi, tiyeni tibwerere ku vuto lathu lomaliza. Monga tafotokozera, Kubernetes si nsanja ya monolithic: kulankhulana pakati pa zigawo zake zosiyana kumatenga nthawi. Izi ndizowona makamaka tikaganizira za ntchito ya Ingresses ndi zigawo zina zokhudzana ndi izi, chifukwa chifukwa cha kuchedwa koteroko panthawi yotumizira kumakhala kosavuta kupeza zolakwika za 500. Mwachitsanzo, vuto likhoza kuchitika panthawi yotumiza pempho kumtunda, koma "kuchedwa" kwa mgwirizano pakati pa zigawozo ndi zazifupi - zosakwana sekondi imodzi.
Choncho, Zonse ndi malangizo omwe atchulidwa kale process_control_timeout mutha kugwiritsa ntchito zomangamanga zotsatirazi lifecycle:
kuphunzira fayilo yosinthira ya backend yathu pazigawo zoyenera.
Chitsanzo ndi NGINX chikuwonekera momveka bwino kuti ngakhale ntchito yomwe imayenera kukonza zizindikiro zothetsa molondola sizingatero, choncho ndikofunikira kuyang'ana zolakwika za 500 panthawi yogwiritsira ntchito. Izi zimakulolani kuti muyang'anenso vutoli mozama komanso osayang'ana pa pod kapena chidebe chimodzi, koma yang'anani zowonongeka zonse.
Monga chida choyesera, mungagwiritse ntchito Yandex.Tank mogwirizana ndi njira iliyonse yowunikira (kwa ife, deta inatengedwa kuchokera ku Grafana ndi Prometheus backend kuti ayesedwe). Mavuto okhala ndi kutsekeka kwabwino amawonekera bwino pansi pa katundu wolemetsa womwe benchmark imatha kupanga, ndipo kuyang'anira kumathandizira kusanthula mwatsatanetsatane momwe mayesowo akuyendera kapena pambuyo pake.
Poyankha ndemanga pa nkhaniyi: ndi bwino kunena kuti mavuto ndi zothetsera zikufotokozedwa pano pokhudzana ndi NGINX Ingress. Kwa zina, pali njira zina, zomwe tingaganizire muzinthu zotsatirazi za mndandanda.