मेजबान फ़ाइल में 1 प्रविष्टि के लिए कई आईपी असाइन करें


29

मेरे पास एक वेब गंभीर है जो एक वीपीएन के माध्यम से आंतरिक डेटाबेस से जुड़ता है। वेब सर्वर से डेटाबेस में 2 आईपी (प्राथमिक और माध्यमिक) हैं। मैं अपनी / etc / मेजबानों की फाइल कैसे सेटअप कर सकता हूं ताकि यदि प्राथमिक आईपी उपलब्ध नहीं है तो द्वितीयक आईपी का उपयोग किया जाएगा?

क्या यह मेरे होस्ट फ़ाइल के लिए काम करेगा?

141.131.286.1   abc.efg.datastore.com   #primary

141.131.286.237 abc.efg.datastore.com   #secondary

जवाबों:


26

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

साथ ही, होस्ट फ़ाइल URL को हैंडल नहीं करती है। यह प्रश्न में दिए गए नामों की तरह ही नामों को संभालता है। एक URL में संपूर्ण पथ और प्रोटोकॉल जैसे होते हैं http://host/path/to/resource


OPs में संपादित शीर्षक और नामकरण URL / मेजबानों के बारे में भ्रम को समाप्त करने के लिए प्रश्न करते हैं।
dmourati

14

आप /etc/hostsफ़ाइल के माध्यम से लचीलापन या राउंड रॉबिन लोड संतुलन प्रदान नहीं कर सकते - यह उस उद्देश्य के लिए डिज़ाइन नहीं किया गया है।

इसके बजाय , आपके विकल्प हैं ... (किसी विशेष क्रम में नहीं)

  1. अपने नेटवर्क को ठीक से कॉन्फ़िगर करें, ताकि लिंक हटने पर मार्ग बदल जाएं
  2. एक प्रबंधित सेवा (जैसे। Loaddns.com या dnsmadeeasy.com आदि) का उपयोग करते हुए DNS राउंड-रॉबिन लोड बैलेंस ( नॉट ए गुड आइडिया टीएम ) का उपयोग करें।
  3. आउटबाउंड ट्रैफ़िक (HAProxy?) के लिए एक स्थानीय L3 लोड बैलेंसर का उपयोग करें, जिसमें बैक-एंड्स को आवश्यक रूप से परिभाषित किया गया है
  4. अपने वेब एप्लिकेशन में ही लचीलापन का निर्माण करें

डीएनएस राउंड-रॉबिन लोड संतुलन आमतौर पर लचीला नहीं होता है। एक का चयन किया जाता है और अन्य की कोशिश नहीं की जाती है।
एंट्टी रायट्सला सर्कल्स

एक अन्य विकल्प एक आईपी से कनेक्शन को आगे बढ़ाने के लिए नेटकैट या किसी अन्य सॉफ़्टवेयर का उपयोग किया जा सकता है। फिर एक आईपी खो जाने पर फॉरवर्ड बदल दें।
एंट्टी रयोटोला सर्कल्स

1
अकेले @ आरएनटीआरआर आरआर में कोई लचीलापन नहीं है, लेकिन एक प्रबंधित डीएनएस सेवा प्रदाता के माध्यम से इसका उपयोग किया जाता है। मैंने अपने उत्तर संपादित कर दिए हैं और स्पष्ट होने के लिए कुछ उदाहरण दिए हैं।
बेन लेसानी - सोनासी

मुझे संदेह है कि यह डेटाबेस के साथ बहुत अच्छा काम करेगा। उनके पास एक आईपी लाने और उस पर छड़ी करने की प्रवृत्ति है। दूसरी ओर एक इंटरनेट वेबसाइट बहुत अच्छा काम करेगी।
एंट्टी रयोटोला सर्कल्स

यह मेजबान मशीन के रिज़ॉल्वर पर निर्भर करेगा। यदि DNS रिज़ॉल्वर को गैर-कैशिंग सेवा के लिए सेट किया गया है - या DNS रजिस्ट्रार डीबी को सीधे मतदान करता है, तो यह काम करेगा। लेकिन जैसा मैंने कहा, यह एक अच्छा विचार नहीं है , यह सिर्फ एक विचार है
बेन लेसानी - सोनासी

3

/ etc / मेजबान राउंड रॉबिन का समर्थन नहीं करते हैं, लेकिन आप एक सरल बैश स्क्रिप्ट को एक #RoundRobin टिप्पणी (या आपके द्वारा उपयोग किए जाने वाले किसी अन्य टैग के साथ टैग की गई प्रविष्टि को बदलने के लिए, बस इसे स्क्रिप्ट में grep लाइन में दर्शा सकते हैं) लिख सकते हैं) ।

#!/bin/bash
fqdnips=( $(nslookup sub.domain.com|grep Address:|awk -F\  '{ print $2 }'|grep -v '#') )

new=`printf "${fqdnips[@]}"`
old=`grep "#RoundRobin" /etc/hosts|awk -F\  '{ print $1 }'`
sed -i "s/$old/$new/g" /etc/hosts

उपरोक्त स्क्रिप्ट sub.domain.com के लिए nslookup के आउटपुट को पकड़ती है और इसे एक सरणी में संग्रहीत करती है। इसके बाद यह $ $ के लिए सबसे अधिक मूल्य प्रिंट करता है और टैग के लिए मौजूदा मूल्य #RoundRobin / etc / host में दिया जाता है ... अंतिम रूप से, यह एक sed प्रतिस्थापन करता है

/ etc / होस्ट फ़ाइल प्रविष्टि इस तरह दिखेगी

127.0.0.1        localhost
::1              localhost
11.12.13.14      sub.domain.com      #RoundRobin

अंत में, इस स्क्रिप्ट को हर घंटे चलाने के लिए रूट के कॉन्टैब में रखें और अब आपके पास एक / etc / host राउंड-रॉबिन होगा।

यह विशेष रूप से उपयोगी है यदि आपके पास एक कोडित पृष्ठ है जो एपीआई से कुछ डेटा खींच रहा है और एपीआई सर्वर के लिए डीएनएस लुकअप पृष्ठ की स्क्रिप्ट निष्पादन में बहुत समय लटका रहा है ... जिसके परिणामस्वरूप उच्च सीपीयू की खपत होती है अन्यथा क्या होगा एक साधारण पृष्ठ प्रतीत होता है। महंगा DNS लुकअप से बचने के लिए (विशेषकर यदि आपकी साइट प्रति मिनट सैकड़ों भारी ट्रैफ़िक करती है), तो आपको दूरस्थ API सर्वर के FQDN को हल करने के लिए / etc / host का उपयोग करना चाहिए। यह एपीआई डेटा को खींचने और पेज बनाने के लिए सीपीयू के उपयोग को नाटकीय रूप से कम करेगा।


प्रति मिनट सैकड़ों लुकअप के अपने मामले को समाप्त नहीं करना चाहेगा?
ज़लालोरस

मैं DNS सर्वर को नियंत्रित नहीं करता, क्या ऐसा कुछ है जिसे मैं CentOS वेब सर्वर पर सेट कर सकता हूं?
15


0

हाँ, यह काम करेगा।

हालाँकि, खोज तंत्र बस सूची तब तक करता है जब तक कि वह एक मैच नहीं पाता।

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

इसे आज़माएं: उनमें से प्रत्येक IP पते में वास्तव में अलग-अलग नाम होना चाहिए।


1
नहीं, यह काम नहीं करेगा। / Etc / मेजबान में एक मूल्य की दूसरी घटना का उपयोग कभी नहीं किया जाएगा। और यदि वह एक अलग होस्ट नाम के साथ दूसरे आईपी पते का नाम बदल देता है, तो अब उसे लोड संतुलन करने के लिए अपने ऐप में कुछ करना होगा। यह महंगा और एक कीचड़ होने वाला है, जब DNS या DNS + लोड बैलेंसर सही उत्तर है।
ज़लालोरस

0

ऐसा करने का आसान तरीका सिर्फ AWS रूट53 की तरह एक सार्वजनिक DNS सेवा का उपयोग करना होगा। आप प्राथमिकता के साथ प्रति रिकॉर्ड कई आईपी पते दर्ज कर सकते हैं

abc.efg.datastore.com

10 141.131.286.1  
20 141.131.286.237 

जब तक कोई प्रमाण पत्र शामिल नहीं होता है यह काम कर रहा है और किसी भी मानदंडों या सर्वोत्तम प्रथाओं के खिलाफ भी नहीं है।

NSLookup या अन्य डोमेन क्वेरी दोनों पते लौटाएगी। आपके ऐप को इसे संभालने में सक्षम होना चाहिए। और हाँ, डोमेन को सार्वजनिक रूप से पंजीकृत होना चाहिए, न कि केवल स्थानीय होस्टनाम।


ब्राउज़र इसे संभाल सकेंगे, अगर 10 उपलब्ध नहीं है, तो यह 20 पर वापस आ जाएगा। यह निश्चित रूप से ऐप पर निर्भर करता है और वहाँ भी बिंदु होना चाहिए जहां आप उपलब्धता की जांच करते हैं - यदि आप कुछ और अधिक जटिल सेट करना चाहते हैं और लोड संतुलन के साथ महंगा है।
बोर्ट्रान

Aरिकॉर्ड में प्राथमिकता क्षेत्र नहीं है। कुछ आधिकारिक डीएनएस सेवाओं में रिकॉर्ड वेटिंग होती है, लेकिन यह रिकॉर्ड्स को शामिल या बाहर करने के लिए संभावित रूप से किया जाता है।
मैट नॉर्डहॉफ

0

सेटअप करने में आसान, कृपया निर्देशों का पालन करें:

  1. dnsmasq स्थापित करें
  2. /etc/resolv.conf को संपादित करें और "नेमसर्वर 127.0.0.1" को पहले DNS के रूप में सेट करें
  3. विकल्प के रूप में सामान्य DNS जोड़ें (उदाहरण के लिए google एक) दूसरी पंक्ति के रूप में "नेमसर्वर 8.8.8.8"
  4. सुनिश्चित करें कि दो आवश्यक रिकॉर्ड आपके / etc / होस्ट फ़ाइल में हैं
  5. अब एक कमांड होस्ट के साथ जांचें abc.efg.datastore.com

    जो RR-DNS के साथ दो रिकॉर्ड का जवाब देना चाहिए ताकि यदि सूची से एक नोड नीचे है - तो आपका एप्लिकेशन दूसरे से कनेक्ट हो जाएगा

1
DNS को सलाह देने से पहले आईपी स्टैक स्वचालित रूप से होस्ट फ़ाइल की जांच करता है। मेरा मानना ​​है कि यह आईपी परिभाषा का एक हिस्सा है, लेकिन मुझे पता है कि विंडोज और लिनक्स दोनों इस पैटर्न का पालन करते हैं। उसे dnsmasq की आवश्यकता नहीं है, और यदि वह अपना /etc/resolv.conf इस तरह से बदलता है, तो वह अपने वास्तविक DNS सर्वर से कनेक्शन खो देगा।
ज़ालोरोस

सच नहीं है, वह कई पंक्तियों को resolv.conf में डाल सकता है इसलिए अगली पंक्ति "नेमसर्वर 8.8.8.8" हो सकती है, उदाहरण के लिए, मौजूदा रिकॉर्ड्स को कैशिंग के लिए + nscd, यह दृष्टिकोण वास्तव में उस समस्या को हल करता है जिसका वर्णन किया गया था
Ihor Kolodyuk

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

यही कारण है कि मैंने उससे कहा, dnsmasq एक नेम सर्वर प्रॉक्सी के रूप में कार्य कर रहा है। यह दृष्टिकोण काम करता है।
इहोर कोलोदुक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.