Cambio server - Reindirizzamento al nuovo IP = Nessun tempo di inattività?


13

Sto cambiando i server del mio sito Web. L'IP del vecchio server non può essere spostato su quello nuovo. Per non avere tempi di inattività, sto programmando di effettuare le seguenti operazioni, per favore qualcuno confermi che funzionerà:

  1. Configura il nuovo server e ascolta sul nuovo IP
  2. Il vecchio server reindirizza tutto il traffico verso il nuovo IP
  3. Modifica i record DNS in modo che puntino al nuovo IP

La mia logica mi dice che quando reindirizzerò al nuovo IP dalla mia vecchia casella, l'utente non vedrà il nome di dominio nel browser ma vedrà il nuovo IP. C'è un modo per reindirizzare al nuovo IP e inviare insieme a HOSTNAME in modo che l'utente possa vedere il nome di dominio nel browser?

Lo sto facendo perché il sito è in costante uso e la semplice modifica delle impostazioni DNS non farà in quanto il database non verrà sincronizzato tra il nuovo e il vecchio server durante la propagazione.


3
Probabilmente ci hai pensato, ma non l'hai menzionato: non dimenticare di ridurre il TTL delle voci DNS pertinenti.
cjc

Questo sito Web è utilizzato solo da esseri umani o ci sono applicazioni che potrebbero connettersi ad esso? Ad esempio, consumare servizi Web? In tal caso, potresti comunque avere dei tempi di inattività. Java memorizza nella cache i risultati DNS e potrebbe non rispettare la nuova voce DNS fino al riavvio. A meno che non sia possibile mantenere l'inoltro online per molto tempo. Inoltre, se si utilizza il reindirizzamento della crittografia, sono necessari alcuni passaggi aggiuntivi.
Bram,

Che tipo di database stai usando? Hai ragione nel dire che cambiare DNS non risolverà il problema dei tempi di inattività, lo faccio sempre nel mio lavoro e posso darti passaggi dettagliati, tuttavia se si esegue il database sullo stesso server, si genera un problema minore che di solito è facilmente risolto venire.
Anthony Fornito,

Inoltre, che tipo di server hai Windows o Linux, dopo aver letto alcune delle risposte puntano tutte a Linux, ma in realtà non vedo nulla nella tua domanda che stai usando IIS vs Linux
Anthony Fornito,

Risposte:


19

Ecco il metodo che ha funzionato per me:

  1. Sincronizza i file e i database con il nuovo server.
  2. Eseguire una risincronizzazione appena prima del cut-off.
  3. Modificare il DNS in modo che punti al nuovo server.
  4. Inoltra la richiesta che arriva al vecchio ip al nuovo server fino al completamento della propagazione DNS.

Ecco come farei il passaggio 4:

Configureremo IPTables su un server Linux per reindirizzare tutto il traffico proveniente dalla porta 80, (che è la porta predefinita del server Web), su un server con l'IP 122.164.34.240. Il primo passo è impostare il tuo box Linux per consentire questo tipo di inoltro. Aprire una finestra del terminale, accedere come utente root ed eseguire il comando seguente:

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

Il prossimo passo è dire a IPTables di reindirizzare il traffico al nuovo server:

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

Ecco dove accade la magia di IPTables. Con il terzo e ultimo passaggio, diciamo a IPTables di riscrivere l'origine delle connessioni alla porta 80 del nuovo server in modo che appaia dal vecchio server.

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

Il passaggio finale è necessario perché se non diciamo al server Web del nuovo server che le connessioni provengono dai computer client, si potrebbe pensare che provengano dal vecchio server.

Potresti voler ripetere questo anche per i database e la porta del server di posta elettronica.


intendevi -A invece di -D ?? MrGreen è cancellare una regola, vero? Ad ogni modo, dopo che ho fatto che la vecchia casella sta sicuramente cercando di reindirizzare perché non sta più caricando il web, ma fallisce perché neanche il nuovo web sta mostrando, dice solo che la connessione è scaduta. Ci sono altre impostazioni che devo fare? Forse qualcosa sulla mia nuova scatola?
Denis Pshenov,

Non importa, l'ho risolto! Risulta che il mio shorewall stava bloccando il reindirizzamento. L'avevo permesso nelle regole.
Denis Pshenov,

Mi dispiace per quello. Hai ragione, era -A e non -D. Ho aggiornato il post.
Shain Padmajan,

1
Solo un avvertimento: l'approccio che utilizza iptables inoltrerà tutto il traffico al nuovo sito, ma quando arriva lì, sembrerà provenire dal tuo vecchio server e non dall'indirizzo IP effettivo del browser originale. Questo romperà cose come l'analisi geografica. In particolare, non essere mai tentato di inoltrare la porta 25 in questo modo per la posta elettronica o potresti creare accidentalmente un relay aperto perché la posta proveniente da uno spammer tramite il vecchio server verrà trattata dal tuo nuovo server come se provenisse da una delle tue macchine che potrebbe ben fidati e autorizzati a trasmettere.
Gary Bilkus,

@ShainPadmajan, anche se in ritardo, grazie mille, ha funzionato come un incantesimo anche nel 2015.
Abhishek Madhani,

5

Puoi anche cercare di aggiungere più record A. Ad esempio, Google lo utilizza, controlla il loro output nslookup:

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

Se aggiungi più record A a un dominio, i visitatori riceveranno più IP e li proveranno in quell'ordine. Se uno fallisce, il client passa al successivo per provare.

Imposta il nuovo IP come record A aggiuntivo 24 ore prima, avvia il nuovo server, spegni il vecchio, rimuovi l'IP.


Tranne, non aggiungere il record A fino a quando non è stato avviato il nuovo server. :)
Aaron Copley il

@Aaron: perché no? L'aggiunta di un record A richiede più ore (fino a 24 ore per essere completamente attiva) e fino a quando il secondo server non è attivo, i client sceglieranno il primo.
JapyDooge,

Quando il TTL per una zona scade, il tuo nameserver viene nuovamente interrogato per la risorsa e otterrà entrambe le risposte. Se aggiungi il nuovo record A e attendi un tempo arbitrario per avviare il server, è probabile che le persone si stiano già risolvendo in un host che non è ancora disponibile. Se il nuovo server è già attivo, non devi preoccuparti.
Aaron Copley,

1

Un'altra opzione è quella di utilizzare un VIP (IP virtuale). Quindi, i tuoi passi saranno:

  1. Configura il nuovo server e ascolta sul nuovo IP.
  2. Aggiungi un VIP al vecchio server.
  3. Modifica i record DNS in modo che puntino all'IP VIP. Fino ad ora tutto il traffico verrà comunque inviato al vecchio server ma utilizzando il VIP.
  4. Quando sei pronto, sposta il VIP sul nuovo server.
  5. Facoltativamente, è possibile modificare il DNS con il nuovo IP del server e rimuovere il VIP (dopo qualche tempo) dal DNS.

Mi piace la tua soluzione. Ma non ho familiarità con VIP e come ottenerne uno. Potresti indicare nella giusta direzione?
Denis Pshenov il

È davvero semplice Un comando simile ifconfig eth0:0 <ip> <mask> upcreerà un'interfaccia secondaria configurata con l'IP ed ifconfig eth0:0 downè sufficiente per disattivarlo.
Khaled,

0

Ok, poiché hai menzionato la replica del database, devi fare quanto segue.

  1. Configura la replica tra database nei due server.
  2. Durante il ritaglio, rendere il DB del nuovo server come server primario e vecchio come di sola lettura.
  3. Puntare la stringa di connessione al database dell'applicazione sul nuovo server sia sul vecchio che sul nuovo server. Se il tuo sito utilizza Sessioni, assicurati che la sessione sia persistente nel database.
  4. Modificare l'indirizzo IP in DNS sul nuovo server.
  5. Continuare a eseguire entrambi i server per almeno 48 ore.

0
  1. Configura il nuovo server e ascolta sul nuovo IP
  2. Quindi configurare il reindirizzamento trasparente. Sul vecchio server installare rinetd.

In rinetd.conf:

OLD_SERVER_IP 80 NEW_SERVER_IP 80
  1. Modifica i record DNS in modo che puntino al nuovo IP

Ho fatto apt-get install rinetd, ho cambiato /etc/rinetd.conf con le nuove impostazioni, riavviato con /etc/init.d/rinetd restart ma non reindirizza. anche nulla mostra nel registro
/var/run/rinetd.log

Mostra il tuo iptables-save e per cat /etc/sysctl.conf | grep ip_forwardfavore.
yadaya

0

puoi usare HA-Proxy davanti ai tuoi server web, quando uno di loro passerà alla modalità di manutenzione il server secondario prenderà il controllo.


-1

La tua lista di cosa fare sembra abbastanza sensata.

Ad esempio, supponendo che tu usi apache, quando fai qualcosa del genere in apache sul vecchio server:

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

L'utente vedrà il nuovo dominio nel browser quando accede al vecchio sito. In questo caso anche il reindirizzamento è permanente finché il browser è in esecuzione.

Quindi, finché si implementa una sorta di reindirizzamento nel server Web in aggiunta alle altre modifiche, si dovrebbe andare bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.