mod_proxy vs mod_proxy_ajp बनाम mod_jk


9

हम निम्नलिखित वातावरण से प्रवास की तैयारी कर रहे हैं:

Apache 2.0.2 - AJP -> JBoss4.2.2

सेवा

Apache 2.2.3 - ??? -> JBoss 5.1.0

आप दोनों एक साथ कैसे जुड़ेंगे?

विकल्प हैं:

  1. क्लासिक AJP (अपाचे के लिए mod_jk बनाने का मतलब है)
  2. mod_proxy (JBoss के लिए HTTP अनुरोध अग्रेषित करना)
  3. mod_proxy_ajp

विकल्प 2 इस समय सबसे लोकप्रिय समाधान है क्योंकि जेबीओस की एजेपी से प्रतिक्रियाओं का अनुवाद करने की आवश्यकता नहीं होने के कारण इसका अर्थ कम प्रसंस्करण है, और सीपीयू समय कुछ ऐसा है जिसे हमें अपने बुनियादी ढांचे पर कड़ी नजर रखने की आवश्यकता है। विकल्प 2 और 3 भी Red Hat द्वारा समर्थित अपाचे बिल्ड के साथ आते हैं।

फिलहाल हम हमें विकल्प 1 के लिए जाते हुए नहीं देख सकते हैं, क्योंकि हमें विकल्प 3 के साथ 'मुफ्त में एजेपी' मिलता है।

इसलिए, विकल्प 2 और 3 के पेशेवरों और विपक्ष क्या हैं? क्या सीपीयू लोड के बारे में चिंता वास्तव में कुछ है जिसके बारे में हमें चिंता करने की ज़रूरत है? बाइनरी डेटा (AJP ट्रैफ़िक) को संसाधित करने में हम क्या खो देते हैं, क्या हम कम बैंडविड्थ और IO में वापस आ जाते हैं?

हमारा इन्फ्रास्ट्रक्चर अप करने के लिए 9 भारी ट्यून किए गए JBosses (लेकिन आमतौर पर लगभग आधा है) सभी एक ही RHEL 5 मशीन पर होगा, जो कि एक निजी क्लाउड में वर्चुअलाइज्ड है।

किसी भी संकेत / सलाह के लिए अग्रिम धन्यवाद।

धनी

जवाबों:


8

2 mod_proxy_http, जब तक आपको क्लाइंट से होस्ट हेडर की आवश्यकता न हो।

मैं क्लासिक mod_jk की अनुशंसा नहीं करता क्योंकि इसकी कार्यक्षमता mod_proxy_ajp द्वारा प्रतिस्थापित की गई है और जैसा कि आपने स्वयं कहा था, इसके लिए उस मॉड्यूल को स्वयं बनाना और बनाए रखना आवश्यक है।

मुझे लगता है कि mod_proxy_http एक बहुत साफ समाधान है और यह तस्वीर से ajp लेता है। हालाँकि, आपको ajp से http पर जाने के लिए कुछ चेतावनी के बारे में पता होना चाहिए। यदि आपको सर्वर हेडर तक पहुंच की आवश्यकता है, जैसा कि वे अपाचे (होस्ट हेडर सहित) द्वारा प्राप्त किया गया था, तो आपको ajp का उपयोग करना चाहिए। JBoss, मूल क्लाइंट नहीं अपाचे से आने वाला एक ताज़ा http अनुरोध देखेगी। यदि आपको केवल क्लाइंट के दूरस्थ आईपी की आवश्यकता है, तो आप अभी भी एक विशेष हेडर के साथ इसे प्राप्त कर सकते हैं जो अपाचे नए अनुरोधों पर सेट कर सकता है। हालाँकि, यदि आप एप्लिकेशन लेयर से वर्चुअल होस्टिंग कर रहे हैं, तो आप ajp से बेहतर हैं।

जहाँ तक प्रदर्शन का सवाल है, या तो ajp या http को JBoss द्वारा कुछ प्रसंस्करण और कुछ स्थानीय सॉकेट TCP ट्रैफ़िक की आवश्यकता होगी। आपको यह देखने की कोशिश करनी होगी कि कौन अधिक कुशल है, लेकिन मुझे लगता है कि कुल मिलाकर यह कुल सर्वर भार का बहुत कम प्रतिशत है। Http एक अधिक जटिल प्रोटोकॉल है और ajp को विशेष रूप से वेब और ऐप टियर के बीच कुशलता से डिज़ाइन किया गया है, इसलिए सैद्धांतिक रूप से ajp शायद बेहतर है। उस ने कहा, मैंने पाया है कि http अक्सर टॉमकैट ऐप सर्वर लाइन के बाहर बेहतर समर्थित है।

मैं mod_proxy_ajp और mod_proxy_http का उपयोग करता हूं और मुझे कोई समस्या नहीं है।


Hostशीर्ष लेख के माध्यम से पारित हो जाएगा सही ढंग से करता है, तो आप का उपयोग करेंProxyPreserveHost On
डर्फ

Apache mod_proxy के साथ काम करते समय httpd.apache.org/docs/2.4/mod/mod_proxy.html#x-headers देखें । आप अपने बिलाव सर्वलेट के हिस्से के रूप RemoteIpValve कॉन्फ़िगर करते हैं तो आपके आवेदन कोड सबसे जानकारी पारदर्शी रूप से प्राप्त कर सकते हैं tomcat.apache.org/tomcat-8.0-doc/config/...
स्कॉट Markwell
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.