Chamilo, giống như Open edX hoặc Moodle, một nền tảng cho phép các tổ chức giáo dục chuyển các hoạt động giáo dục của họ lên internet. Do phần lớn hoạt động giáo dục đã chuyển sang trực tuyến trong năm qua, nên không có gì ngạc nhiên khi chúng tôi thấy ngày càng nhiều người đang đấu tranh để mở rộng quy mô nền tảng giáo dục của họ và đảm bảo tính khả dụng tốt hơn.
Chamilo là một nền tảng được xây dựng trên ngăn xếp * AMP, bao gồm Apache, MySQL và PHP. Như thường lệ, cơ sở dữ liệu là yếu tố khó di chuyển nhất vào một môi trường có tính khả dụng cao. 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 cơ sở dữ liệu Chamilo.
Như bạn có thể tưởng tượng, cơ sở dữ liệu MySQL duy nhất là một điểm lỗi duy nhất và do đó, cần tránh nó trong các triển khai sản xuất. May mắn thay, có một số cách để bạn có thể cải thiện tính khả dụng của cơ sở dữ liệu MySQL.
Một trong những cách bạn có thể tiếp cận vấn đề là sử dụng Cụm Galera. Việc triển khai tối thiểu nên bao gồm ba nút - các 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.
Thiết lập này sẽ yêu cầu một số loại cân bằng tải phía trước cụm Galera. Công việc của nó sẽ là 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 Chamilo 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. Chamilo hỗ trợ MySQL 5.6 và mới hơn hoặc MariaDB 5.5 trở lên. Bước đầu tiên, chúng ta cần chọn “Triển khai” từ trình hướng dẫn:
Khi chúng ta làm điều đó, chúng ta phải xác định kết nối SSH, không cần mật khẩu, khóa Truy cập dựa trên SSH 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:nó dựa vào kết nối SSH để thực hiện các lệnh khởi động hoặc dừng dịch vụ, cài đặt phần mềm, v.v.
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
Như chúng ta đã đề cập trước đó, 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ó thể sử dụng bộ cân bằng tải mà chúng tôi sẽ sử dụng để di chuyển lưu lượng truy cập nếu một trong các nút bị lỗi. 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 tới một nút MariaDB Galera duy nhất và tách các lần đọc trên các nút MariaDB Galera còn lại .. Đ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 các nút cơ sở dữ liệu 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
ProxySQL sẽ hoạt động hiệu quả trong việc phân phối lưu lượng truy cập của chúng tôi trên các nút cụm. Mặt khác, một nút ProxySQL sẽ hoạt động như một điểm lỗi duy nhất. Do đó, chúng tôi muốn triển khai ít nhất hai trong số chúng. Sau đó, câu hỏi đặt ra là làm thế nào để phát hiện lỗi của nút ProxySQL và làm thế nào để chuyển lưu lượng sang một ProxySQL khỏe mạnh. Đây là 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, đảm bảo rằng ứng dụng sẽ luôn truy cập ProxySQL khỏe mạnh, do đó, sẽ đảm bảo rằng lưu lượng truy cập sẽ đến nút cụm khỏe mạnh.
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:
Đó chính là môi trường mà chúng ta đang xây dựng. Bạn có thể hướng Chamilo của mình về phía VIP và cổng 6033, điều này là đủ để có được kết nối với cơ sở dữ liệu phụ trợ của bạn. Nếu bạn gặp phải bất kỳ sự cố nào liên quan đến việc đọc cũ (khi ghi chạm vào một nút và sau đó Chamilo cố gắng đọc từ một nút khác, bạn có thể xem xét việc bật kiểm tra nhân quả trên cụm Galera. Có một biến wsrep_sync_wait có thể cho phép kiểm tra trên một số quyền truy cập các mẫu:đọ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 CHỌN, 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 Chamilo, bạn có thể để lại nhận xét cho chúng tôi.