वेब सलाहकार के उदाहरण का उपयोग करते हुए एक हाईलोड परियोजना की वास्तुकला

हमारी टीम दूरस्थ सर्वर प्रशासन में लगी हुई है, और इतनी देर पहले नहीं, WebConsult सेवा के प्रतिनिधियों ने हमें आसानी से स्केलेबल सर्वर आर्किटेक्चर बनाने के काम के साथ संपर्क किया जो भारी भार का सामना करेंगे। हमने फैसला किया कि शायद यह हबाह्रब उपयोगकर्ताओं के लिए दिलचस्प होगा, जो किसी तरह से हाईलोड परियोजनाओं के प्रशासन से जुड़े हैं। यह परियोजना तेजी से विकसित हुई और उस समय उपलब्ध संरचना पहले से ही सीमा पर चल रही थी, इसलिए हमें त्वरित मोड में एक नया लॉन्च करना पड़ा।

छवि



इसे जल्दी से करने के लिए, हमने अपने सभी प्रशासकों के बीच कार्यों के वितरण को अधिकतम करने की कोशिश की। ऐसा करने के लिए, हमने प्रोजेक्ट और टास्क मैनेजमेंट सिस्टम - रेडमाइन का उपयोग किया, और वहां हमने प्रोजेक्ट डेवलपर्स के साथ भी संपर्क रखा, जिन्होंने तुरंत हमारे सवालों के जवाब दिए और कोड में आवश्यक सुधार किए।
हमारे सामने कार्य का सार समझने के लिए, आइए जानें कि परियोजना का सिद्धांत क्या है। WebConsult एक प्रणाली है जिसके माध्यम से साइट के आगंतुक स्टोर या कंपनी प्रबंधक से संपर्क कर सकते हैं और वास्तविक समय में उनकी रुचि के सवाल पूछ सकते हैं। प्रबंधक, अपने हिस्से के लिए, परामर्श के लिए दो विकल्पों का उपयोग करते हैं - एक ब्राउज़र में पैनल के माध्यम से या किसी भी परिचित जैबर-क्लाइंट के माध्यम से। बदले में, उन साइटों पर आगंतुक जहां सिस्टम स्थापित है, सलाहकार कॉल बटन देखें, जो वेबकॉन्स्टल सर्वर (जिसका अर्थ है कि सेवा की गति बहुत महत्वपूर्ण है) से भरी हुई है। चूंकि बटन दिन में कई लाख बार लोड होता है, इसलिए यह वेब सर्वर पर एक महत्वपूर्ण भार बनाता है। इसके अलावा, लोड का प्रमुख हिस्सा ठीक वही ऑपरेटर हैं जो वेब क्लाइंट के माध्यम से परामर्श के मुख्य तरीके का उपयोग करते हैं। इस मामले में, हजारों सलाहकार जो एक साथ कुछ सेकंड में ऑनलाइन होते हैं, HTTP अनुरोध अपडेट (नए क्लाइंट, संदेश, विभिन्न स्थितियों के परिवर्तन) के लिए आते हैं, यह भी HTTP सर्वर और डेटाबेस सर्वर संसाधनों की एक बड़ी मात्रा में खपत करता है।

संतुलन

संतुलन योजना

चलो हमारे द्वारा बनाए गए वास्तुकला पर चलते हैं। डीएनएस स्तर (राउंड-रॉबिन) में सब कुछ का आधार संतुलन है, जो दो मोर्चों पर ट्रैफ़िक को प्रसारित करता है (यह उन मामलों के लिए भी सुविधाजनक है जब सर्वर में से कोई एक कम समय के लिए अनुपलब्ध है - आधुनिक ब्राउज़र अनुरोध को दूसरे सर्वर पर स्वचालित रूप से स्थानांतरित कर देता है)। मोर्चों, बदले में, प्रॉक्सी ट्रैफ़िक nginx का उपयोग करके HTTP सर्वर - web1, web2, web3, और इसी तरह।

वर्चुअलाइजेशन

प्रत्येक व्यक्तिगत कार्य के लिए, हमने प्रोजेक्ट के तार्किक भागों को एक-दूसरे से अलग करने के लिए अपना OpenVZ कंटेनर बनाने की कोशिश की, साथ ही साथ एक अलग भौतिक सर्वर पर कंटेनर को जल्दी से चुनने में सक्षम होने के लिए। हमने इस विशेष वर्चुअलाइजेशन को क्यों चुना, हमने पिछले लेखों में से एक में वर्णित किया है।

NGINX वेब सर्वर

स्टेटिक्स को लोड करना और जारी करना

ट्रैफ़िक को बचाने और लोड को ऑप्टिमाइज़ करने के लिए, सभी पासिंग स्टैटिक को नगीक्स टूल्स द्वारा कैश किया जाता है। पिछली वास्तुकला में, एनएफएस का उपयोग फ़ाइलों और स्रोत कोड को संग्रहीत करने के लिए किया गया था, लेकिन इसे छोड़ने का फैसला किया गया था क्योंकि इसमें एक अतिरिक्त भार था। इसके बजाय, हमने स्टैटिक्स (सलाहकार अवतार, कंपनी लोगो) लोड करने के अनुरोधों को पकड़ना शुरू किया और उन्हें एक सर्वर पर पुनर्निर्देशित किया। Nginx इसलिए की स्थापना की है कि यदि आप छवि स्थानीय स्तर पर नहीं मिल रहा है, uri $ try_files का उपयोग अन्य वेब सर्वर पर उनके लिए लग रही है सर्वर , और एक नामित lokeyshene में सर्वर बस्ट वेब सर्वर पंजीकृत। इसके अलावा, स्टेटिक्स को अन्य सर्वरों के साथ दिन में कई बार सिंक्रनाइज़ किया जाता है, जो उन्हें स्थानीय स्तर पर उपलब्ध कराता है।

गपशप

WebConsult परियोजना के महत्वपूर्ण हिस्सा अस्पष्ट के माध्यम से साइट पर ग्राहकों के साथ काम करने के लिए है। एक XMPP-सर्वर Openfire samopisnyh मॉड्यूल है कि आप इस परियोजना की आंतरिक संरचना के साथ एकीकृत और एक HTTP अस्पष्ट और पीछे से संदेश भेजने की अनुमति की संख्या के साथ प्रयोग किया जाता है के रूप में। ग्राहकों की सुविधा के लिए, न केवल उसके इच्छित डोमेन jabber.consultsystems.ru के लिए, लेकिन यह भी मुख्य डोमेन consultsystems.ru के माध्यम से एक अस्पष्ट-सर्वर से कनेक्ट करने की क्षमता बनाने के लिए काम किया था। इसके लिए बंदरगाह समीपता को व्यवस्थित करना आवश्यक था। हम पहले एक और अधिक उन्नत समाधान rinetd और इस कार्य HAProxy, जो बंदरगाहों अग्रेषित कर रहे हैं 5222, 5223 टीसीपी मोड में के लिए इस्तेमाल किया करते थे की जगह का फैसला किया।

डेवलपर्स को

चूंकि WebConsult - एक परियोजना है कि लगातार परिष्कृत और विस्तार किया जाता है, यह एक समाधान डेवलपर्स अपने स्वयं के "सैंडबॉक्स» (सैंडबॉक्स) में सर्वर पर परिवर्तन देखने के लिए अनुमति देता है साथ आने के लिए जरूरी हो गया था, ताकि ग्राहकों को उन सब का परीक्षण करने के बाद ही नोटिस और अंतिम तैनाती कर दिया। इस प्रयोजन के लिए संसाधनों का एक न्यूनतम राशि आवंटित है, जो परीक्षण और डीबगिंग के लिए साइट के संस्करण पेश किया साथ एक अलग कंटेनर OpenVZ बनाया गया था। एक नियंत्रण प्रणाली के रूप में Git संस्करण सामान्य और आधुनिक समाधान के रूप में चुना गया था। परिणाम, एक अलग सर्वर पर उन्हें परीक्षण किया गया था कि डेवलपर्स नई सुविधाएं प्रदान कर सकते हैं, और सब कुछ के बाद उत्पादन में परियोजना है, जो वास्तव में इस परियोजना के काम कर नकल में विफलता और त्रुटियों की संभावना को समाप्त के एक अद्यतन संस्करण तैनाती करने के लिए तैयार है। इसके अलावा, सुविधा के लिए, हमने रेडमाइन के लिए एक छोटा सा प्लगइन लिखा, जो अधिकृत उपयोगकर्ताओं को एक बटन दबाकर डिप्रेस करने की अनुमति देता है।

डेटाबेस

डेटाबेस सर्वर के रूप में, हमने myconq सर्वर के अधिक उत्पादक संस्करण के रूप में पर्कोना सर्वर को चुना।
मेमकाटेड का उपयोग उपयोगकर्ता सत्रों को केंद्रित करने के लिए किया जाता है। इसका उपयोग केवल वेब iptables नियमों के लिए खुला है।

स्केलिंग

एक परिणाम के रूप में, हम एक संरचना के लिए आसान है कि "क्लोनिंग" किसी मौजूदा कंटेनर OpenVZ द्वारा नए वेब सर्वर जोड़कर क्षैतिज पैमाने पर और नई मशीन पर स्थानांतरित करना है। scalability के लिए के रूप में, डेटाबेस, इस पल में, एक शक्तिशाली सर्वर और प्रतिकृति के द्वारा किया सब कुछ के साथ भविष्य में लागू किया जाएगा। इसके अलावा "भारी" काम करता है, जो अब MySQL प्रयोग किया जाता है का हिस्सा है, विस्तृत Redis तरह NoSQL समाधान, गंभीरता से उतारना सर्वर को हस्तांतरित किया जाएगा। में इस दिशा में पहले से ही चल रहा है - इस समय एक अन्य महत्वपूर्ण कार्य से मना करने के क्रम में नियमित HTTP-अनुरोध पर कार्रवाई और इसके बजाय सर्वर के लिए एक निरंतर संपर्क में रखने के लिए वेब सॉकेट पर चैट का अनुवाद है।

आपके ध्यान के लिए धन्यवाद, यदि आपके कोई प्रश्न या सुझाव हैं, तो हमें टिप्पणियों में चर्चा करने में खुशी होगी।

Source: https://habr.com/ru/post/In166739/


All Articles