Mengubah Server - Redirect ke IP baru = Tidak Ada Downtime?

13

Saya mengubah server situs web saya. IP server lama tidak dapat dipindahkan ke yang baru. Agar tidak ada downtime, saya berencana untuk melakukan hal berikut, tolong seseorang mengonfirmasi itu akan berfungsi:

  1. Atur server baru dan dengarkan IP baru
  2. Server lama mengarahkan semua lalu lintas ke IP baru
  3. Ubah catatan DNS untuk menunjuk ke IP baru

Logika saya memberi tahu saya bahwa ketika saya mengarahkan ulang ke IP baru dari kotak lama saya, pengguna tidak akan melihat nama domain di browser tetapi akan melihat IP baru. Apakah ada cara untuk mengarahkan ulang ke IP baru dan mengirimkan bersama HOSTNAME dengannya sehingga pengguna akan melihat nama domain di browser?

Saya melakukan ini karena situs ini digunakan terus-menerus dan hanya mengubah pengaturan DNS tidak akan dilakukan karena database tidak akan disinkronkan antara server baru dan lama selama propagasi.

Denis Pshenov
sumber
3
Anda mungkin telah memikirkannya tetapi belum menyebutkannya: jangan lupa mengurangi TTL dari entri DNS yang relevan.
cjc
Apakah situs web ini hanya digunakan oleh manusia atau ada aplikasi yang mungkin terhubung ke sana? Misalnya mengkonsumsi layanan web? Jika demikian, Anda mungkin memiliki waktu henti. Java cache hasil DNS dan mungkin tidak menghormati entri DNS baru sampai mereka dimulai kembali. Kecuali Anda dapat menyimpan penerusan online untuk waktu yang lama. Juga jika Anda menggunakan pengalihan enkripsi akan melibatkan beberapa langkah tambahan.
Bram
Database apa yang Anda gunakan? Anda benar bahwa mengubah DNS tidak akan menyelesaikan masalah downtime, saya melakukan ini sepanjang waktu dalam pekerjaan saya dan dapat memberikan Anda langkah-langkah terperinci namun jika Anda basis data pada server yang sama, ia akan melemparkan masalah kecil yang biasanya mudah berakhir. datang.
Anthony Fornito
Juga jenis server apa yang Anda miliki windows atau linux, Setelah membaca beberapa jawaban mereka semua menunjuk ke linux tapi saya benar-benar tidak melihat apa pun dalam pertanyaan Anda bahwa Anda menggunakan rasa IIS vs linux
Anthony Fornito

Jawaban:

19

Inilah metode yang bekerja untuk saya:

  1. Sinkronkan file dan database dengan server baru.
  2. Lakukan sinkronisasi ulang sesaat sebelum cut-off.
  3. Ubah DNS untuk menunjuk ke server baru.
  4. Teruskan permintaan yang datang ke ip lama ke server baru sampai propagasi DNS selesai.

Inilah cara saya akan melakukan langkah 4:

Kami akan mengonfigurasi IPTables pada server Linux untuk mengalihkan semua lalu lintas yang datang pada port 80, (yang merupakan port server web default), ke server dengan IP 122.164.34.240. Langkah pertama adalah mengatur kotak Linux Anda untuk memungkinkan penerusan semacam ini terjadi. Buka jendela terminal, masuk sebagai pengguna root dan jalankan perintah berikut:

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

Langkah selanjutnya adalah memberi tahu IPTables untuk mengarahkan lalu lintas ke server baru:

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

Di sinilah keajaiban IPTables terjadi. Dengan langkah ketiga dan terakhir, kami memberi tahu IPTables untuk menulis ulang asal koneksi ke port server baru 80 yang tampaknya berasal dari server lama.

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

Langkah terakhir diperlukan karena jika kita tidak memberi tahu server web tentang server baru bahwa koneksi berasal dari mesin klien, itu akan berpikir bahwa mereka berasal dari server lama.

Anda mungkin ingin mengulangi ini untuk basis data dan port server email juga.

Shain Padmajan
sumber
maksud Anda -A bukannya -D ?? -D adalah untuk menghapus aturan, bukan? Ngomong-ngomong, setelah saya selesai melakukan hal itu, kotak lama pasti mencoba untuk mengarahkan ulang karena tidak memuat web lagi, tetapi gagal karena web baru juga tidak muncul, hanya mengatakan waktu koneksi habis. Apakah ada pengaturan lain yang harus saya lakukan? Mungkin ada sesuatu di kotak baru saya?
Denis Pshenov
Sudahlah, saya memperbaikinya! Ternyata shorewall saya memblokir pengalihan. Saya telah mengizinkannya dalam aturan.
Denis Pshenov
Saya minta maaf atas hal tersebut. Anda benar, itu -A dan bukan -D. Saya telah memperbarui pos.
Shain Padmajan
1
Hanya peringatan - pendekatan menggunakan iptables akan meneruskan semua lalu lintas ke situs baru, tetapi ketika tiba di sana, itu tampaknya berasal dari server lama Anda dan bukan dari alamat IP sebenarnya dari browser asli. Ini akan merusak hal-hal seperti analisis geografis. Secara khusus, jangan pernah tergoda untuk meneruskan port 25 dengan cara ini untuk email atau Anda mungkin secara tidak sengaja membuat relay terbuka karena mail dari spammer melalui server lama akan diperlakukan oleh server baru Anda seolah-olah itu dari salah satu mesin Anda sendiri yang mungkin dipercaya dan diizinkan untuk menyampaikan.
Gary Bilkus
@ShainPadmajan, meskipun terlambat, terima kasih banyak, ini bekerja dengan sangat baik bahkan pada tahun 2015.
Abhishek Madhani
5

Anda juga dapat melihat menambahkan beberapa A-record. Misalnya, Google menggunakan ini, periksa output nslookup mereka:

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

Jika Anda menambahkan beberapa A-record ke domain, pengunjung akan menerima beberapa IP dan mencobanya dalam urutan itu. Jika salah satu gagal, klien pindah ke yang berikutnya untuk mencoba.

Atur IP baru sebagai A-record ekstra 24 jam di muka, jalankan server baru, matikan yang lama, hapus IP.

JapyDooge
sumber
Kecuali, jangan tambahkan catatan A sampai server baru telah dimulai. :)
Aaron Copley
@ Harun: mengapa tidak? Menambahkan catatan A membutuhkan beberapa jam (hingga 24 jam untuk sepenuhnya aktif), dan selama server ke-2 tidak naik, klien akan memilih yang pertama.
JapyDooge
Ketika TTL untuk zona berakhir, server nama Anda ditanyai lagi untuk sumber daya dan itu akan mendapatkan kedua jawaban. Jika Anda menambahkan catatan A baru dan menunggu beberapa waktu untuk memulai server, orang-orang kemungkinan akan menyelesaikan ke host yang belum tersedia. Jika server baru sudah terpasang, Anda tidak perlu khawatir.
Aaron Copley
1

Pilihan lain adalah menggunakan VIP (IP virtual). Jadi, langkah Anda adalah:

  1. Atur server baru dan dengarkan IP baru.
  2. Tambahkan VIP ke server lama.
  3. Ubah catatan DNS untuk menunjuk ke IP VIP. Hingga saat ini semua lalu lintas masih akan dikirim ke server lama tetapi menggunakan VIP.
  4. Saat siap untuk pergi, pindahkan VIP ke server baru.
  5. Secara opsional, Anda dapat mengubah DNS ke IP server baru dan menghapus VIP (setelah beberapa waktu) dari DNS.
Khaled
sumber
Saya suka solusi Anda. Tapi saya tidak terbiasa dengan VIP dan bagaimana cara mendapatkannya. Bisakah Anda menunjuk ke arah yang benar?
Denis Pshenov
Ini sangat sederhana. Perintah seperti ifconfig eth0:0 <ip> <mask> upakan membuat sub-antarmuka yang dikonfigurasi dengan IP, dan ifconfig eth0:0 downcukup untuk menonaktifkannya.
Khaled
0

Ok, karena Anda menyebutkan tentang replikasi Database, Anda harus melakukan hal berikut.

  1. Setup replikasi antara database di dua server.
  2. Selama cutover, jadikan DB server baru sebagai server utama dan lama sebagai hanya baca.
  3. Arahkan String Sambungan Basis Data Aplikasi ke server baru di server lama dan baru. Jika situs Anda menggunakan Sesi, pastikan sesi tetap ada di DB.
  4. Ubah alamat IP dalam DNS ke server baru.
  5. Tetap menjalankan kedua server selama minimal 48 jam.
Shyam Sundar CS
sumber
0
  1. Atur server baru dan dengarkan IP baru
  2. Kemudian konfigurasikan pengalihan transparan. Di server lama instal rinetd.

Di rinetd.conf:

OLD_SERVER_IP 80 NEW_SERVER_IP 80
  1. Ubah catatan DNS untuk menunjuk ke IP baru
yadaya
sumber
Saya melakukan apt-get install rinetd, mengubah /etc/rinetd.conf ke pengaturan baru, restart dengan /etc/init.d/rinetd restart tetapi tidak mengarahkan ulang. juga tidak ada yang ditampilkan di log
/var/run/rinetd.log
Tunjukkan iptables-save dan cat /etc/sysctl.conf | grep ip_forwardtolong.
yadaya
0

Anda dapat menggunakan HA-Proxy di depan server web Anda, ketika salah satu dari mereka akan mengambil alih mode server sekunder.

apoc
sumber
-1

Daftar Anda tentang apa yang harus dilakukan terlihat cukup masuk akal.

Sebagai contoh, dengan asumsi Anda menggunakan apache, ketika Anda melakukan sesuatu seperti ini di apache di server lama:

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

Pengguna akan melihat domain baru di browser ketika mereka menjelajah ke situs lama. Dalam hal ini pengalihan juga bersifat permanen selama browser berjalan.

Jadi, selama Anda menerapkan semacam pengalihan di server web Anda selain perubahan Anda yang lain, Anda harus baik-baik saja.

aseq
sumber