इस लेख में हम दिखाएंगे कि कैसे HAProxy को लोड बैलेंसर के रूप में कॉन्फ़िगर किया जाए दो Nginx . के लिए वेब सर्वर (आप इसे अपाचे से बदल सकते हैं)। CentOS का उपयोग सभी मामलों में एक होस्ट ऑपरेटिंग सिस्टम के रूप में किया जाता है।
HAProxy एक सर्वर सॉफ्टवेयर है जो कई बैकएंड सर्वरों के बीच आने वाले अनुरोधों को वितरित करके टीसीपी और एचटीटीपी ऐप्स के लिए उच्च उपलब्धता और लोड संतुलन प्रदान करता है। HAProxy का उपयोग कई लोकप्रिय संसाधनों जैसे ट्विटर . पर किया जाता है , इंस्टाग्राम , गीथब , अमेज़ॅन, आदि।HAProxy एक अलग सर्वर पर स्थापित है जो क्लाइंट अनुरोधों को स्वीकार करता है और उन्हें Nginx वेब सर्वर पर पुनर्निर्देशित करता है। आप सामान्य सिस्टम आर्किटेक्चर नीचे देख सकते हैं:
बैकएंड सर्वर पर Nginx कॉन्फ़िगरेशन
हम अपने वेब सर्वर पर Nginx की स्थापना और कॉन्फ़िगरेशन के साथ शुरू करते हैं, लोड के बीच संतुलित होगा। यम (या RHEL/CentOS 8 पर dnf) का उपयोग करके EPEL रिपॉजिटरी और nginx स्थापित करें:
#yum install epel-release -y
#yum install nginx -y
फिर, nginx . में .गोपनीयता फ़ाइलें निर्दिष्ट करती हैं कि सर्वर को केवल HAProxy सर्वर और बैकएंड सर्वर से अनुरोधों को संसाधित करना चाहिए:
बैकएंड सर्वर 1:
<पूर्व>सर्वर {सुनो current_server_IP_address:80 default_server; सेकेंड_बैकएंड_सर्वर_आईपी_एड्रेस की अनुमति दें; IP_haproxy की अनुमति दें; सभी को नकारें; सर्वर का नाम _; रूट /usr/share/nginx/html; # डिफ़ॉल्ट सर्वर ब्लॉक के लिए कॉन्फ़िगरेशन फ़ाइलें लोड करें। शामिल /etc/nginx/default.d/*.conf; स्थान / { }बैकएंड सर्वर 2:
<पूर्व>सर्वर {सुनो current_server_IP_address:80 default_server; first_backend_server_IP_address की अनुमति दें; IP_haproxy की अनुमति दें; सभी को नकारें; सर्वर का नाम _; रूट /usr/share/nginx/html; # डिफ़ॉल्ट सर्वर ब्लॉक के लिए कॉन्फ़िगरेशन फ़ाइलें लोड करें। शामिल /etc/nginx/default.d/*.conf; स्थान / { }Nginx कॉन्फ़िगरेशन फ़ाइल डिफ़ॉल्ट है, हमने अभी-अभी सर्वरों को आईपी सुनने में जोड़ा है और अनुमति . का उपयोग करके हमारे सर्वर को छोड़कर सभी तक पहुंच से वंचित कर दिया और इनकार करें निर्देश।
वेब सर्वर काम करना शुरू कर सके, इसके लिए फ़ायरवॉल या iptables का उपयोग करके फ़ायरवॉल HTTP पोर्ट खोलें:
#firewall-cmd --permanent –add-service=http
#firewall-cmd –reload
अपने किसी भी बैकएंड सर्वर पर एक परीक्षण जांच करें:
# कर्ल IP_of_the_second_server
यहां आपको एक html मिलेगा फ़ाइल
सर्वर ने एक मानक nginx अनुक्रमणिका फ़ाइल लौटा दी है। चेक को अधिक सुविधाजनक बनाने के लिए, मैंने अपने ब्राउज़र में यह देखने के लिए प्रत्येक बैकएंड सर्वर पर इंडेक्स फ़ाइल की सामग्री को बदल दिया है कि किस सर्वर ने वर्तमान अनुरोध को संसाधित किया है।
Nginx अनुक्रमणिका फ़ाइल /usr/share/nginx/html/ में स्थित है ।
HAProxy लोड बैलेंसर कॉन्फ़िगरेशन
आइए उस सर्वर पर HAProxy को स्थापित और कॉन्फ़िगर करें जिसका उपयोग लोड बैलेंसर के रूप में किया जाएगा।
HAProxy स्थापित करें:#yum install epel-release -y
#yum install haproxy -y
लेन-देन चलाना स्थापित करना:haproxy-1.5.18-9.el7.x86_64 1/1सत्यापित करना:haproxy-1.5.18-9.el7.x86_64 1/1Installed:haproxy.x86_64 0:1.5.18-9.el7Complete!पूर्व>HAProxy को सक्षम करने के लिए, आपको सक्षम=1 . जोड़ना होगा /etc/default/haproxy . के लिए फ़ाइल:
#नैनो/आदि/डिफ़ॉल्ट/हैप्रोक्सी
अब HAProxy कॉन्फ़िगरेशन पर चलते हैं। हमारे सबसे सरल कॉन्फ़िगरेशन में, लोड बैलेंसर सर्वर सभी HTTP अनुरोधों को संसाधित करेगा और उन्हें बैकएंड सर्वर पर भेज देगा:
<पूर्व>लॉग /देव/लॉग लोकल0 क्रोट /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 उपयोगकर्ता हैप्रोक्सी समूह हैप्रोक्सी डेमॉनडिफॉल्ट्स मोड http लॉग ग्लोबल विकल्प httplog विकल्प पुनः प्रेषण 3 टाइमआउट http-अनुरोध 10s टाइमआउट कतार 1m टाइमआउट कनेक्ट 10s टाइमआउट क्लाइंट 1m टाइमआउट सर्वर 1m टाइमआउट http-keep-alive 10s टाइमआउट चेक 10s maxconn 3000frontend www बाइंड बैलेंसर_IP_address:80 default_backend nginx_poolbackend nginx_pool बैलेंस राउंडरोबिन मोड http सर्वर web1 IP_of_the_first_backend_server:80 चेक सर्वर web2 IP_of
#nano /etc/haproxy/haproxy.cfg
अपना कॉन्फ़िगरेशन सहेजने के बाद, haproxy.cfg सिंटैक्स की जाँच करें:
#haproxy -f /etc/haproxy/haproxy.cfg -c
अगर यह ठीक है, तो आपको इस तरह का एक संदेश मिलेगा:
कॉन्फ़िगरेशन फ़ाइल मान्य हैफिर HAProxy को पुनरारंभ करें और इसे Linux स्टार्टअप में जोड़ें। और HTTP पोर्ट को फ़ायरवॉल में खोलें। />#फ़ायरवॉल-cmd -reload
इस प्रकार, लोड बैलेंसर को कॉन्फ़िगर किया गया है। आइए एक ब्राउज़र में HAProxy सर्वर IP पता खोलकर इसकी जाँच करें:
जैसा कि आप देख सकते हैं, दोनों सर्वरों ने बदले में सामग्री लौटा दी है, इसलिए बैलेंसर काम कर रहा है।
Haproxy.cfg कॉन्फ़िगरेशन फ़ाइल पैरामीटर
आइए HAProxy एल्गोरिदम के मुख्य उदाहरणों पर विचार करें:
राउंडरोबिन
- डिफ़ॉल्ट एल्गोरिथ्म है, बदले में सर्वर को अनुरोध भेजता है। हमने अपने उदाहरण में इस पद्धति का उपयोग किया है।Leastconn
- कम से कम सक्रिय कनेक्शन वाले सर्वर का चयन करता है। उन परियोजनाओं के लिए आवेदन करने की अनुशंसा की जाती है, जिनमें सत्रों का लंबे समय तक उपयोग किया जाता है।स्रोत
- उपयोगकर्ता के IP पतों के हैश के आधार पर सर्वर का चयन करता है। इस मोड में, यदि उपयोगकर्ता का IP पता अपरिवर्तित रहता है, तो क्लाइंट उसी वेब सर्वर को कनेक्ट करेगा।
आइए कुछ कॉन्फ़िगरेशन फ़ाइल पैरामीटर का वर्णन करें।
वैश्विक ब्लॉक करें:
लॉग
— लॉग इन /dev/log सेविंग लोकल0 को ऑब्जेक्ट वैल्यू के रूप में लिखता हैक्रोट
— सुरक्षा सेटिंग्स, HAProxy को निर्दिष्ट निर्देशिका में लॉक करता हैमैक्सकॉन
— प्रति प्रक्रिया समवर्ती कनेक्शन की अधिकतम संख्याडेमन
— एक प्रक्रिया को डेमॉन के रूप में चलाना
डिफ़ॉल्ट खंड मैथा। यह ब्लॉक इसके बाद के अन्य सभी अनुभागों के लिए डिफ़ॉल्ट पैरामीटर सेट करता है:
लॉग
- सेट करता है कि कौन से लॉग में लिखी गई प्रविष्टियाँ हैं (इस मामले में, वैश्विक का अर्थ है कि वैश्विक अनुभाग में निर्धारित मापदंडों का उपयोग किया जाता है)मोड
— संचार प्रोटोकॉल सेट करता है और इसमें निम्न में से एक मान होता है:tcp, http या healthपुन:प्रयास करता है
— विफलता की स्थिति में सर्वर से जुड़ने के प्रयासों की संख्याविकल्प httplog
— लॉग प्रारूप का उपयोग किया जाता है यदि HAProxy HTTP अनुरोधों को प्रॉक्सी कर रहा हैविकल्प पुनः प्रेषण
- सर्वर के विफल होने की स्थिति में प्रोग्राम को सत्र को समाप्त करने और फिर से भेजने की अनुमति देता है-
समय समाप्त
— सर्वर से कनेक्शन सफलतापूर्वक स्थापित होने तक अधिकतम प्रतीक्षा समय
अलग-अलग टाइमआउट से संबंधित बहुत सारे पैरामीटर भी हैं।
HAProxy आँकड़े एकत्रित करना
आंकड़े ब्लॉक को कॉन्फ़िगरेशन फ़ाइल में जोड़ें:
सुनो आँकड़े बाँध :10001 आँकड़े सक्षम आँकड़े uri /haproxy_stats stats auth admin:admin
विवरण:
बाइंड
- जिस पोर्ट पर आप आंकड़े देख सकते हैंआंकड़े सक्षम करें
- सांख्यिकीय रिपोर्ट सक्षम करता हैआँकड़े uri
- आँकड़े पृष्ठ का पता सेट करता हैआंकड़े प्रमाणीकरण
- लॉगिन और पासवर्ड एक्सेस करने के लिए
अपने फ़ायरवॉल में ऊपर निर्दिष्ट पोर्ट पर आने वाले कनेक्शन को स्वीकार करें:
फ़ायरवॉल-cmd --permanent –add-port=10001/tcp
फ़ायरवॉल-cmd –reload
HAProxy रिपोर्ट देखने के लिए, इस लिंक का अनुसरण करें:
https://hostname_haproxy:10001/haproxy_stats
अपने ब्राउज़र में बैलेंसर आईपी एड्रेस खोलें और F5 दबाना शुरू करें। . HAproxy आँकड़े बदल जाएंगे।
इस लेख में हमने बुनियादी HAProxy विन्यास पर विचार किया है। HAProxy मॉड्यूल का उपयोग करने के और भी मामले हैं।
हमारे स्कीमा में, लोड संतुलन HAProxy सर्वर विफलता का एकल बिंदु बन जाता है। अपनी वेब सेवा की दोष सहिष्णुता बढ़ाने के लिए, आप एक और HAProxy सर्वर जोड़ सकते हैं और Keepalived का उपयोग करके उच्च-उपलब्धता लोड बैलेंसर कॉन्फ़िगरेशन को लागू कर सकते हैं। आपको इस तरह का एक स्कीमा मिलेगा: