Trong thời đại đại dịch này, nền tảng Hệ thống quản lý học tập (LMS) ngày càng trở nên quan trọng hơn để cho phép bạn tiếp tục học tập từ xa khi hệ thống giáo dục truyền thống không còn khả dụng nữa.
Có một nền tảng LMS mà không có Tính khả dụng cao có thể là một vấn đề trong trường hợp thất bại, vì mọi nỗ lực của bạn để giữ cho hệ thống hoạt động sẽ không có ý nghĩa gì nếu không có sẵn cơ sở dữ liệu.
Trong blog này, chúng ta sẽ thấy một ứng dụng LMS phổ biến được gọi là Canvas LMS và cách triển khai ứng dụng này ở mức độ sẵn sàng cao bằng cách sử dụng PostgreSQL và ClusterControl.
Canvas là gì?
Canvas là Hệ thống Quản lý Học tập (LMS) dựa trên web. Nó được sử dụng bởi các tổ chức học tập, các nhà giáo dục và sinh viên để truy cập và quản lý các tài liệu học tập của khóa học trực tuyến và giao tiếp về sự phát triển kỹ năng và thành tích học tập.
Canvas bao gồm nhiều công cụ tạo và quản lý khóa học có thể tùy chỉnh, phân tích và thống kê khóa học và người dùng cũng như các công cụ giao tiếp nội bộ.
Triển khai cơ sở dữ liệu Canvas LMS PostgreSQL
Trước tiên, hãy triển khai Cụm PostgreSQL, sẽ được ứng dụng Canvas LMS sử dụng. Đối với điều này, chúng tôi sẽ sử dụng ClusterControl để triển khai 3 nút PostgreSQL (1 nút Chính và 2 nút Dự phòng) và 2 Bộ cân bằng tải HAProxy với Keepalived được định cấu hình giữa chúng.
HAProxy là bộ cân bằng tải phân phối lưu lượng truy cập từ một điểm gốc đến một hoặc nhiều điểm đến và có thể xác định các quy tắc và / hoặc giao thức cụ thể cho tác vụ này. Nếu bất kỳ điểm đến nào ngừng phản hồi, nó được đánh dấu là ngoại tuyến và lưu lượng truy cập được gửi đến phần còn lại của các điểm đến khả dụng.
Keepalived là một dịch vụ cho phép bạn định cấu hình Địa chỉ IP ảo trong một nhóm máy chủ hoạt động / thụ động. Địa chỉ IP ảo này được chỉ định cho một máy chủ đang hoạt động. Nếu máy chủ này bị lỗi, Địa chỉ IP sẽ tự động được di chuyển sang máy chủ thụ động "Phụ", cho phép nó tiếp tục hoạt động với cùng một Địa chỉ IP một cách minh bạch cho hệ thống.
Vì vậy, hãy xem cách triển khai cấu trúc liên kết được đề cập bằng cách sử dụng ClusterControl.
Triển khai Cơ sở dữ liệu
Để thực hiện triển khai từ ClusterControl, chỉ cần chọn tùy chọn “Triển khai” và làm theo hướng dẫn xuất hiện.
Khi chọn PostgreSQL, bạn phải chỉ định Người dùng, Khóa hoặc Mật khẩu và Cổng để kết nối bằng SSH với máy chủ của bạn. Bạn cũng có thể thêm tên cho cụm mới của mình và nếu bạn muốn ClusterControl cài đặt phần mềm và cấu hình tương ứng cho bạn.
Sau khi thiết lập thông tin truy cập SSH, bạn cần xác định thông tin đăng nhập cơ sở dữ liệu , phiên bản và datadir (tùy chọn). Bạn cũng có thể chỉ định kho lưu trữ nào sẽ sử dụng.
Trong bước tiếp theo, bạn cần thêm máy chủ của mình vào cụm mà bạn sẽ tạo bằng Địa chỉ IP hoặc Tên máy chủ.
Trong bước cuối cùng, bạn có thể chọn xem bản sao của mình sẽ là Đồng bộ hay Không đồng bộ, sau đó chỉ cần nhấn vào “Triển khai”
Khi nhiệm vụ hoàn thành, bạn có thể thấy cụm PostgreSQL mới của mình trong màn hình ClusterControl chính.
Bây giờ bạn đã tạo cụm của mình, bạn có thể thực hiện một số tác vụ trên đó, như thêm bộ cân bằng tải (HAProxy) hoặc một bản sao mới.
Triển khai Load Balancer
Để triển khai bộ cân bằng tải, hãy chọn tùy chọn “Thêm bộ cân bằng tải” trong các hành động của cụm và điền đầy đủ thông tin được hỏi.
Bạn chỉ cần thêm IP hoặc Tên máy chủ, Cổng, Chính sách và các nút bạn sẽ sử dụng.
Triển khai đủ điều kiện
Để thực hiện triển khai Keepalived, hãy chọn tùy chọn “Thêm bộ cân bằng tải” trong các tác vụ cụm và sau đó, chuyển đến tab Keepalived.
Tại đây, chọn các nút HAProxy và chỉ định Địa chỉ IP ảo sẽ được sử dụng để truy cập cơ sở dữ liệu.
Tại thời điểm này, bạn sẽ có cấu trúc liên kết sau:
Bây giờ, hãy kết nối môi trường này với Canvas LMS để có tính khả dụng cao.
Cách định cấu hình Canvas LMS
Trước tiên, bạn sẽ cần cài đặt nó. Có nhiều cách khác nhau để thực hiện, sử dụng thiết lập tự động trên Docker, theo cách thủ công hoặc thậm chí sử dụng các cách tiếp cận khác nhau như QuickStart hoặc cài đặt theo hướng sản xuất. Bạn có thể kiểm tra tài liệu chính thức để chọn phương pháp tốt nhất cho mình.
Sau khi cài đặt Canvas LMS, bạn có thể tiến hành định cấu hình tệp database.yml để sử dụng môi trường Tính khả dụng cao PostgreSQL mà bạn vừa triển khai.
$ cat config/database.yml
production:
adapter: postgresql
encoding: utf8
database: canvas_production
host: VIRTUAL_IPADDRESS
username: CANVAS_USER
password: CANVAS_PASSWD
timeout: 5000
Tại đây, hãy thay thế:
-
VIRTUAL_IPADDRESS cho Địa chỉ IP ảo được định cấu hình trong Keepalived
-
CANVAS_USER cho người dùng cơ sở dữ liệu Canvas
-
CANVAS_PASSWD cho mật khẩu cơ sở dữ liệu Canvas
Đảm bảo rằng bạn có thể truy cập cơ sở dữ liệu của mình bằng Địa chỉ IP Ảo làm máy chủ lưu trữ và nó được cho phép trong tệp cấu hình PostgreSQL pg_hba.conf. Bạn có thể kiểm tra nó bằng cách chạy lệnh sau từ máy chủ ứng dụng của mình:
$ psql -h VIRTUAL_IPADDRESS -U CANVAS_USER canvas_production
Tính năng Tự động khôi phục ClusterControl
Vì vậy, câu hỏi đặt ra là ngoài quá trình triển khai, vai trò của ClusterControl ở đây là gì?
Trong trường hợp không thành công, ClusterControl sẽ chuyển nút dự phòng tiên tiến nhất thành nút chính cũng như thông báo cho bạn về sự cố. Nó cũng không thể tái tạo phần còn lại của nút dự phòng từ máy chủ chính mới.
Theo mặc định, HAProxy được cấu hình với hai cổng khác nhau:đọc-ghi và chỉ đọc. Trong cổng đọc-ghi, bạn có nút chính của mình trực tuyến và các nút còn lại là ngoại tuyến và trong cổng chỉ đọc, bạn có cả nút chính và nút chờ trực tuyến.
Khi HAProxy phát hiện thấy một trong các nút của bạn không thể truy cập được, nó sẽ tự động đánh dấu nó là ngoại tuyến và không tính đến việc gửi lưu lượng đến nó. Việc phát hiện được thực hiện bằng các tập lệnh kiểm tra tình trạng được cấu hình bởi ClusterControl tại thời điểm triển khai. Những điều này sẽ kiểm tra xem các phiên bản đã hoạt động chưa, chúng đang trong quá trình khôi phục hay ở chế độ chỉ đọc.
Khi ClusterControl quảng bá một nút dự phòng, HAProxy đánh dấu nút chính cũ là ngoại tuyến cho cả hai cổng và đặt nút được quảng bá trực tuyến trong cổng đọc-ghi.
Nếu HAProxy đang hoạt động của bạn, được chỉ định Địa chỉ IP ảo mà hệ thống của bạn kết nối, không thành công, Keepalived sẽ tự động di chuyển Địa chỉ IP này sang HAProxy thụ động của bạn. Điều này có nghĩa là hệ thống của bạn sau đó có thể tiếp tục hoạt động bình thường.
Kết luận
Trong blog này, chúng tôi đã nói về tầm quan trọng của việc có một môi trường PostgreSQL có tính khả dụng cao để sử dụng với nền tảng Canvas LMS của bạn và cách ClusterControl có thể giúp bạn với cả nhiệm vụ Triển khai và Tự động phục hồi. Chúng tôi cũng đã đề cập đến cách cải thiện môi trường này bằng cách thêm HAProxy và Keepalived cho các mục đích Tính sẵn sàng cao.