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.
Bình luận
Chưa có bình luận nào. Hãy là người đầu tiên.