HestiaCP ашиглан Apache2-ийн гацалт байнга гардаг уу? Автомат хяналт болон алдааг олж засварлах гарын авлагыг (бүрэн тохиргоотой хамт) хянах боломжтой.

HestiaCP орчинд Apache2-г байнга гацах эсвэл Monit автоматаар дахин ачаалах үед алдаа гардаг уу? Энэ нийтлэлд Apache2-г Monit ашиглан хянах үед нийтлэг алдаанаас зайлсхийх, PID замын буруу тохируулга болон зөвшөөрлийг хаах зэрэг нийтлэг асуудлуудыг гүнзгий шинжлэх, үйлдвэрлэлийн түвшний Monit автоматжуулалтын тохиргооны файлуудыг санал болгох практик гарын авлага өгөв. Өндөр хүчин чадалтай серверийн засвар үйлчилгээний техникийг одоо эзэмшиж, алдаанаас хоёр дахь түвшний автомат сэргээх аргад хүрээрэй!

Apache2-г хянахын тулд Monit ашиглах үед тулгарсан бэрхшээлүүд

Өнгөрсөн Баасан гарагт зөөгч надад шөнө дунд Монит сэрэмжлүүлэг өгсөн.

Би самбар луу гайхан хартал apache2 төлөвийн баганад улаан Timeout гэсэн бичиг байсан.

HestiaCP ашиглан Apache2-ийн гацалт байнга гардаг уу? Автомат хяналт болон алдааг олж засварлах гарын авлагыг (бүрэн тохиргоотой хамт) хянах боломжтой.

Би энэ талаар жаахан бодсон. Би өдрийн цагаар серверт Monit хяналтыг нэмсэн бөгөөд онлайн хичээлээс тохиргоог хуулж буулгасан. Ямар ч асуудал гарах ёсгүй, тийм үү?

Маргааш өглөө нь дахин хугацаа нь дууссан. Гурав дахь удаагаа ажилласны дараа Монитор зүгээр л больсон бөгөөд самбар дээр "Хяналтгүй" гэсэн гарчиг гарч ирэв.

Би...

Би хүлээн зөвшөөрч байна, би эхэндээ үүнийг нухацтай авч үзээгүй. Apache2 хяналт? Та онлайнаар маш олон загварын тохиргоог олж болно, зүгээр л хуулж буулгахад л хангалттай. Гэхдээ энэ буулгах үйл явц намайг үнэхээр уурлуулсан.

HestiaCP-ийн анхдагч архитектур болон Monit портуудын хоорондох зөрчлийн үндсэн шалтгаан

Эхлээд надад маш их төвөг учруулсан тохиргоог үзүүлье, ингэснээр та энэ нь таны харсан хувилбартай яг адилхан эсэхийг харах боломжтой болно.

check process apache2 with pidfile /var/run/apache2/apache2.pid
    start program = "/usr/sbin/service apache2 start"
    stop program  = "/usr/sbin/service apache2 stop"
    if failed host 127.0.0.1 port 80 protocol http then restart
    if 5 restarts within 5 cycles then timeout

Зүгээр юм шиг байна, тийм үү? Энэ нь 80-р портыг шалгаад гацвал дахин ачаална. Хэрэв 5 дахин ачаалсны дараа ч гэсэн гацвал хугацаа нь дуусна.

Асуудал нь таны Apache2 нь 80-р порт дээр ажиллахгүй байгаа юм.

Энэ бол HestiaCP-ийн нэг сул тал бөгөөд олон хүн үүнд унах болсон гол шалтгаан юм. HestiaCP-ийн анхдагч архитектур нь Nginx + Apache2-ийн урвуу прокси бөгөөд Nginx нь урд талдаа 80 ба 443 портуудыг эзэлдэг бөгөөд Apache2 нь ард талдаа 8081 орон нутгийн порт дээр ажилладаг.

Хэрэв та Монитоос 80-р порт дээрх Apache2-ийн амьд байдлыг шалгахыг хүсвэл энэ нь KFC-г олохоор Макдональдс руу явж байгаатай адил юм. Сервер таныг хоосон харцаар харж, та хоёр бие бие рүүгээ ширтэнэ. Эцэст нь Монит таныг ажиллахаа больсон гэж үзээд дахин ачаалж эхэлнэ.

Дахин ачаалсны дараа порт нь 8081 хэвээр байна. Дараа нь Monit нь 80 портыг шалгахыг оролдох боловч энэ нь бас амжилтгүй болсон тул дахин ачаална. Энэ мөчлөг нь Monit үүнийг засах боломжгүй гэж үзээд хугацаа нь дуустал давтагдана.

Анх үүнтэй тааралдахад би үнэхээр гайхсан. Онлайнаар олсон арван хичээлийн ес нь 80 портыг ашигласан. Хэрэв та тэдгээрийг дагасан бол асуудал танд биш, харин мэдээллийн эх сурвалжид байсан.

HestiaCP ашиглан Apache2-ийн гацалт байнга гардаг уу? Автомат хяналт болон алдааг олж засварлах гарын авлагыг (бүрэн тохиргоотой хамт) хянах боломжтой.

Apache2 PID файл эвдэрсэн нь Monit-ийг уг процессыг байхгүй гэж буруу тодорхойлоход хүргэсэн.

Портыг 80-аас 8081 болгон өөрчилсний дараа Monit онолын хувьд үүнийг илрүүлж чадах ёстой, тийм үү?

Гэсэн хэдий ч бодит байдал дээр хааяа "Гүйцэтгэл амжилтгүй болсон " гэж мэдээлсээр байна.

Удаан хугацаанд тэмцсэний эцэст би шалтгаан нь энгийн болохыг олж мэдсэн: PID файл эвдэрсэн байсан.

Бодоод үз дээ, Монит Apache2-г сандарч дахин эхлүүлж байсан бөгөөд хүчээр унтраагаад дахин эхлүүлж, хэд хэдэн удаа урагш хойш хөдөлж байсан. Энэ процессын явцад /var/run/apache2/apache2.pid файл 0 байт болж магадгүй юм.

Өөрөөр хэлбэл, файл нь тэнд байгаа ч хоосон байна.

Монит энэ файлыг уншихад юу ч олдоггүй. Таны Apache2 ар талд төгс ажиллаж байсан ч гэсэн таны Apache2-г танихгүй; Монит энэ процесс байдаг гэж бодохгүй байна.

Үүнийг хараад би хэсэг зуур хэлэх үггүй болчихов.

Энэ бол гацалт юм. Monit нь Apache 2 инстанцийг илрүүлж чадахгүй, Apache2-г дахин эхлүүлж, дахин эхлүүлэх процессын үеэр PID файлыг эвдэж, дараагийн илрүүлэлтийг амжилтгүй болгож, дахин эхлүүлнэ. Энэ мөчлөг нь хугацаа дуусах хүртэл үргэлжилнэ.

HestiaCP орчинд Apache2 хяналтыг алдааг олж засварлах болон засах алхамууд

Үнэнийг хэлэхэд мөрдөн байцаалтын үйл явц нь төвөгтэй биш ч гэсэн та аль чиглэлийг мөрдөн шалгахаа мэдэх хэрэгтэй.

Эхний алхам бол таны Apache2 аль порт дээр сонсож байгааг тодорхойлох явдал юм. Терминал дээр командыг бичихэд л хангалттай.

netstat -tulpn | grep apache2

Эсвэл та `ss` командыг ашиглаж болно; үр нөлөө нь адилхан.

ss -tulpn | grep apache2

Та үүнтэй төстэй гаралтыг харах болно.

tcp  0  0 127.0.0.1:8081       0.0.0.0:*  LISTEN  2942372/apache2

Энэ нь 80 биш, 8081 болох нь батлагдсан. Асуудлын үндэс нь энэ юм.

Хоёр дахь алхам бол эвдэрсэн PID файлыг засах явдал юм. Энэ нь илүү хялбар юм.

monit unmonitor apache2
systemctl restart apache2
cat /var/run/apache2/apache2.pid

Эхлээд, засвар хийж байх үед саад учруулахаас сэргийлж Monit хяналтыг түр зогсооно уу. Дараа нь цэвэр PID-г дахин бичих боломжийг олгохын тулд Apache2-г дахин эхлүүлнэ үү. Эцэст нь файлын агуулгыг шалгахын тулд `cat` командыг ашиглана уу; энэ нь хоосон мөр биш, харин тоон мөр агуулсан байх ёстой.

Энэ алхамыг дуусгасны дараа асуудал үндсэндээ шийдэгдсэн гэж үзнэ.

HestiaCP ашиглан Apache2-ийн гацалт байнга гардаг уу? Автомат хяналт болон алдааг олж засварлах гарын авлагыг (бүрэн тохиргоотой хамт) хянах боломжтой.

Монит уламжлалт дасан зохицох болон түрэмгий хамгаалалтын тохиргооны харьцуулсан шинжилгээ

Apache2-г Monit ашиглан тохируулах онлайн хичээлүүд ерөнхийдөө хоёр ангилалд хуваагддаг.

Нэг төрөл нь "уламжлалт дасан зохицох төрөл" бөгөөд энэ нь үйлчилгээг удирдах, хэт олон төвөгтэй хязгаарлалт нэмэхгүйгээр орон нутгийн портуудыг шалгахын тулд `service` командыг ашигладаг. Энэ тохиргоог HestiaCP дээр портыг өөрчлөх замаар ашиглаж болох бөгөөд харьцангуй тогтвортой байдаг.

Өөр нэг арга бол "түрэмгий хамгаалалт" арга бөгөөд энэ нь үйлчилгээг удирдахад systemctl ашигладаг, хүүхдийн процессын хязгаарлалтыг нэмдэг бөгөөд илүү хатуу илрүүлэх логикийг ашигладаг. Энэ нь гайхалтай харагдаж байгаа ч ноцтой дутагдалтай талтай: ашигласан зогсоох команд нь `killall -9` юм.

`killall -9` гэдэг нь юу гэсэн үг вэ? Энэ нь төхөөрөмжийг юу хийж байгаагаас үл хамааран хүчээр устгах гэсэн үг юм. Энэхүү brute-force үйлдэл нь PID файлуудыг амархан эвдэж орхих бөгөөд энэ нь миний сая дурдсан асуудал юм.

Миний хувийн туршлагаас харахад түрэмгий тохиргоонд хүүхдийн процессуудын тоог хязгаарлах нь үнэхээр ашигтай байдаг. Таны Apache2 нь CC халдлагад өртөх үед хүүхдийн процессуудын тоог хязгаарлах нь серверийн санах ой дуусахаас сэргийлж чадна. Гэсэн хэдий ч `killall -9` арга нь үнэхээр ашиглах боломжгүй юм.

Тиймээс эцэст нь би буулт хийж, хоёр тохиргооны давуу талыг хослуулсан.

HestiaCP Apache2 Monit-ийн шилдэг туршлагын тохиргоо

/etc/monit/conf.d/apache2 файлыг дараах агуулгаар өөрчилнө үү.

check process apache2 with pidfile /var/run/apache2/apache2.pid
    start program = "/bin/systemctl start apache2"
    stop program  = "/bin/systemctl stop apache2"
    if children > 120 for 2 cycles then restart
    if failed host 127.0.0.1 port 8081 protocol http for 2 cycles then restart
    if 5 restarts within 10 cycles then timeout

Эдгээр хэдэн мөрийн тохиргооны цаад логикийг товч тайлбарлая.

HestiaCP-ийн урвуу прокси архитектуртай яг таарч 8081 портыг бич; 80 портыг тэнэгээр бичихээ боль.

PID файлыг эвдэхгүйн тулд `killall -9`-ийн оронд `systemctl stop` командыг ашиглан зогсооно уу.

Хүүхдийн процессын хязгаар нэмэгдсэн: хэрэв хүүхдийн тоо 120-оос хэтэрвэл CC халдлагаас урьдчилан сэргийлэхийн тулд процесс дараалсан хоёр мөчлөгийн дараа дахин эхлэх боловч хэт түрэмгий биш байна.

Алдаа илрүүлэх логикийг "2 мөчлөгийн турш" гэсэн аргыг ашиглахаар өөрчилсөн бөгөөд энэ нь дараалсан хоёр алдааны дараа л дахин эхлүүлэхийг идэвхжүүлж, хуурамч эерэг үр дүнг бууруулдаг гэсэн үг юм. Өмнөх тохиргоо нь ердөө нэг удаагийн илрүүлэлтийн дараа дахин эхлүүлдэг байсан нь үнэндээ хэтэрхий мэдрэмтгий байсан.

Эцсийн хугацааны босгыг 10 мөчлөгийн дотор 5 удаа дахин ачаалах хүртэл сулруулж, алдааны хүлцэл хангалттай хэвээр байна.

HestiaCP Мониторинг хийхТохиргооны алдааг олж засварлах хураангуй болон туршлага хуваалцах

Тохиргооны өөрчлөлтийг хийсний дараа би apache2-г хянаж үзсэн бөгөөд самбар эцэст нь ногоон "OK" гэсэн заагчийг харуулав.

Тухайн үеийн мэдрэмжээ хэрхэн тодорхойлох вэ? Энэ нь яг л хоёр өдөр ямар нэгэн шавьжтай тэмцэлдэж байгаа юм шиг санагдаж байсан ч шалтгаан нь нэг мөр буруу тохиргоо байгааг олж мэдсэн. Энэ нь бухимдмаар бас инээдтэй байсан.

Monit бол өөрөө сайн зүйл бөгөөд дэмонуудыг хянах нь сервер бүрийн хийх ёстой зүйл юм. Гэхдээ асуудал нь олон онлайн хичээлүүд нь "Apache2 зөвхөн 80 портыг ашигладаг" гэсэн таамаглал дээр суурилдаг бол HestiaCP нь урвуу прокси ашигладаг бөгөөд энэ таамаглал үнэн биш гэсэн үг юм.

Хэрэв та зааврыг дагавал асуудал нь танд биш; гол нь уг заавар нь таныхаас өөр тохиолдолд хэрэглэгдэж байгаа явдал юм.

Тиймээс хэрэв та HestiaCP ашиглаж байгаа бөгөөд Apache2-г хянахын тулд Monit-тэй тоглож байгаа бол хоёр зүйлийг санаарай: Портыг 8081 болгож өөрчилөөд, зогсоохын тулд `killall -9` биш, `systemctl` командыг ашиглаарай. Хэрэв та эдгээр хоёр зүйлийг хийвэл цаашид ямар ч асуудлаас зайлсхийх боломжтой болно.


Та энэ хүртэл уншсан тул хэрэв танд тустай байсан бол лайк дарж, хуваалцана уу. Хэрэв та хамгийн түрүүнд шинэчлэлтүүдийг хүлээн авахыг хүсвэл намайг дагаж болно!

Миний нийтлэлийг уншсанд баярлалаа. Дараагийн удаа уулзъя.

Чен Вэйлиангийн блог ( https://www.chenweiliang.com/ ) дээр хуваалцсан "HestiaCP Apache2 байнга гацдаг уу? Monit Automated Monitoring and Troubleshowing Guide (with Complete Configuration)" нийтлэл танд тустай байх гэж найдаж байна.

Энэ нийтлэлийн холбоосыг хуваалцахаас бүү эргэлзээрэй: https://www.chenweiliang.com/cwl-34457.html

Илүү олон далд заль мэхийг нээхийн тулд манай Telegram сувагт нэгдэнэ үү!

Хэрэв танд таалагдвал лайк дарж, хуваалцаарай! Таны шэйр, лайк бол бидний байнгын урам зориг юм!

 

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

TOP хүртэл гүйлгэж