Thay đổi máy chủ - Chuyển hướng sang IP mới = Không ngừng hoạt động?


13

Tôi đang thay đổi máy chủ của trang web của tôi. IP của máy chủ cũ không thể được chuyển sang máy chủ mới. Để không có thời gian chết tôi đang lên kế hoạch thực hiện những điều sau đây, xin vui lòng ai đó xác nhận nó sẽ hoạt động:

  1. Thiết lập máy chủ mới và lắng nghe IP mới
  2. Máy chủ cũ chuyển hướng tất cả lưu lượng truy cập đến IP mới
  3. Thay đổi bản ghi DNS để trỏ đến IP mới

Logic của tôi cho tôi biết rằng khi tôi chuyển hướng đến IP mới từ hộp cũ của mình, người dùng sẽ không thấy tên miền trong trình duyệt mà sẽ thấy IP mới. Có cách nào để chuyển hướng đến IP mới và gửi cùng HOSTNAME với nó để người dùng sẽ thấy tên miền trong trình duyệt không?

Tôi đang làm điều này bởi vì trang web được sử dụng liên tục và chỉ cần thay đổi cài đặt DNS sẽ không được thực hiện vì cơ sở dữ liệu sẽ không được đồng bộ hóa giữa các máy chủ mới và cũ trong quá trình lan truyền.


3
Có lẽ bạn đã nghĩ về nó nhưng chưa đề cập đến nó: đừng quên giảm TTL các mục DNS có liên quan.
cjc

Là trang web này chỉ được sử dụng bởi con người hoặc có ứng dụng có thể kết nối với nó? Ví dụ tiêu thụ dịch vụ web? Nếu đó là trường hợp bạn có thể có thời gian chết dù sao. Java lưu trữ kết quả DNS và có thể không tôn trọng mục nhập DNS mới cho đến khi chúng được khởi động lại. Trừ khi bạn có thể giữ chuyển tiếp trực tuyến trong một thời gian dài. Ngoài ra nếu bạn sử dụng chuyển hướng mã hóa sẽ có một số bước bổ sung.
Bram

Bạn đang sử dụng loại cơ sở dữ liệu nào? Bạn đã đúng khi thay đổi DNS sẽ không giải quyết được vấn đề thời gian chết, tôi làm điều này mọi lúc trong công việc của mình và có thể cung cấp cho bạn các bước chi tiết tuy nhiên nếu cơ sở dữ liệu của bạn trên cùng một máy chủ thì nó sẽ gây ra một vấn đề nhỏ thường dễ dàng xảy ra đến.
Anthony Fornito

Ngoài ra, bạn có loại máy chủ nào có windows hoặc linux, Sau khi đọc một số câu trả lời, tất cả chúng đều trỏ đến linux nhưng tôi thực sự không thấy gì trong câu hỏi của bạn rằng bạn đang sử dụng IIS vs linux Hương vị
Anthony Fornito

Câu trả lời:


19

Đây là phương pháp hiệu quả với tôi:

  1. Đồng bộ hóa các tệp và cơ sở dữ liệu với máy chủ mới.
  2. Thực hiện đồng bộ lại ngay trước khi cắt.
  3. Thay đổi DNS để trỏ đến máy chủ mới.
  4. Chuyển tiếp yêu cầu đến ip cũ đến máy chủ mới cho đến khi việc truyền DNS hoàn tất.

Đây là cách tôi sẽ làm bước 4:

Chúng tôi sẽ định cấu hình IPTables trên máy chủ Linux để chuyển hướng tất cả lưu lượng truy cập đến trên cổng 80, (là cổng máy chủ web mặc định), đến máy chủ có IP 122.164.34.240. Bước đầu tiên là đặt hộp Linux của bạn để cho phép loại chuyển tiếp này diễn ra. Mở một cửa sổ đầu cuối, đăng nhập với tư cách người dùng root và chạy lệnh sau:

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

Bước tiếp theo là yêu cầu IPTables chuyển hướng lưu lượng đến máy chủ mới:

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

Đây là nơi phép màu IPTables xảy ra. Với bước thứ ba và cuối cùng, chúng tôi yêu cầu IPTables viết lại nguồn gốc của các kết nối đến cổng 80 của máy chủ mới dường như đến từ máy chủ cũ.

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

Bước cuối cùng là bắt buộc vì nếu chúng ta không nói với máy chủ web của máy chủ mới rằng các kết nối đến từ các máy khách, nó sẽ nghĩ rằng chúng có nguồn gốc từ máy chủ cũ.

Bạn có thể muốn lặp lại điều này cho cơ sở dữ liệu và cổng máy chủ email.


ý bạn là -A thay vì -D ?? -D là để xóa một quy tắc, phải không? Dù sao, sau khi tôi thực hiện xong, hộp cũ chắc chắn đang cố chuyển hướng vì nó không tải web nữa, nhưng nó không thành công vì web mới cũng không hiển thị, chỉ nói rằng kết nối đã hết thời gian. Có bất kỳ cài đặt nào khác tôi phải làm không? Có lẽ một cái gì đó trên hộp mới của tôi?
Denis Pshenov

Không sao, tôi đã sửa nó! Hóa ra bờ tường của tôi đã chặn chuyển hướng. Tôi đã cho phép nó trong các quy tắc.
Denis Pshenov

Tôi xin lỗi về điều đó. Bạn nói đúng, Đó là -A chứ không phải -D. Tôi đã cập nhật bài viết.
Shain Padmajan

1
Chỉ cần một cảnh báo - cách tiếp cận sử dụng iptables sẽ chuyển tiếp tất cả lưu lượng truy cập đến trang web mới, nhưng khi đến đó, nó sẽ xuất hiện từ máy chủ cũ của bạn chứ không phải từ địa chỉ IP thực của trình duyệt gốc. Điều này sẽ phá vỡ những thứ như phân tích địa lý. Đặc biệt, không bao giờ được chuyển tiếp cổng 25 theo cách này để gửi email hoặc bạn có thể vô tình tạo một rơle mở vì thư từ một người gửi thư rác qua máy chủ cũ sẽ được xử lý bởi máy chủ mới của bạn như thể đó là từ một trong các máy của chính bạn. cũng được tin tưởng và được phép chuyển tiếp.
Gary Bilkus

@ShainPadmajan, dù muộn, cảm ơn bạn rất nhiều, điều này hoạt động như bùa mê ngay cả trong năm 2015.
Abhishek Madhani

5

Bạn cũng có thể xem xét thêm nhiều bản ghi A. Ví dụ: Google sử dụng điều này, kiểm tra đầu ra nslookup của họ:

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

Nếu bạn thêm nhiều bản ghi A vào một tên miền, khách truy cập sẽ nhận được nhiều IP và thử chúng theo thứ tự đó. Nếu thất bại, khách hàng chuyển sang kế tiếp để thử.

Thiết lập IP mới dưới dạng bản ghi A bổ sung 24 giờ trước, khởi động máy chủ mới, tắt IP cũ, xóa IP.


Ngoại trừ, không thêm bản ghi A cho đến khi máy chủ mới được khởi động. :)
Aaron Copley

@Aaron: tại sao không? Việc thêm bản ghi A mất nhiều giờ (tối đa 24 giờ để hoàn toàn hoạt động) và miễn là máy chủ thứ 2 không hoạt động, khách hàng sẽ chọn bản đầu tiên.
JaccoDooge

Khi TTL cho một vùng hết hạn, máy chủ tên của bạn sẽ được truy vấn lại tài nguyên và nó sẽ nhận được cả hai câu trả lời. Nếu bạn thêm bản ghi A mới và đợi một lượng thời gian tùy ý để khởi động máy chủ, mọi người có thể sẽ giải quyết được máy chủ lưu trữ chưa khả dụng. Nếu máy chủ mới đã hoạt động, bạn không phải lo lắng về nó.
Aaron Copley

1

Một tùy chọn khác là sử dụng VIP (IP ảo). Vì vậy, các bước của bạn sẽ là:

  1. Thiết lập máy chủ mới và lắng nghe IP mới.
  2. Thêm một VIP vào máy chủ cũ.
  3. Thay đổi bản ghi DNS để trỏ đến IP VIP. Cho đến bây giờ tất cả lưu lượng truy cập vẫn sẽ được gửi đến máy chủ cũ nhưng sử dụng VIP.
  4. Khi sẵn sàng để đi, di chuyển VIP đến máy chủ mới.
  5. Tùy chọn, bạn có thể thay đổi DNS sang IP máy chủ mới và xóa VIP (sau một thời gian) khỏi DNS.

Tôi thích giải pháp của bạn. Nhưng tôi không quen với VIP và làm thế nào để có được một. Bạn có thể chỉ đúng hướng?
Denis Pshenov

Nó thực sự đơn giản. Một lệnh like ifconfig eth0:0 <ip> <mask> upsẽ tạo giao diện phụ được cấu hình với IP và ifconfig eth0:0 downđủ để hủy kích hoạt nó.
Khaled

0

Ok, vì bạn đã đề cập về sao chép cơ sở dữ liệu, bạn phải làm như sau.

  1. Thiết lập sao chép giữa các cơ sở dữ liệu trong hai máy chủ.
  2. Trong quá trình cắt, hãy đặt DB của máy chủ mới làm máy chủ chính và máy chủ cũ thành chỉ đọc.
  3. Trỏ Chuỗi kết nối cơ sở dữ liệu của ứng dụng đến máy chủ mới trên cả máy chủ cũ và mới. Nếu trang web của bạn sử dụng Phiên, hãy đảm bảo phiên vẫn tồn tại trong DB.
  4. Thay đổi địa chỉ IP trong DNS sang máy chủ mới.
  5. Tiếp tục chạy cả hai máy chủ trong ít nhất 48 giờ.

0
  1. Thiết lập máy chủ mới và lắng nghe IP mới
  2. Sau đó cấu hình chuyển hướng trong suốt. Trên máy chủ cũ cài đặt rinetd.

Trong rinetd.conf:

OLD_SERVER_IP 80 NEW_SERVER_IP 80
  1. Thay đổi bản ghi DNS để trỏ đến IP mới

Tôi đã cài đặt apt-get rinetd, đã thay đổi /etc/rinetd.conf thành cài đặt mới, được khởi động lại với /etc/init.d/rinetd khởi động lại nhưng nó không chuyển hướng. cũng không có gì hiển thị trong nhật ký /var/run/rinetd.log
Denis Pshenov

Hiển thị của bạn iptables-savecat /etc/sysctl.conf | grep ip_forwardxin vui lòng.
yadaya

0

bạn có thể sử dụng HA-Proxy trước các máy chủ web của mình, khi một trong số chúng chuyển sang chế độ bảo trì, máy chủ thứ cấp sẽ đảm nhiệm.


-1

Danh sách những việc cần làm của bạn trông khá hợp lý.

Ví dụ, giả sử bạn sử dụng apache, khi bạn làm một cái gì đó như thế này trong apache trên máy chủ cũ:

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

Người dùng sẽ thấy tên miền mới trong trình duyệt khi họ duyệt đến trang web cũ. Trong trường hợp này, chuyển hướng cũng là vĩnh viễn miễn là trình duyệt đang chạy.

Vì vậy, miễn là bạn thực hiện một số loại chuyển hướng trong máy chủ web của bạn ngoài các thay đổi khác, bạn sẽ ổn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.