Sunucuları Değiştirme - Yeni IP'ye yönlendirme = Kesinti Yok mu?


13

Web sitemin sunucularını değiştiriyorum. Eski sunucunun IP'si yenisine taşınamaz. Kesinti olmaması için aşağıdakileri yapmayı planlıyorum, lütfen birisi çalışacağını onaylayın:

  1. Yeni sunucuyu kurun ve yeni IP'yi dinleyin
  2. Eski sunucu tüm trafiği yeni IP'ye yönlendiriyor
  3. DNS kayıtlarını yeni IP'yi gösterecek şekilde değiştirme

Mantık, eski kutumdan yeni IP'ye yönlendirdiğimde, kullanıcının tarayıcıda alan adını görmeyeceğini, ancak yeni IP'yi göreceğini söylüyor. Yeni IP'ye yönlendirmenin ve HOSTNAME ile birlikte göndermenin bir yolu var mı, böylece kullanıcı tarayıcıda alan adını görecek mi?

Bunu site sürekli kullanımda olduğundan ve sadece yayılma sırasında veritabanı yeni ve eski sunucular arasında senkronize edilmeyeceği gibi DNS ayarlarını değiştirmek olmaz bunu yapıyorum.


3
Muhtemelen düşündünüz, ancak bahsetmediniz: ilgili DNS girişlerinin TTL'sini azaltmayı unutmayın.
cjc

Bu web sitesi sadece insanlar tarafından mı kullanılıyor yoksa web sitesine bağlanabilecek uygulamalar var mı? Örneğin web hizmetlerini tüketmek? Bu durumda yine de kesinti süreniz olabilir. Java, DNS sonuçlarını önbelleğe alır ve yeniden başlatılıncaya kadar yeni DNS girişine uymayabilir. Yönlendirmeyi uzun süre çevrimiçi tutamazsanız. Ayrıca şifreleme yönlendirmesi kullanıyorsanız bazı ek adımlar da dahil edilir.
Bram

Ne tür veritabanları kullanıyorsunuz? Değişen DNS'nin kesinti sorununu çözmeyeceği konusunda haklısın, bunu işimde her zaman yaparım ve size ayrıntılı adımlar verebilirim, ancak aynı sunucuda veritabanı yaparsanız genellikle kolayca sona eren küçük bir sorun atıyor gel.
Anthony Fornito

Ayrıca ne tür bir sunucu var windows veya linux, cevap bazı okuduktan sonra hepsi linux işaret ama gerçekten senin IIS linux lezzet vs kullandığınızı hiçbir şey görmüyorum
Anthony Fornito

Yanıtlar:


19

İşte benim için çalışan yöntem:

  1. Dosyaları ve veritabanlarını yeni sunucuyla senkronize edin.
  2. Kesmeden hemen önce yeniden senkronizasyon gerçekleştirin.
  3. DNS'yi yeni sunucuyu gösterecek şekilde değiştirin.
  4. DNS yayılımı tamamlanana kadar eski ip'e gelen isteği yeni sunucuya iletin.

Adım 4'ü nasıl yapacağım:

Linux sunucusundaki IPTable'ları, 80 numaralı bağlantı noktasına (varsayılan web sunucusu bağlantı noktası olan) gelen tüm trafiği IP'ye sahip bir sunucuya yönlendirecek şekilde yapılandıracağız 122.164.34.240. İlk adım, Linux kutunuzu bu tür bir yönlendirmenin gerçekleşmesine izin verecek şekilde ayarlamaktır. Bir terminal penceresi açın, root kullanıcısı olarak oturum açın ve aşağıdaki komutu çalıştırın:

# echo 1 >/proc/sys/net/ipv4/ip_forward

Bir sonraki adım, IPTable'lara trafiği yeni sunucuya yönlendirmesini bildirmektir:

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 122.164.34.240

IPTables sihri burada gerçekleşir. Üçüncü ve son adımda, IPTable'lara yeni sunucunun bağlantı noktası 80'e eski sunucudan gelmiş gibi görünecek bağlantıların kökenini yeniden yazmasını söyleriz.

# iptables -t nat -A POSTROUTING -p tcp -d 122.164.34.240 --dport 80 -j MASQUERADE

Son adım gereklidir, çünkü yeni sunucunun web sunucusuna bağlantıların istemci makinelerden geldiğini söylemezsek, eski sunucudan kaynaklandığını düşünür.

Bunu veritabanları ve e-posta sunucusu bağlantı noktası için de tekrarlamak isteyebilirsiniz.


-D yerine -A mı demek istediniz? -D bir kuralı silmek, değil mi? Her neyse, eski kutunun kesinlikle web'i yüklemediği için yönlendirmeye çalıştığını yaptıktan sonra, ancak yeni web de gösterilmediğinden başarısız oluyor, sadece bağlantı zaman aşımına uğradı diyor. Yapmam gereken başka ayarlar var mı? Belki yeni kutumda bir şey var?
Denis Pshenov

Boş ver, ben tamir ettim! Görünüşe bakılırsa, benim bütün grubum yönlendirmeyi engelliyordu. Kurallara izin vermiştim.
Denis Pshenov

Bunun için üzgünüm. Haklısın, -A ve -D değil. Gönderiyi güncelledim.
Shain Padmajan

1
Sadece bir uyarı - iptables kullanan yaklaşım tüm trafiği yeni siteye yönlendirir, ancak oraya ulaştığında, orijinal tarayıcının gerçek IP adresinden değil, eski sunucunuzdan kaynaklanmış gibi görünecektir. Bu coğrafi analiz gibi şeyleri kıracaktır. Özellikle, 25 numaralı bağlantı noktasını e-posta için bu şekilde iletmek için asla cazip olmayın veya yanlışlıkla eski sunucu üzerinden bir spam göndericiden gelen postalar yeni sunucunuz tarafından sanki kendi makinelerinizden birmiş gibi ele alınacağından yanlışlıkla açık bir geçiş oluşturabilirsiniz. güvenilebilir ve geçişine izin verilir.
Gary Bilkus

@ShainPadmajan, geç olsa da, çok teşekkür ederim, bu 2015 yılında bile cazibe gibi çalıştı.
Abhishek Madhani

5

Birden fazla A kaydı eklemeyi de inceleyebilirsiniz. Örneğin, Google bunu kullanır, nslookup çıktılarını kontrol eder:

Name:       google.com
Addresses:  209.85.148.101
            209.85.148.102
            209.85.148.113
            209.85.148.138
            209.85.148.100
            209.85.148.139

Bir alana birden fazla A kaydı eklerseniz, ziyaretçiler birden çok IP alır ve bu sırayla dener. Biri başarısız olursa, istemci denemek için bir sonrakine geçer.

Yeni IP'yi 24 saat önce ekstra bir A kaydı olarak kurun, yeni sunucuyu başlatın, eskisini kapatın, IP'yi kaldırın.


Bunun dışında, yeni sunucu başlatılana kadar A kaydını eklemeyin. :)
Aaron Copley

@Aaron: neden olmasın? A kaydı eklemek birkaç saat sürer (tam olarak etkinleşmesi 24 saate kadar) ve 2. sunucu açık olmadığı sürece istemciler ilk kaydı seçer.
JapyDooge

Bir bölgenin TTL'si sona erdiğinde, ad sunucunuz kaynak için tekrar sorgulanır ve her iki yanıtı alır. Yeni A kaydını eklerseniz ve sunucuyu başlatmak için biraz zaman beklerseniz, kullanıcılar henüz mevcut olmayan bir ana bilgisayara zaten çözümlenecektir. Yeni sunucu zaten çalışıyorsa, endişelenmenize gerek yoktur.
Aaron Copley

1

Başka bir seçenek VIP (sanal IP) kullanmaktır. Yani, adımlarınız şöyle olacak:

  1. Yeni sunucuyu kurun ve yeni IP'yi dinleyin.
  2. Eski sunucuya bir VIP ekleyin.
  3. DNS kayıtlarını VIP IP'yi gösterecek şekilde değiştirin. Şimdiye kadar tüm trafik eski sunucuya gönderilecek, ancak VIP kullanılacaktır.
  4. Gitmeye hazır olduğunuzda VIP'yi yeni sunucuya taşıyın.
  5. İsteğe bağlı olarak, DNS'yi yeni sunucu IP'sine değiştirebilir ve VIP'yi (bir süre sonra) DNS'den kaldırabilirsiniz.

Çözümünü beğendim. Ama VIP ve nasıl alınır bilmiyorum. Doğru yönü gösterebilir misiniz?
Denis Pshenov

Gerçekten çok basit. Gibi bir komut ifconfig eth0:0 <ip> <mask> up, IP ile yapılandırılmış bir alt arabirim oluşturur ve ifconfig eth0:0 downdevre dışı bırakmak için yeterlidir.
Khaled

0

Tamam, Veritabanı çoğaltmasından bahsettiğiniz için aşağıdakileri yapmanız gerekir.

  1. İki sunucudaki veritabanları arasında çoğaltma kurulumu.
  2. Kesme sırasında, yeni sunucunun DB'sini birincil ve eski sunucuyu salt okunur yapın.
  3. Uygulamanın Veritabanı Bağlantı Dizesini hem eski hem de yeni sunucudaki Yeni sunucuya yönlendirin. Sitenizde Oturumlar kullanılıyorsa, oturumun DB'de devam ettiğinden emin olun.
  4. DNS'deki IP adresini yeni sunucuya değiştirin.
  5. Her iki sunucuyu da en az 48 saat çalıştırmaya devam edin.

0
  1. Yeni sunucuyu kurun ve yeni IP'yi dinleyin
  2. Ardından şeffaf yönlendirmeyi yapılandırın. Eski sunucuda rinetd yükleyin.

Rinetd.conf dosyasında:

OLD_SERVER_IP 80 NEW_SERVER_IP 80
  1. DNS kayıtlarını yeni IP'yi gösterecek şekilde değiştirme

Aet-get install rinetd yaptım, /etc/rinetd.conf dosyasını yeni ayarlarla değiştirdim, /etc/init.d/rinetd restart ile yeniden başlattım ama yönlendirme yapmıyor. Ayrıca günlükte hiçbir şey gösterilmiyor /var/run/rinetd.log
Denis Pshenov

Göster iptables-save ve cat /etc/sysctl.conf | grep ip_forwardlütfen.
yadaya

0

web sunucularınızın önünde HA-Proxy kullanabilirsiniz, bunlardan biri bakım moduna girdiği zaman ikincil sunucu devralacaktır.


-1

Ne yapacağınız listesi oldukça mantıklı görünüyor.

Örnek olarak, eski sunucudaki apache'de böyle bir şey yaptığınızda apache kullandığınızı varsayarsak:

redirect permanent / http://newserver.example.com

Kullanıcı eski siteye göz atarken yeni etki alanını tarayıcıda görür. Bu durumda yönlendirme, tarayıcı çalıştığı sürece de kalıcıdır.

Bu nedenle, diğer değişikliklerin yanı sıra web sunucunuza bir tür yönlendirme uyguladığınız sürece iyi olmalısınız.

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.