Open edX là một nền tảng dành cho các hoạt động giáo dục trực tuyến. Với tình hình chung của thế giới, tất cả các nền tảng như vậy đang gặp phải tải trọng cao hơn và tầm quan trọng của chúng đã tăng lên đáng kể. Đó không chỉ là những nền tảng “trợ giúp” mà chúng thường trở thành phương thức chính trong đó các hoạt động giáo dục được thực hiện. Điều này dẫn đến các yêu cầu cao hơn về tải mà họ có thể xử lý hoặc tính khả dụng của nền tảng.
Open edX là một sản phẩm phức tạp bao gồm nhiều phần tử. Một trong số đó là cơ sở dữ liệu MySQL. Trong blog ngắn này, chúng tôi muốn thảo luận về cách bạn có thể cải thiện tính khả dụng cao của nền tảng Open edX.
Rõ ràng, cơ sở dữ liệu MySQL duy nhất là một điểm thất bại và do đó, nó không phải là cách tiếp cận phù hợp cho việc triển khai sản xuất. Có một số cách mà bạn có thể cải thiện tính khả dụng của cơ sở dữ liệu MySQL.
Đối với người mới bắt đầu, bạn có thể chạy thiết lập chủ - tớ bằng cách sử dụng sao chép không đồng bộ hoặc bán đồng bộ. Ưu điểm của nó là, khi không có chủ, bạn có thể thăng cấp một trong các nô lệ và tiến hành hoạt động. Nhược điểm chính của thiết lập như vậy là việc chuyển đổi dự phòng phải được thực hiện theo cách thủ công, điều này làm tăng thời gian ngừng hoạt động hoặc bạn phải sử dụng một số phần mềm bên ngoài (ví dụ:ClusterControl) nhưng sau đó lặp lại vẫn có thể mất một chút thời gian. Cuối cùng, bất kỳ loại sao chép không đồng bộ hoặc bán đồng bộ nào đều có thể bị trễ sao chép. Điều này có thể ảnh hưởng nghiêm trọng đến các tình huống đọc-sau-ghi, trong đó ứng dụng thực hiện ghi trên bản chính và sau đó ngay lập tức cố gắng đọc dữ liệu đó từ máy chủ.
Một cách tiếp cận khác là sử dụng Galera Cluster để lưu trữ dữ liệu từ nền tảng Open edX. Chúng ta có thể bắt đầu với ba cụm nút - những cụm như vậy có thể tự động xử lý lỗi của một nút duy nhất. Hai nút còn lại sẽ tiếp tục hoạt động và đáp ứng các truy vấn đến từ ứng dụng. Một ưu điểm khác của Galera là, mặc dù nó đồng bộ "hầu như" (có nghĩa là nó gần như đồng bộ), nhưng có một cách để thực thi kiểm tra quan hệ nhân quả và buộc các cụm vào chế độ đồng bộ (ngay cả khi bạn trả tiền cho nó bằng giảm hiệu suất).
Cả hai trường hợp sẽ yêu cầu một số loại cân bằng tải phía trước chúng, sẽ xử lý lưu lượng truy cập và chuyển hướng nó đến một điểm đến thích hợp.
Hãy xem cách ClusterControl có thể giúp bạn triển khai Galera Cluster với một bộ cân bằng tải mà bạn có thể sử dụng cho nền tảng Open edX của mình.
Triển khai Cụm MariaDB
Lần này chúng tôi sẽ cố gắng sử dụng MariaDB Cluster làm chương trình phụ trợ của chúng tôi. Một lần nữa, bước đầu tiên cũng giống như vậy, chúng ta cần chọn “Triển khai” từ trình hướng dẫn:
Khi bạn làm điều đó, chúng tôi phải xác định kết nối SSH, không cần mật khẩu, khóa Truy cập SSH dựa trên cơ sở là một yêu cầu đối với ClusterControl, nếu không nó sẽ không thể quản lý cơ sở hạ tầng cơ sở dữ liệu.
Sau đó, chúng ta nên quyết định về nhà cung cấp, phiên bản, mật khẩu, máy chủ lưu trữ và một số cài đặt bổ sung:
Với tất cả các chi tiết đã điền, chúng tôi có thể tiến hành triển khai.
Triển khai ProxySQL
Bản thân cơ sở dữ liệu không phải là phần tử duy nhất mà chúng ta muốn triển khai. Chúng tôi cũng cần một bộ cân bằng tải mà chúng tôi sẽ sử dụng để hướng lưu lượng truy cập đến các nút có sẵn trong thời điểm nhất định. Chúng tôi cũng sẽ sử dụng nó để cung cấp phân tách đọc / ghi, hướng tất cả các lần ghi vào một nút MariaDB Galera duy nhất. Điều này sẽ giúp chúng tôi tránh xung đột giữa các lần ghi được thực thi trên các nút Galera khác nhau.
Đối với ProxySQL ClusterControl cũng yêu cầu điền một số thông tin - bạn phải chọn máy chủ để cài đặt nó, quyết định phiên bản ProxySQL, thông tin đăng nhập cho người dùng quản trị và giám sát. Những người dùng đó sẽ được sử dụng để quản lý ProxySQL và giám sát trạng thái của cụm Galera của bạn. Bạn cũng nên nhập người dùng cơ sở dữ liệu hiện có hoặc tạo một người dùng mới cho ứng dụng của mình. Cuối cùng, tùy thuộc vào bạn để quyết định nút cơ sở dữ liệu nào bạn muốn sử dụng với ProxySQL và quyết định xem bạn có sử dụng các giao dịch ngầm định hay không.
Triển khai Keepalived
Ở bước tiếp theo, chúng tôi sẽ triển khai Keepalived. Ý tưởng ở đây là có một IP ảo sẽ trỏ đến phiên bản ProxySQL đang hoạt động. Sau đó, VIP như vậy có thể được sử dụng trong ứng dụng làm điểm cuối cho kết nối cơ sở dữ liệu MySQL.
Sau khi chuyển các chi tiết như phiên bản ProxySQL cần được theo dõi, IP ảo và giao diện VIP nên ràng buộc với chúng tôi đã sẵn sàng để triển khai. Sau vài phút, mọi thứ sẽ sẵn sàng và cấu trúc liên kết sẽ giống như bên dưới:
Đó là khá nhiều khi nói đến việc triển khai. Bạn có thể hướng nền tảng Open edX của mình về phía VIP và cổng 6033, điều này đủ để có được kết nối với cơ sở dữ liệu phụ trợ của bạn. Phần cuối cùng còn lại, nếu bạn thấy cần thiết, sẽ là định cấu hình kiểm tra quan hệ nhân quả. Có một biến wsrep_sync_wait có thể làm điều đó. Nó có thể cho phép kiểm tra một số mẫu truy cập:đọc, cập nhật, chèn, xóa, thay thế và HIỂN THỊ các lệnh. Nếu chúng tôi chỉ quan tâm đến các truy vấn SELECT, chúng tôi sẽ đặt biến này thành ‘1’ bằng cách sử dụng quản lý cấu hình ClusterControl.
Thao tác này sẽ thực hiện thay đổi này trên tất cả các nút Cụm MariaDB.
Đó là khá nhiều. Nếu bạn muốn chia sẻ một số kinh nghiệm của mình với Open edX, bạn có thể để lại nhận xét cho chúng tôi.