Hosts dosyasında 1 girişe birden fazla IP atayın


29

Bir VPN üzerinden dahili bir veritabanına bağlanan bir web sunucusuna sahibim. Veritabanında web sunucusundan 2 IP (birincil ve ikincil) vardır. Birincil IP mevcut değilse ikincil IP kullanılacaksa / etc / hosts dosyasını nasıl ayarlayabilirim?

Bu benim hosts dosyam için işe yarar mı?

141.131.286.1   abc.efg.datastore.com   #primary

141.131.286.237 abc.efg.datastore.com   #secondary

Yanıtlar:


26

Anasistem dosyası böyle bir mekanizma sağlamaz. Aynı ad için iki IP listeliyorsanız, yalnızca birincisi kullanılacaktır. Yani, birincil ve ikincil IP'ler diye bir şey yoktur.

Ayrıca, hosts dosyası URL'leri işlemez. Sadece soruda verilenler gibi adları kullanır. Bir URL, tam yol ve gibi bir protokol içerir http://host/path/to/resource.


URL’ler / ana bilgisayarlarla ilgili karışıklığı ortadan kaldırmak için OP’lerin sorusunda düzenlenen başlık ve adlandırma sorunu.
dmourati

14

Esneklik veya yuvarlak robin yükünü /etc/hostsdosya üzerinden dengeleme sağlayamazsınız - bu amaç için tasarlanmamıştır.

Bunun yerine , seçenekleriniz ... (belirli bir sırada değil)

  1. Ağınızı düzgün bir şekilde yapılandırın, böylece bir bağlantı bırakıldığında yollar değişebilir
  2. Yönetilen bir hizmeti kullanarak DNS yuvarlak-robin yük dengelemesini kullanın (A Good Idea TM değil ) (ör. Loaddns.com veya dnsmadeeasy.com vb.)
  3. Giden trafik için yerel bir L3 yük dengeleyici kullanın (HAProxy?) Gerektiği gibi arka uçları kullanın
  4. Esnekliği web uygulamanızın içine yerleştirin

DNS yuvarlak-robin yük dengeleme genellikle esnek değildir. Biri seçildi ve diğerleri denenmedi.
Antti Rytsölä Circles, 19.09.2012

Başka bir seçenek bağlantıyı bir IP'ye iletmek için netcat veya başka bir yazılımı kullanmak olabilir. Sonra bir IP kaybedilirse iletimi değiştirin.
Antti Rytsölä Circles, 19:12

1
@anttiR DNS RR tek başına esnekliği yoktur, ancak yaptığı yönetilen bir DNS servis sağlayıcısı aracılığıyla kullanılır. Cevaplarımı değiştirdim ve daha açık olması için bazı örnekler verdim.
Ben Lessani - Sonassi

Veritabanında harika çalışacağından şüpheliyim. Bir IP alma ve ona bağlı kalma eğilimindedirler. Öte yandan bir internet sitesi çok iyi sonuç verirdi.
Antti Rytsölä Circles,

Bu, ana makinenin çözümleyicisine bağlı olacaktır. DNS çözücüsü önbelleğe alınamayan bir hizmet olarak ayarlanmışsa - veya doğrudan DNS kayıt memurlarını DB çağırırsa, işe yarayacaktır. Ama dediğim gibi, bu iyi bir fikir değil , sadece bir fikir .
Ben Lessani - Sonassi

3

/ etc / hosts round robin özelliğini desteklemiyor, ancak #RoundRobin yorumuyla etiketlenmiş bir girişi değiştirmek için baştan başa basmak için basit bir bash betiği yazabilirsiniz (veya kullanmak istediğiniz herhangi bir etiketi, betiğin grep satırına yansıtın) .

#!/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

Yukarıdaki komut dosyası, sub.domain.com için nslookup çıktısını alır ve onu bir dizide saklar. Daha sonra en üstteki değeri $ new olarak yazdırır ve / etc / hosts dosyasında atanan #RoundRobin etiketi için varolan değeri alır ... son olarak, bir sed yerine geçer.

/ etc / hosts dosyası girişi şöyle görünür

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

Son olarak, bu betiği her saat veya daha fazla çalıştırmak için kökün crontab'ına yerleştirin ve şimdi / etc / host round-robin'iniz olacak.

Bu, özellikle bir API’den bazı verileri çeken kodlanmış bir sayfanız varsa ve API sunucusunun DNS araması, sayfanın komut dosyası çalıştırma işleminde çok fazla bekleme süresine neden oluyorsa ... Basit bir sayfa gibi görünüyor. Pahalı DNS aramasından kaçınmak için (özellikle siteniz yoğun trafikte dakika başına yüzlerce yapıyorsa), uzak API sunucusunun FQDN'sini çözmek için / etc / hosts dosyasını kullanmalısınız. Bu, API verilerini çekmek ve sayfayı oluşturmak için CPU kullanımını önemli ölçüde azaltır.


Önbelleğe alma dns, dakikada yüzlerce arama durumunuzu hafifletmez mi?
Xalorous

DNS sunucusunu kontrol etmiyorum, CentOS web sunucusunda ayarlayabildiğim bir şey mi?
Satalink


0

Evet, işe yarayacaktı.

Bununla birlikte, arama mekanizması basitçe bir eşleşme bulana kadar liste yapar.

Dolayısıyla, sorunun yazıldığı gibi cevabı YES iken, bu bir zorluk olacaktır. Ama aşılmaz bir şey değil.

Bunu deneyin: Bu IP adreslerinin her birinin gerçekten farklı adlara sahip olması gerekir.


1
Hayır, işe yaramaz. / Etc / hosts dosyasında bir değerin ikinci oluşumu asla kullanılmaz. İkinci IP adresini farklı bir ana bilgisayar adıyla yeniden adlandırırsa, yük dengelemesi için uygulamasında bir şeyler yapması gerekir. DNS veya DNS + Yük Dengeleyici doğru cevap olduğunda bu çok pahalı ve zorlu olacak.
Xalorous

0

Bunu gerçekleştirmenin kolay yolu, sadece AWS Route53 gibi bir genel DNS servisi kullanmak olacaktır. Her A kaydı için öncelikli olarak birden fazla IP adresi girebilirsiniz.

abc.efg.datastore.com

10 141.131.286.1  
20 141.131.286.237 

Sertifikalar dahil olmadığı sürece, bu çalışır ve herhangi bir norm veya en iyi uygulamaya karşı bile değildir.

NSLookup veya diğer etki alanı sorguları her iki adresi de döndürür. Uygulamanızın bununla başa çıkabilmesi gerekiyor. Ve evet, etki alanının yalnızca yerel bir ana bilgisayar adı değil, genel olarak tescilli olması gerekir.


Tarayıcılar bunun üstesinden gelebilecek, eğer 10 mevcut değilse, 20'ye düşecektir. Kesinlikle uygulamaya bağlıdır ve kullanılabilirliği kontrol etmek için gereken bir nokta da olmalıdır - daha karmaşık bir şeyler ayarlamak istiyorsanız ve yük dengelemede pahalıdır.
bortran

Akayıtların öncelikli bir alanı yok. Bazı yetkili DNS hizmetleri, kayıt ağırlığına sahiptir, ancak bu olasılıkla kayıtları dahil etme veya hariç tutma yoluyla yapılır.
Matt Nordhoff

0

Kurulumu kolay, lütfen talimatları izleyin:

  1. dnsmasq yükleyin
  2. /etc/resolv.conf dosyasını düzenleyin ve "nameserver 127.0.0.1" i ilk DNS olarak ayarlayın
  3. alternatif olarak normal DNS ekle (örneğin, google one) ikinci satır olarak "nameserver 8.8.8.8"
  4. iki gerekli kaydın / etc / hosts dosyanızda olduğundan emin olun
  5. Şimdi abc.efg.datastore.com bir komut dosyası ile kontrol edin,

    böylece RR-DNS ile iki kayda cevap vermelisiniz , böylece listeden bir düğüm kapalıysa - uygulamanız diğerine bağlanacaktır

1
IP yığını, DNS'ye danışmadan önce otomatik olarak ana bilgisayar dosyasını kontrol eder. Bunun IP tanımının bir parçası olduğuna inanıyorum, ancak Windows ve Linux'un bu modeli takip ettiğini biliyorum. Dnsmasq'a ihtiyacı yoktur ve eğer /etc/resolv.conf dosyasını bu şekilde değiştirirse, gerçek DNS sunucusuyla olan bağlantısını kaybedecektir.
Xalorous

doğru değil, resolv.conf 'a birden fazla satır koyabilir, böylece bir sonraki satır "nameserver 8.8.8.8" olabilir, örneğin, varolan kayıtları önbelleğe almak için + nscd, bu yaklaşım tam olarak açıklanan sorunu çözer
Ihor Kolodyuk

Ona yapmasını söylediğin şey değildi. Ona ad sunucusunu geridöngü olarak ayarlamasını söyledin. Bir döngü sunucusu olarak loopback ekle demedi. Ancak, ana bilgisayar adında çalışmıyorsa veya hatta geridönüşümü dinlemiyor olsa bile, o adrese yapılan dns sorguları cevapsız kalacaktır. Adresleri hosts dosyasına eklemek, çözümlenmelerine izin verir, ancak aynı ana bilgisayar adına sahiplerse, yalnızca birincisi kullanılacak ve en baştan başlayacağız. Cevap, DNS’de ağırlıklı takma adlarla sanal bir ana bilgisayar ayarlamak veya veritabanını bir yük dengeleyici ile hazırlamaktır.
Xalorous

Bu tam olarak ona söylediğim gibi, dnsmasq bir isim sunucusu proxy'si gibi davranıyor. Bu yaklaşım işe yarıyor.
Ihor Kolodyuk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.