Cách chạy WordPress trên 2 máy ảo để có tính sẵn sàng cao


12

Microsoft Azure yêu cầu các ứng dụng sử dụng hai phiên bản trên nhiều trung tâm dữ liệu để đạt được SLA "tính sẵn sàng cao" của chúng và đảm bảo các trang web của bạn không bị ngừng bảo trì định kỳ. Họ thậm chí còn cho bạn biết những cặp trung tâm dữ liệu nào sẽ không bao giờ được bảo trì cùng một lúc.

Đó là tất cả tốt và tốt nhưng làm thế nào bạn có thể làm điều này một cách dễ dàng trong thực tế cho một ứng dụng như WordPress với cơ sở dữ liệu MySQL trên cùng một VM? Tôi không lạ gì khi tải cân bằng giữa hai máy ảo nhưng thiết lập sao chép cơ sở dữ liệu lại vượt xa tôi. Chúng tôi sẽ không muốn hai phiên bản dữ liệu có thể không đồng bộ. Bản sao MySQL dường như yêu cầu thiết lập master-Slave, không thể đồng bộ hóa các thay đổi với DB chính nếu người dùng hạ cánh trên cá thể nô lệ.

Có phải tôi chỉ hiểu nhầm khái niệm này? Bất kỳ sự giúp đỡ nào cũng được đánh giá cao!


1
Tại sao bạn sẽ lưu trữ WordPress trên Azure? Có lưu trữ tốt hơn và rẻ hơn cho WordPress. Đại dương kỹ thuật số chẳng hạn.
Alexus

1
Alexus, điều đó không thực sự phù hợp ở đây nhưng chúng tôi có một ngăn xếp khá lớn trải khắp cơ sở hạ tầng của Azure, trong đó WordPress chỉ là một thành phần. Azure là một nền tảng tuyệt vời và chúng tôi rất hài lòng với nó.
Yaron

1
gotcha. Bạn phải làm những gì bạn phải làm :) Tôi cũng thích Azure cho hầu hết các công cụ .NET của tôi, nhưng luôn lưu trữ các trang WP riêng biệt.
Alexus

Yaron, bạn có thấy câu trả lời dưới đây hữu ích không? Cho đến nay, nó đã nhận được 3 lượt upvote, chỉ muốn kiểm tra xem bạn có thấy thiếu khái niệm quan trọng nào không để tôi có thể cập nhật để giải quyết nó cho trường hợp sử dụng cụ thể của bạn.
Bryan 'BJ' Hoffpauir Jr.

1
Cảm ơn rất nhiều vì câu trả lời thấu đáo @ Bryan'BJ'Hoffpauir và xin lỗi tôi đã không có thời gian để thử làm theo hướng dẫn của bạn để xem họ có làm việc với việc triển khai của chúng tôi không. Tôi đánh dấu câu trả lời là đúng và sẽ tiếp cận lại nếu tôi gặp bất kỳ rắc rối nào. Cảm ơn một lần nữa !!
Yaron

Câu trả lời:


11

The Bad News: Cơ sở mã nguồn mở cốt lõi của Wordpress đưa ra khá nhiều giả định về việc được chạy trên một máy chủ (nội dung wp, tải lên của người dùng và thư viện phương tiện để đặt tên cho một số)

Tin tốt: Khá nhiều nhà cung cấp đám mây (bao gồm Azure) có những khái niệm trừu tượng cho phép bạn khắc phục những hạn chế thiết kế này.

Về cơ bản, bạn sẽ giải quyết các mối quan tâm sau:

  • Tải cân bằng lưu lượng giữa hai (hoặc nhiều hơn) máy chủ web / ứng dụng Wordpress "mặt trước". Không quá khó vì Wordpress không trạng thái RẤT NHIỀU trừ khi bạn cho phép người dùng đăng nhập vào trang web. Điều này được thực hiện thông qua sự kết hợp của DNS và Load Balancer. Bạn sẽ cần hỗ trợ 2 IP cho các máy chủ ứng dụng của mình - 1 bộ sẽ kết nối với mạng con có thể định tuyến qua Internet (mặc dù hy vọng được bảo vệ bởi tường lửa không được nêu bên dưới) và hai bộ kia sẽ nằm trên mạng con KHÁC BIỆT được cách ly mạng khác và chứa Trường hợp Máy chủ Cơ sở dữ liệu nhưng phác thảo cơ bản là như sau:
                     / - (10.0.0.1 - eth0) wp1.domain.com (10.0.1.1 - eth2)
(IP công cộng) wp.domain.com          
                     \ - (10.0.0.2 - eth1) wp2.domain.com (10.0.1.2 - eth3)
  • Quản lý phiên NẾU bạn đang cho phép người dùng đăng nhập vào trang web. Nếu vậy, bạn sẽ cần đảm bảo khi họ đăng nhập vào máy chủ 1 rằng tất cả các yêu cầu trong tương lai của họ sẽ được chuyển đến máy chủ đó (phiên dính) hoặc không quan trọng họ truy cập máy chủ nào vì các phiên được quản lý thông qua một số cơ chế khác (thông qua phân cụm phiên máy chủ Zend chẳng hạn).

  • Quản lý thông tin đăng nhập quản trị NẾU bạn cho phép một số người dùng đăng nhập vào back-end để quản lý nội dung (tương tự như trên).

  • Chọn hệ thống DB cũng có sẵn cao. Không có điểm nào có hai máy chủ ngoại vi nếu sự cố DB của bạn làm hỏng toàn bộ hệ thống. Bạn sẽ cần tận dụng bản sao MySQL Master / Slave thông qua ClearDB hoặc sửa đổi WordPress thông qua plugin để tận dụng SQL Server để bạn có thể sử dụng các hệ thống phân cụm riêng của nó . Điều này có nghĩa là bạn cần ít nhất 4 VM nếu bạn muốn tự mình quản lý lớp DB (2 x Ứng dụng & 2 x DB). Đây là cách nó có thể trông:

               / - wp1.domain.com (10.0.1.1) \ --- / (10.0.1.3) db1.domain.com (10.0.2.3) \
         wp.domain.com X |           
               \ - wp2.domain.com (10.0.1.2) / --- \ (10.0.1.4) db2.domain.com (10.0.2.3) /

  • LƯU Ý - để đảm bảo chuyển đổi dự phòng đáng tin cậy và bảo vệ tính bảo mật của hệ thống, mạng con THIRD thường được sử dụng để kết nối hai nút cơ sở dữ liệu với nhau thông qua một kênh riêng được tách ra khỏi các mạng truyền thông khác mà máy chủ ứng dụng sử dụng để nói chuyện cơ sở dữ liệu và các máy chủ ứng dụng sử dụng để liên lạc với thế giới bên ngoài.

  • Kích hoạt kết nối nhóm để tối đa hóa hiệu suất và độ tin cậy của các kết nối cơ sở dữ liệu của máy chủ ứng dụng của bạn.

  • Tận dụng plugin Bộ đệm như W3 Total Cache hoặc Super Cache để giảm thiểu tải trên các máy chủ ngoại vi.

Các hướng dẫn sau đây cung cấp chi tiết cụ thể về cách bạn có thể giải quyết từng thách thức nêu trên. Có một số cách để xử lý từng trong Azure, do đó, tùy thuộc vào bạn quyết định cách bạn muốn tấn công từng thách thức sau đó xử lý các ràng buộc mà mỗi lựa chọn đó áp đặt khi bạn làm việc lên và xuống ngăn xếp.

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.