NFS पर NFSx के साथ स्थिर फ़ाइलों को सेवित करना?


9

मेरे पास एक वेबसाइट है जो एक nginx सर्वर पर प्रति सेकंड 7k अनुरोध प्राप्त कर रही है। यह सर्वर दोनों एक अपाचे सर्वर को फिर से लिखता है और साथ ही स्टैटिक फाइल्स, इमेज आदि को सीधे सेवित करता है। लगभग 5k अनुरोधों के साथ स्टेटिक फाइलें वहां का सबसे बड़ा हिस्सा हैं।

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

क्या इसके लिए NFS काफी तेज है? क्या एनएफएस कितने अनुरोधों को संभाल सकता है, इसकी कोई सीमा है? क्या इस तरह से जाने पर कुछ "होना चाहिए" विकल्प हैं?

बोनस: क्या एनएफएस के अलावा इस सेटअप के लिए अन्य विकल्प हैं?

धन्यवाद!


कोई रीड-एक्सेस, या "केवल" रीड-एक्सेस नहीं है?
pauska

धन्यवाद! केवल रीड-ऐक्सेस, नो राइट एक्सेस।
14:15 बजे j0nes

2
7k अनुरोध एक सेकंड है ~ 6,048,00,000 एक दिन का अनुरोध करता है, यदि आप एक एकल NGINX सर्वर पर चल रहे हैं, तो हम (और कंपनियां जो लोड के लिए सर्वर के क्लस्टर का उपयोग करती हैं) आपके सेटअप को जानना पसंद करेंगे।
स्मज करें

जवाबों:


2

एक केंद्रीय एनएफएस सर्वर स्थापित करके आप अपने डिजाइन में विफलता का एक बिंदु पेश करते हैं। कि अकेले एक सौदा ब्रेकर होना चाहिए। यदि नहीं, तो एनएफएस इस तरह के लोड के लिए काफी तेज हो सकता है। महत्वपूर्ण कारक कैश फ़ाइलों, कम विलंबता इंटरकनेक्ट (गिग-ई या बेहतर), और ट्यूनिंग (पिछले की तुलना में कम) के लिए पर्याप्त रैम वाले होंगे।

आपको प्रत्येक व्यक्तिगत वेबसर्वर पर स्थैतिक फ़ाइलों के अपडेट की स्थानीय प्रतियों को रखने के लिए rsync या इसी तरह के टूल का उपयोग करने पर भी दृढ़ता से विचार करना चाहिए। एक अन्य विकल्प एक SAN या निरर्थक NFS सर्वर समाधान हो सकता है (दोनों जिनमें से rsync विचार की तुलना में बहुत अधिक जटिल और महंगा होने वाला है)।


2
NFS
gWaldo

@gWaldo आप "केंद्रीय NFS सर्वर" की स्थापना कैसे कर सकते हैं और क्या यह SPoF नहीं है?
क्रिस एस

आप इसे साकार करते हैं, जैसा कि आपने कहा, एक केंद्रीय एनएफएस सर्वर एक एसपीओएफ है, और इसके बजाय एनएफएस क्लस्टर को लागू करने का विकल्प चुनें। मैं वास्तव में आपसे असहमत नहीं हूँ ....
gWaldo

धन्यवाद - इस समाधान को स्वीकार करना क्योंकि मुझे लगता है कि मैं rsync मार्ग पर जाऊंगा, असफलता की एक भी बात (जो मेरी चिंता का विषय होना चाहिए) से बचना।
j0nes

GlusterFS और CTDB का उपयोग करके उच्च-उपलब्धता दोहरे प्रतिकृति NFS सर्वर को लागू करना काफी सरल है। प्रदर्शन के मामले में मेरे क्लस्टर को प्रति सेकंड लगभग 10k अनुरोध प्राप्त हो रहा था और यह अच्छी तरह से टूट रहा है। केवल समस्या यह है कि NFS सर्वर को बहुत सारे RAM की आवश्यकता होगी।
अल्फा 01

2

मैं एक स्थानीय HD को NFS फ़ाइलों को कैश करने के लिए cachefilesd (और हाल ही में लिनक्स कर्नेल के साथ) का उपयोग करता हूं । इस तरह, एनएफ़एस में पढ़ा जाने वाला हर फ़ाइल फ़ाइल को / var / cache / fs dir पर कॉपी कर देगा और अगली रीड वहाँ से डिलीवर हो जाएगी, अगर सामग्री अभी भी मान्य है, तो nfs में कर्नेल जाँच के साथ।

इस तरह आपके पास एक केंद्रीय NFS हो सकता है, लेकिन स्थानीय फ़ाइलों के प्रदर्शन को खोए बिना

Cachefilesd पुरानी फ़ाइलों की सफाई का ध्यान रखेगा जब मुक्त आकार / इनोड्स एक कॉन्फ़िगर स्तर तक पहुंचते हैं, इसलिए आप NFS से असामान्य डेटा और एचडी से सामान्य अनुरोधों की सेवा कर सकते हैं।

बेशक, अधिक सामान्य अनुरोधों को कैश करने के लिए एक वार्निश का उपयोग करें और तब नगनेक्स / एनएफएस को परोसने से बचाएं।

यहाँ एक छोटा कैशफाइल्स है


1

गति कई कारकों पर निर्भर करती है:

  • आपके सर्वर एनएफएस लक्ष्य के खिलाफ कैसे जुड़े होंगे? एक सिंगल ड्यूल-पोर्ट एसएएस डिस्क ट्रांसफर स्पीड के 6gbit / s का उपयोग कर सकता है। इसे ध्यान में रखें यदि आप 1gig ईथरनेट (जिसे आप 20% टीसीपी ओवरहेड से घटा सकते हैं) का उपयोग करने की योजना बना रहे हैं।
  • NFS सर्वर किस प्रकार का कैश प्राप्त करने वाला है? क्या आप बहुत सारे कैश के साथ एंटरप्राइज ग्रेड एरे कंट्रोलर का उपयोग कर रहे हैं? इस सेटअप में पढ़ें कैश प्रमुख है
  • एक ही फाइल को एक साथ कितने सर्वर एक्सेस करने वाले हैं? एनएफएस लॉकिंग चोट कर सकता है - बुरी तरह से

एनएफएस के माध्यम से खुली फाइलों की सीमा मेजबान ऑपरेटिंग सिस्टम की एक सीमा है। उदाहरण के लिए FreeBSD के पास बड़ी संख्या में खुली फ़ाइलों का समर्थन करने के लिए कई अलग-अलग ट्यूनिंग विकल्प हैं , लेकिन यह आपके सर्वर में रैम की मात्रा पर निर्भर करता है।

केंद्रीय फ़ाइल सर्वर का एक विकल्प अपने वेब सर्वर (जैसे क्रिस एस सुझाव) के बीच सिंक्रनाइज़ेशन / प्रतिकृति का उपयोग करना है। rsync या DRBD एक बेहतरीन और किफायती विकल्प हो सकता है।


1

मैं NFS के खिलाफ सलाह दूंगा जब तक आप वहां कुछ कैशिंग नहीं डालते। नगीनस कैश कुछ नहीं से बेहतर है, लेकिन वार्निश बेहतर है।

इसके साथ ही, यदि आपका लोड स्थिर से अधिक गतिशील सामग्री में बदल जाएगा, तो स्थानीय डिस्क से ऐप्स फ़ाइलों की सेवा करना अधिक महत्वपूर्ण हो जाएगा।

यदि आप एनएफएस डालते हैं, तो सुनिश्चित करें कि आपके पास अतिरेक है।


इसके लिए थोड़े से वास्तुकला परिवर्तन की आवश्यकता हो सकती है। वार्निश जैसी कैशिंग परत का उपयोग करने के अलावा, सभी स्थिर फ़ाइलों के लिए एक मूल पुल सीडीएन सेटअप का उपयोग करना भी एक अच्छा विचार है जो एनएफएस शेयर पर होगा। यह एनएफएस बैकएंड को लोड करने को कम करेगा।
अल्फा 01
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.