Dalam masa pandemi ini, platform Learning Management System (LMS) menjadi semakin penting untuk memungkinkan Anda terus belajar dari jarak jauh ketika sistem pendidikan tradisional tidak lagi tersedia.
Memiliki platform LMS tanpa Ketersediaan Tinggi dapat menjadi masalah jika terjadi kegagalan, karena semua upaya Anda untuk menjaga sistem tetap berjalan tidak akan masuk akal tanpa database tersedia setiap saat.
Di blog ini, kita akan melihat aplikasi LMS populer bernama Canvas LMS, dan cara menerapkannya dengan ketersediaan tinggi menggunakan PostgreSQL dan ClusterControl.
Apa itu Kanvas?
Canvas adalah Sistem Manajemen Pembelajaran (LMS) berbasis web. Ini digunakan oleh lembaga pembelajaran, pendidik, dan siswa untuk mengakses dan mengelola materi pembelajaran kursus online dan berkomunikasi tentang pengembangan keterampilan dan pencapaian pembelajaran.
Canvas mencakup berbagai alat manajemen dan pembuatan kursus yang dapat disesuaikan, analisis dan statistik kursus dan pengguna, serta alat komunikasi internal.
Penerapan Basis Data PostgreSQL LMS Kanvas
Pertama, mari kita terapkan Cluster PostgreSQL, yang akan digunakan oleh aplikasi Canvas LMS. Untuk ini, kami akan menggunakan ClusterControl untuk menerapkan 3 node PostgreSQL (1 node Primer dan 2 Siaga), dan 2 HAProxy Load Balancer dengan Keepalive yang dikonfigurasi di antaranya.
HAProxy adalah penyeimbang beban yang mendistribusikan lalu lintas dari satu asal ke satu atau beberapa tujuan dan dapat menentukan aturan dan/atau protokol khusus untuk tugas ini. Jika salah satu tujuan berhenti merespons, itu ditandai sebagai offline, dan lalu lintas dikirim ke tujuan lain yang tersedia.
Keepalived adalah layanan yang memungkinkan Anda mengonfigurasi Alamat IP Virtual dalam grup server aktif/pasif. Alamat IP Virtual ini ditetapkan ke server yang aktif. Jika server ini gagal, Alamat IP secara otomatis dimigrasikan ke server pasif “Sekunder”, memungkinkannya untuk terus bekerja dengan Alamat IP yang sama secara transparan untuk sistem.
Jadi, mari kita lihat bagaimana mengimplementasikan topologi tersebut menggunakan ClusterControl.
Penerapan Basis Data
Untuk melakukan penerapan dari ClusterControl, cukup pilih opsi “Deploy” dan ikuti petunjuk yang muncul.
Saat memilih PostgreSQL, Anda harus menentukan Pengguna, Kunci atau Kata Sandi, dan Port untuk terhubung dengan SSH ke server Anda. Anda juga dapat menambahkan nama untuk cluster baru Anda dan jika Anda ingin ClusterControl menginstal perangkat lunak dan konfigurasi yang sesuai untuk Anda.
Setelah menyiapkan informasi akses SSH, Anda perlu menentukan kredensial basis data , versi, dan datadir (opsional). Anda juga dapat menentukan repositori mana yang akan digunakan.
Pada langkah berikutnya, Anda perlu menambahkan server Anda ke cluster yang akan Anda buat menggunakan Alamat IP atau Hostname.
Pada langkah terakhir, Anda dapat memilih apakah replikasi Anda akan Sinkron atau Tidak sinkron, lalu cukup tekan “Deploy”
Setelah tugas selesai, Anda dapat melihat cluster PostgreSQL baru di layar ClusterControl utama.
Sekarang Anda telah membuat cluster, Anda dapat melakukan beberapa tugas di dalamnya, seperti menambahkan penyeimbang beban (HAProxy) atau replika baru.
Penerapan Penyeimbang Beban
Untuk melakukan penerapan load balancer, pilih opsi “Tambahkan Load Balancer” di tindakan cluster, dan lengkapi informasi yang diminta.
Anda hanya perlu menambahkan IP atau Hostname, Port, Policy, dan node yang akan Anda gunakan.
Penerapan yang Dipertahankan
Untuk melakukan penerapan Keepalived, pilih opsi “Tambahkan Load Balancer” di tindakan cluster, lalu buka Tab Keepalive.
Di sini, pilih node HAProxy, dan tentukan Alamat IP Virtual yang akan digunakan untuk mengakses database.
Pada saat ini, Anda harus memiliki topologi berikut:
Sekarang, mari hubungkan lingkungan ini ke Canvas LMS untuk Ketersediaan Tinggi.
Cara Mengonfigurasi Canvas LMS
Pertama, Anda harus menginstalnya. Ada berbagai cara untuk melakukannya, menggunakan pengaturan otomatis di Docker, secara manual, atau bahkan menggunakan pendekatan berbeda seperti QuickStart atau instalasi Berorientasi Produksi. Anda dapat memeriksa dokumentasi resmi untuk memilih metode terbaik untuk Anda.
Setelah Canvas LMS terinstal, Anda dapat melanjutkan untuk mengonfigurasi file database.yml untuk menggunakan lingkungan Ketersediaan Tinggi PostgreSQL yang baru saja Anda terapkan.
$ cat config/database.yml
production:
adapter: postgresql
encoding: utf8
database: canvas_production
host: VIRTUAL_IPADDRESS
username: CANVAS_USER
password: CANVAS_PASSWD
timeout: 5000
Di sini, ganti:
-
VIRTUAL_IPADDRESS untuk Alamat IP Virtual yang dikonfigurasi di Keepalive
-
CANVAS_USER untuk pengguna basis data Canvas
-
CANVAS_PASSWD untuk kata sandi basis data Canvas
Pastikan Anda dapat mengakses database menggunakan Alamat IP Virtual Anda sebagai host dan diperbolehkan dalam file konfigurasi PostgreSQL pg_hba.conf. Anda dapat mengujinya dengan menjalankan perintah berikut dari server aplikasi Anda:
$ psql -h VIRTUAL_IPADDRESS -U CANVAS_USER canvas_production
Fitur Pemulihan Otomatis Kontrol Cluster
Jadi, pertanyaannya adalah, selain proses penerapan, apa peran ClusterControl di sini?
Jika terjadi kegagalan, ClusterControl akan mempromosikan node siaga paling canggih ke node utama serta memberi tahu Anda tentang masalahnya. Itu juga gagal pada node siaga lainnya untuk mereplikasi dari server utama yang baru.
Secara default, HAProxy dikonfigurasi dengan dua port berbeda:baca-tulis dan baca-saja. Di port baca-tulis, Anda memiliki node utama sebagai online dan node lainnya sebagai offline, dan di port read-only, Anda memiliki node utama dan node siaga online.
Bila HAProxy mendeteksi bahwa salah satu node Anda tidak dapat diakses, HAProxy secara otomatis menandainya sebagai offline dan tidak memperhitungkan pengiriman lalu lintas ke node tersebut. Deteksi dilakukan dengan skrip pemeriksaan kesehatan yang dikonfigurasi oleh ClusterControl pada saat penerapan. Ini memeriksa apakah instance aktif, apakah sedang menjalani pemulihan, atau hanya-baca.
Saat ClusterControl mempromosikan node siaga, HAProxy menandai primer lama sebagai offline untuk kedua port dan menempatkan node yang dipromosikan online di port baca-tulis.
Jika HAProxy aktif Anda, yang diberi Alamat IP Virtual yang terhubung dengan sistem Anda, gagal, Keepalived memigrasikan Alamat IP ini ke HAProxy pasif Anda secara otomatis. Artinya, sistem Anda dapat terus berfungsi secara normal.
Kesimpulan
Di blog ini, kami berbicara tentang pentingnya memiliki lingkungan PostgreSQL Ketersediaan Tinggi untuk digunakan dengan platform Canvas LMS Anda, dan bagaimana ClusterControl dapat membantu Anda dengan tugas Deployment dan Autorecovery. Kami juga telah menyebutkan cara meningkatkan lingkungan ini dengan menambahkan HAProxy dan Keepalive untuk tujuan Ketersediaan Tinggi.