−25%

cho Windows trả theo năm, đến 31/10. Xem các gói

EQVPS
Bắt đầu

Chuyển VPS sang nhà cung cấp mới mà không gián đoạn

10 thg 10, 2026 · 6 phút đọc · EQVPS Team

Câu chuyện kinh dị nào về di chuyển máy chủ cũng có cùng một đoạn giữa: ai đó đổi DNS trước rồi mới bắt đầu sao chép. Gián đoạn khi chuyển nhà hầu như không bao giờ do sao chép chậm. Nó do làm các bước sai thứ tự.

Đây là thứ tự hiệu quả, dù bạn đang rời một nhà cung cấp khác hay chuyển giữa hai gói của chúng tôi.

1. Hai ngày trước: hạ TTL

Tìm các bản ghi DNS bạn sẽ đổi (thường là A, AAAA và các CNAME trỏ tới chúng) rồi hạ TTL xuống 300 giây. Sau đó chờ ít nhất bằng TTL cũ. Một bản ghi có TTL một ngày nghĩa là một số resolver sẽ tiếp tục trả về địa chỉ cũ thêm một ngày sau khi đổi, và không gì bạn làm trên máy chủ có thể đẩy nhanh việc đó.

Đây là bước mọi người hay bỏ qua, và chính nó biến một lần chuyển năm phút thành một ngày mà nửa số người dùng vẫn thấy máy chủ cũ.

2. Kiểm kê máy chủ cũ

Bạn sắp dựng lại cỗ máy này ở nơi khác, nên hãy ghi lại những gì nó thực sự làm. Không phải những gì bạn nhớ. Những gì nó làm:

ss -tlnp                                # what is listening, and which process
crontab -l; ls /etc/cron.d              # scheduled jobs
systemctl list-timers --all             # the scheduled jobs people forget
systemctl list-units --type=service --state=running

Thêm vào danh sách: chứng chỉ TLS và cách chúng gia hạn, các file môi trường chứa bí mật, quy tắc tường lửa, người dùng và khóa SSH của họ, cơ sở dữ liệu và dung lượng của nó, cùng mọi thứ giao tiếp với máy chủ qua địa chỉ IP. Nhóm cuối là nhóm nguy hiểm: danh sách cho phép của đối tác, cấu hình webhook của nhà cung cấp thanh toán, một phép kiểm tra giám sát.

3. Dựng máy chủ mới cạnh máy cũ

Đặt máy chủ mới và để yên máy cũ. Chọn một gói từ danh sách VPS có ổ đĩa bằng hoặc lớn hơn mức bạn thực dùng, chứ không phải mức bạn đã được bán. Nếu máy cũ nhận bất kỳ lưu lượng đi vào nào (website, webhook, API), máy mới cần IPv4 riêng. Gói NAT chỉ nhận kết nối vào ở cổng SSH của nó, và một cổng được chuyển tiếp làm được gì và không làm được gì giải thích vì sao điều đó quan trọng.

Kết nối, cài cùng các gói, tạo lại người dùng và tường lửa. Hướng dẫn kết nối nói về khóa và lần đăng nhập đầu tiên.

4. Đồng bộ file hai lần

Lần đồng bộ đầu tiên sao chép mọi thứ trong khi máy chủ cũ vẫn chạy. Có thể mất hàng giờ; không sao cả.

rsync -aHAX --numeric-ids --info=progress2 /var/www/ root@203.0.113.10:/var/www/

--numeric-ids giữ quyền sở hữu file theo số, tránh được bất ngờ kinh điển "mọi thứ thuộc về sai người dùng" khi hai hệ thống tạo người dùng theo thứ tự khác nhau. Nếu bạn chưa từng dùng rsync qua SSH, cách chuyển file lên VPS hướng dẫn từng bước.

Lần đồng bộ thứ hai, ngay trước khi chuyển, chỉ sao chép những gì đã thay đổi kể từ lần đầu. Thường chỉ mất vài giây.

5. Chuyển cơ sở dữ liệu có chủ đích

File thì dễ. Cơ sở dữ liệu nhận ghi là phần duy nhất mà "không gián đoạn" đòi hỏi hoặc một chút thỏa hiệp, hoặc thêm công sức.

Cách đơn giản: dump và khôi phục một lần để thử, rồi khi chuyển thì dừng ghi một phút (đưa ứng dụng về chế độ chỉ đọc hoặc dừng nó), lấy bản dump mới, khôi phục trên máy chủ mới và khởi động ứng dụng ở đó. Với phần lớn dự án nhỏ, đó là một lần tạm dừng một hai phút, báo trước.

Cách không tạm dừng: thiết lập replication từ cơ sở dữ liệu cũ sang mới, để nó bắt kịp, rồi nâng cái mới lên làm chính khi chuyển. Nhiều công thiết lập hơn, và đáng làm khi ngay cả một phút mất dữ liệu ghi cũng không chấp nhận được.

6. Kiểm tra máy chủ mới trước khi người khác thấy

DNS vẫn trỏ về máy chủ cũ, nên bạn có thể kiểm tra máy mới một cách riêng tư. Gửi một yêu cầu cho tên miền thật của bạn tới địa chỉ mới:

curl --resolve example.com:443:203.0.113.10 https://example.com/health

Nếu chứng chỉ chưa có, hãy kiểm tra tương tự qua HTTP, hoặc thêm một dòng tạm vào file hosts rồi bấm qua website trong trình duyệt. Kiểm tra đăng nhập, tải lên, tác vụ nền và email gửi đi. Đây là lúc rẻ nhất để phát hiện thiếu một extension PHP.

7. Chuyển, và để máy chủ cũ tiếp tục chạy

Làm lần đồng bộ file cuối và bước cơ sở dữ liệu, rồi đổi các bản ghi DNS. Với TTL 300 giây, phần lớn lưu lượng chuyển sang trong vài phút. Theo dõi log truy cập của máy chủ cũ: vẫn sẽ có một dòng nhỏ yêu cầu từ các resolver và client bỏ qua TTL. Để nó chạy nguyên trạng vài ngày. Sau đó cập nhật mọi thứ trỏ về IP cũ: danh sách cho phép của đối tác, URL webhook, và với email là reverse DNS của địa chỉ mới (trên các gói IP riêng của chúng tôi, bạn tự đặt nó, xem reverse DNS) cùng bản ghi SPF.

Những gì hay hỏng nhất

Đại khái theo thứ tự mức độ thường gặp: một timer systemd không ai liệt kê, một file cấu hình ghi cứng IP cũ, file thuộc về sai người dùng, tường lửa chặn chính cổng của ứng dụng, chứng chỉ gia hạn trên máy chủ cũ mà không gia hạn trên máy mới, và email rơi vào spam vì địa chỉ mới chưa có reverse DNS.

Khi nào danh sách này không phù hợp

Một cơ sở dữ liệu bận rộn ghi liên tục và không chịu nổi tạm dừng cần replication đúng nghĩa và một buổi diễn tập, chứ không phải danh sách kiểm tra trên blog. Máy chủ Windows được chuyển bằng công cụ khác với rsync. Và nếu việc chuyển thực ra là vì dung lượng, hãy đọc điều này trước: ở đây gói có thể tăng tại chỗ. Chuyển sang gói lớn hơn cùng loại mạng sẽ thêm vCPU, RAM và ổ đĩa chỉ với một lần khởi động lại, không cần di chuyển gì cả. Chỉ khi muốn thu nhỏ mới cần máy chủ mới. Nếu bạn chuyển vì không chắc máy có đủ lớn không, khi nào bạn thực sự cần 64 GB RAM có thể giúp bạn khỏi phải chuyển, và VPS, shared hosting, máy chủ riêng hay cloud sẽ giúp nếu bạn còn phân vân VPS có phải là nơi phù hợp hay không.

FAQ

Nên hạ TTL của DNS trước bao lâu?

Ít nhất bằng TTL hiện tại, và tốt nhất là một hai ngày trước khi chuyển. Nếu bản ghi có TTL 86400 giây, các resolver có thể giữ câu trả lời cũ cả một ngày, nên hạ TTL một giờ trước khi chuyển chẳng có tác dụng gì.

Có thật sự chuyển được mà không gián đoạn chút nào không?

Với dịch vụ không trạng thái thì có: chạy cả hai máy chủ, đổi DNS và để lưu lượng chảy dần sang. Với cơ sở dữ liệu nhận ghi, bạn hoặc chấp nhận tạm dừng ghi ngắn trong lần đồng bộ cuối, hoặc thiết lập replication để máy chủ mới luôn được cập nhật.

Làm sao kiểm tra máy chủ mới trước khi đổi DNS?

Chỉ trỏ máy của riêng bạn vào đó. Dùng curl với --resolve để gửi yêu cầu cho tên miền thật của bạn tới IP mới, hoặc thêm một dòng tạm vào file hosts. Mọi người khác vẫn dùng máy chủ cũ.

Khi nào có thể tắt máy chủ cũ?

Khi log của nó không còn lưu lượng thật trong ít nhất một ngày sau khi TTL cũ hết hạn. Một số resolver và client bỏ qua TTL, nên nếu được, hãy để máy chủ cũ chạy nguyên trạng thêm vài ngày.

Sau khi di chuyển, thứ gì hay hỏng nhất?

Các tác vụ định kỳ bị quên, địa chỉ IP ghi cứng trong cấu hình và danh sách cho phép của đối tác, quyền sở hữu file sau khi sao chép, quy tắc tường lửa, và email: reverse DNS cùng bản ghi SPF vẫn trỏ về địa chỉ cũ.

Bình luận

Chưa có bình luận nào. Hãy là người đầu tiên.

Để lại bình luận

Bình luận được kiểm duyệt trước khi hiển thị.