கட்டுரை அடைவு
HestiaCP சூழல்களில் அடிக்கடி Apache2 செயலிழப்புகள் அல்லது Monit தானியங்கி மறுதொடக்கம் தோல்விகளா? இந்தக் கட்டுரை, Monit-ஐப் பயன்படுத்தி Apache2-ஐக் கண்காணிக்கும்போது ஏற்படும் பொதுவான சிக்கல்களைத் தவிர்ப்பதற்கான ஒரு நடைமுறை வழிகாட்டியை வழங்குகிறது. இது PID பாதை பொருந்தாமை மற்றும் அனுமதித் தடை போன்ற பொதுவான பிரச்சனைகளை ஆழமாகப் பகுப்பாய்வு செய்து, உற்பத்தித் தரத்திலான Monit தானியக்க உள்ளமைவுக் கோப்புகளையும் அளிக்கிறது. உயர்-கிடைப்புத்தன்மை சேவையகப் பராமரிப்பு நுட்பங்களில் இப்போதே தேர்ச்சி பெற்று, தோல்விகளிலிருந்து இரண்டாம் நிலைத் தானியங்கி மீட்பை அடையுங்கள்!
Apache2-ஐக் கண்காணிக்க Monit-ஐப் பயன்படுத்தும்போது நான் சந்தித்த சிக்கல்கள்
கடந்த வெள்ளிக்கிழமை நள்ளிரவில் சர்வர் எனக்கு ஒரு மோனிட் எச்சரிக்கையை அனுப்பியது.
நான் ஒருவித திகைப்புடன் பேனலைப் பார்த்தபோது, apache2 status என்ற பத்தியில் சிவப்பு நிறத்தில் Timeout என்று குறிப்பிடப்பட்டிருந்தது.

நான் அதைப்பற்றி சிறிது நேரம் யோசித்தேன். நான் இப்போதுதான் பகல் நேரத்தில் சர்வரில் மோனிட் கண்காணிப்பைச் சேர்த்தேன், மேலும் ஒரு ஆன்லைன் டுடோரியலில் இருந்து உள்ளமைப்பை நகலெடுத்து ஒட்டினேன். எந்தப் பிரச்சனையும் இருக்காது, சரிதானே?
அடுத்த நாள் காலையில், அது மீண்டும் செயலிழந்தது. மூன்றாவது முறைக்குப் பிறகு, மானிட்டர் வெறுமனே கைவிட்டது, மேலும் திரையானது "கண்காணிக்கப்படவில்லை" என்று காட்டியது.
நான்...
உண்மையைச் சொல்லப்போனால், ஆரம்பத்தில் நான் அதைச் சாதாரணமாக எடுத்துக்கொண்டேன். அப்பாச்சி2 கண்காணிப்பா? இணையத்தில் ஏராளமான டெம்ப்ளேட் உள்ளமைப்புகளைக் காணலாம், நகலெடுத்து ஒட்டினால் போதும். ஆனால் அந்த ஒட்டும் செயல்முறை உண்மையிலேயே எனக்குக் கடும் கோபத்தை ஏற்படுத்தியது.
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 இயங்குகிறதா என்று சோதிக்குமாறு Monit-இடம் நீங்கள் கேட்டால், அது KFC-ஐத் தேடி McDonald's-க்குச் செல்வதைப் போன்றது. சர்வர் உங்களை வெற்றுப் பார்வையுடன் பார்க்கும், நீங்களும் அவரும் ஒருவரையொருவர் முறைத்துப் பார்ப்பீர்கள். இறுதியில், நீங்கள் செயலிழந்துவிட்டீர்கள் என்பதை Monit கண்டறிந்து, பதற்றத்துடன் அதை மீண்டும் தொடங்கத் தொடங்கும்.
மறுதொடக்கம் செய்த பிறகும், போர்ட் 8081 ஆகவே உள்ளது. பின்னர் மோனிட், போர்ட் 80-ஐ சோதிக்க முயற்சிக்கிறது, அதுவும் தோல்வியடைகிறது, எனவே அது மீண்டும் மறுதொடக்கம் செய்கிறது. மோனிட் இதைச் சரிசெய்யவே முடியாது என்று முடிவு செய்து, காலாவதியாகும் வரை இந்தச் சுழற்சி மீண்டும் மீண்டும் நிகழ்கிறது.
நான் இதை முதன்முதலில் எதிர்கொண்டபோது, உண்மையிலேயே திகைத்துப்போனேன். நான் இணையத்தில் கண்ட பத்து பயிற்சிக் கையேடுகளில் ஒன்பது, போர்ட் 80-ஐப் பயன்படுத்தின. நீங்கள் அவற்றைப் பின்பற்றியிருந்தால், பிரச்சினை உங்களிடம் இல்லை, மாறாக அந்தத் தகவலின் மூலத்திலேயே இருந்தது.

சிதைந்த Apache2 PID கோப்பின் காரணமாக, Monit அந்தச் செயல்முறை இல்லாததாகத் தவறாக அடையாளம் கண்டது.
போர்ட்டை 80-லிருந்து 8081-க்கு மாற்றிய பிறகு, கோட்பாட்டளவில் மோனிட்டால் அதைக் கண்டறிய முடியும், அல்லவா?
இருப்பினும், உண்மையில், அது அவ்வப்போது "செயல்படுத்தல் தோல்வியடைந்தது " என்று தெரிவிக்கிறது.
நீண்ட நேரம் போராடிய பிறகு, காரணம் எளிமையானது என்பதை நான் இறுதியாகக் கண்டுபிடித்தேன்: PID கோப்பு சிதைந்திருந்தது.
யோசித்துப் பாருங்கள், மோனிட் பதற்றத்துடன் அப்பாச்சி2-ஐ மறுதொடக்கம் செய்துகொண்டிருந்தது; ஒவ்வொரு முறையும் அதை வலுக்கட்டாயமாகக் கொன்று மீண்டும் தொடங்கி, பலமுறை முன்னும் பின்னுமாகச் செய்துகொண்டிருந்தது. இந்தச் செயல்பாட்டின் போது, /var/run/apache2/apache2.pid என்ற கோப்பின் அளவு 0 பைட்டுகளாக மாறக்கூடும்.
வேறுவிதமாகக் கூறினால், அந்தக் கோப்பு இன்னும் அங்கேயே இருக்கிறது, ஆனால் அது காலியாக உள்ளது.
மோனிட் இந்தக் கோப்பைப் படிக்கும்போது, அதில் எதுவும் இருப்பதில்லை. உங்கள் அப்பாச்சி2 பின்னணியில் மிகச் சரியாக இயங்கிக்கொண்டிருந்தாலும், அது உங்கள் அப்பாச்சி2-ஐ அடையாளம் கண்டுகொள்வதில்லை; அந்தச் செயல்முறை இருப்பதாக மோனிட் கருதுவதில்லை.
இதைப் பார்த்ததும், ஒரு கணம் எனக்குப் பேச்சே வரவில்லை.
இது ஒரு முட்டுக்கட்டை. மோனிட், அப்பாச்சி 2 இன்ஸ்டன்ஸைக் கண்டறியத் தவறி, அப்பாச்சி 2-ஐ மறுதொடக்கம் செய்கிறது, இந்த மறுதொடக்கம் செயல்பாட்டின் போது 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` கட்டளையைப் பயன்படுத்துங்கள்; அதில் எண்களின் சரம் இருக்க வேண்டுமே தவிர, வெற்றுச் சரம் இருக்கக்கூடாது.
இந்தக் கட்டம் நிறைவடைந்தவுடன், பிரச்சினை அடிப்படையில் தீர்க்கப்பட்டுவிடுகிறது.

மோனிட்டின் பாரம்பரிய தகவமைப்பு மற்றும் ஆக்கிரமிப்பு பாதுகாப்பு உள்ளமைவுகளின் ஒப்பீட்டு பகுப்பாய்வு
Monit-ஐப் பயன்படுத்தி Apache2-ஐ உள்ளமைப்பது குறித்த ஆன்லைன் பயிற்சிகள் பொதுவாக இரண்டு வகைகளாகப் பிரிக்கப்படுகின்றன.
ஒரு வகை "பாரம்பரிய தழுவல் வகை" ஆகும், இது அதிக சிக்கலான கட்டுப்பாடுகளைச் சேர்க்காமல் சேவைகளை நிர்வகிக்கவும் உள்ளூர் போர்ட்களைச் சரிபார்க்கவும் `service` கட்டளையைப் பயன்படுத்துகிறது. இந்த உள்ளமைவை HestiaCP-இல் போர்ட்டை மாற்றுவதன் மூலம் எளிதாகப் பயன்படுத்தலாம், மேலும் இது ஒப்பீட்டளவில் நிலையானது.
மற்றொரு அணுகுமுறை "தீவிரப் பாதுகாப்பு" முறையாகும். இது சேவைகளை நிர்வகிக்க systemctl-ஐப் பயன்படுத்துகிறது, துணைச் செயல்முறைகளுக்குக் கட்டுப்பாடுகளைச் சேர்க்கிறது, மேலும் கடுமையான கண்டறிதல் தர்க்கத்தைப் பயன்படுத்துகிறது. இது பார்ப்பதற்கு அருமையாகத் தோன்றினாலும், இதில் ஒரு பெரிய குறைபாடு உள்ளது: பயன்படுத்தப்படும் நிறுத்தக் கட்டளை `killall -9` என்பதாகும்.
`killall -9` என்பதன் பொருள் என்ன? அது என்ன செய்து கொண்டிருந்தாலும், சாதனத்தை வலுக்கட்டாயமாகக் கொல்வதாகும். இந்த வலுக்கட்டாயச் செயல்பாடு, சிதைந்த 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 மறுதொடக்கங்களாகத் தளர்த்தப்பட்டுள்ளது.
ஹெஸ்டியாசிபி கண்காணிப்பு கண்காணிப்புஉள்ளமைவுச் சிக்கல் தீர்வுச் சுருக்கம் மற்றும் அனுபவப் பகிர்வு
உள்ளமைவு மாற்றங்களைச் செய்த பிறகு, நான் apache2-ஐக் கண்காணித்தேன், இறுதியாக பேனல் ஒரு பச்சை நிற "OK" குறிகாட்டியைக் காட்டியது.
அப்போது என் உணர்வுகளை எப்படி விவரிப்பது? இரண்டு நாட்கள் ஒரு பிழையுடன் போராடி, இறுதியில் தவறான ஒரே ஒரு உள்ளமைவு வரியே அதற்குக் காரணம் என்று கண்டுபிடித்தது போல இருந்தது. அது விரக்தியளிப்பதாகவும், அதே சமயம் சிரிப்பை வரவழைப்பதாகவும் இருந்தது.
Monit என்பது இயல்பாகவே ஒரு நல்ல விஷயம், மேலும் டீமான்களைக் கண்காணிப்பது ஒவ்வொரு சர்வரும் செய்ய வேண்டிய ஒன்றாகும். ஆனால் பிரச்சனை என்னவென்றால், பல ஆன்லைன் பயிற்சிகள் "Apache2 பிரத்தியேகமாக போர்ட் 80-ஐப் பயன்படுத்துகிறது" என்ற அனுமானத்தின் அடிப்படையில் அமைந்துள்ளன, அதேசமயம் HestiaCP ஒரு ரிவர்ஸ் ப்ராக்ஸியைப் பயன்படுத்துகிறது, அதாவது இந்த அனுமானம் உண்மையாகாது.
நீங்கள் வழிமுறைகளைப் பின்பற்றினால், பிரச்சனை உங்கள் மீது இல்லை; அந்தப் பயிற்சி வழிகாட்டி உங்களுடையதை விட வேறு ஒரு சூழ்நிலைக்குப் பொருந்துகிறது என்பதே பிரச்சனை.
எனவே, நீங்களும் HestiaCP-ஐப் பயன்படுத்தி, Apache2-ஐக் கண்காணிக்க Monit-உடன் பரிசோதனை செய்து கொண்டிருந்தால், இரண்டு விஷயங்களை நினைவில் கொள்ளுங்கள்: போர்ட்டை 8081-க்கு மாற்றவும், மேலும் அதை நிறுத்த `killall -9` என்பதற்குப் பதிலாக `systemctl` கட்டளையைப் பயன்படுத்தவும். இந்த இரண்டையும் நீங்கள் செய்தால், மேலும் ஏற்படக்கூடிய சிக்கல்களை உங்களால் தவிர்க்க முடியும்.
இதுவரை படித்த உங்களுக்கு இது பயனுள்ளதாக இருந்தால், தயவுசெய்து லைக் செய்து பகிருங்கள். புதிய தகவல்களை முதலில் பெற விரும்பினால், நீங்கள் என்னைப் பின்தொடரவும் செய்யலாம்!
என் கட்டுரையைப் படித்ததற்கு நன்றி. அடுத்த முறை சந்திப்போம்.
சென் வெய்லியாங்கின் வலைப்பதிவில் ( https://www.chenweiliang.com/ ) பகிரப்பட்ட "HestiaCP Apache2 Frequent Crashes? Monit Automated Monitoring and Troubleshooting Guide (with Complete Configuration)" என்ற கட்டுரை உங்களுக்குப் பயனுள்ளதாக இருக்கும் என நம்புகிறோம்.
இந்தக் கட்டுரையின் இணைப்பைத் தாராளமாகப் பகிரவும்: https://www.chenweiliang.com/cwl-34457.html
