Moodle adalah sistem manajemen pembelajaran open source, banyak digunakan oleh sekolah dan universitas di seluruh dunia. Proyek ini dimulai pada tahun 2002 oleh Martin Dougiamas, dengan tujuan untuk menyediakan platform yang aman, tangguh, terbuka, dan gratis bagi pelajar, pengajar, dan pendidik untuk lingkungan belajar.
Perangkat lunak itu sendiri ditulis dalam PHP, dan mendukung berbagai RDBMS, seperti:Oracle, MySQL, PostgreSQL, MariaDB, dll.
Dalam blog ini, kita akan membahas bagaimana membuat database Moodle tangguh menggunakan Replikasi MySQL, yang diperlukan untuk mendukung penyebaran Moodle Ketersediaan Tinggi. Kami akan menyebarkan melalui ClusterControl setup database yang terdiri dari master/slave MySQL Replication yang digawangi oleh database load balancer yang berlebihan.
Arsitektur
Replikasi MySQL adalah cara populer untuk mencapai redundansi untuk database. Penting untuk memastikan bahwa semua penulisan dikirim ke master, sementara pembacaan dapat diseimbangkan antara budak. Untuk melakukan itu, kita akan menggunakan ProxySQL yang merupakan penyeimbang beban berbasis basis data yang menangani pemisahan lalu lintas tulis dan mengirimkannya ke master. Karena peran master dapat berpindah ke server lain, misalnya jika terjadi crash database, ProxySQL dapat melacak master baru dan memastikan lalu lintas tulis diarahkan sesuai dengan itu. VirtualIP dikelola oleh Keepalive untuk memastikan satu titik akhir basis data yang tangguh untuk semua server aplikasi Moodle.
Manajemen Pemantauan dan Kegagalan
Pada diagram di atas, kami menyarankan dua replika yang bekerja di database master. Dalam kasus master crash, salah satu replika akan dipromosikan menjadi master baru. Masih akan ada replika yang tersisa untuk menangani hal-hal seperti pembacaan, pencadangan, pelaporan, dll.
Koneksi aplikasi menggunakan VIP (Alamat IP Virtual) dalam string koneksi database, jadi jika sesuatu terjadi di sisi database, itu akan meminimalkan dampak dari aplikasi Anda dan Anda tidak perlu mengkonfigurasi ulang apa pun. ClusterControl adalah komponen yang mengawasi database dan mengotomatiskan failover, misalnya mempromosikan salah satu replika ke master baru dan memulihkan server database yang gagal.
Pengaturan Basis Data
Kami akan menggunakan ClusterControl untuk menerapkan pengaturan database kami.
Pertama, Anda harus memiliki server khusus untuk penyiapan ClusterControl. Instalasi sangat mudah, Anda hanya perlu mengunduh install-cc dari beberapa repositori, memberikan izin eksekusi pada file, dan menjalankannya. Seperti yang ditunjukkan di bawah ini:
$ wget http://www.severalnines.com/downloads/cmon/install-cc
$ chmod +x install-cc
$ sudo ./install-cc # omit sudo if you run as root
Anda dapat menjalankan skrip di atas dalam semua jenis varian Linux. Ini akan menyebarkan apa pun yang diperlukan oleh ClusterControl.
Setelah Anda mengaktifkan dan menjalankan ClusterControl, pilih tombol Deploy dari Dasbor ClusterControl.
Ini akan menampilkan halaman baru yang menunjukkan beberapa opsi. Kami akan memilih opsi Deploy pertama untuk penyiapan Replikasi MySQL kami.
Anda harus memiliki akses ke server database target melalui SSH. Jangan lupa untuk mengaktifkan SSH tanpa kata sandi dan memberikan akses sudo kepada pengguna. Tentukan nama cluster dan klik Continue seperti gambar di bawah ini:
Pada halaman berikutnya, Anda diharuskan memilih vendor database, versi database yang ingin Anda instal, kata sandi root, port server jika Anda ingin memiliki port khusus atau khusus, dan direktori data MySQL.
Setelah semua informasi terisi, Anda dapat melanjutkan ke langkah berikutnya, yaitu Tentukan halaman Topologi. Silahkan isi ip address dari database server, dalam hal ini seperti yang kita atur Replikasi MyQL dengan 1 Master dan 2 Replika.
Deploy sekarang akan memicu pekerjaan yang akan "Buat Cluster", Anda hanya harus menunggu sampai pekerjaan selesai.
Pengaturan ProxySQL
Setelah database di-deploy, Anda dapat membuka Load Balancer dari menu cluster Anda. Silakan pergi ke Kelola -> Load Balancer. Ini akan ditampilkan seperti di bawah ini:
Menyebarkan ProxySQL mengharuskan Anda mengisi beberapa informasi seperti alamat IP tempat Anda ingin menginstal ProxySQL, kata sandi untuk administrasi dan pemantauan pengguna, dan mengaktifkan instans untuk memuat keseimbangan. Setelah itu, klik saja Deploy. Untuk ketersediaan tinggi, Anda memerlukan setidaknya 2 penyeimbang beban yang dipasang di depan database.
Konfigurasi Tetap Terjaga
Layanan tetap digunakan untuk membuat penyeimbang beban Anda sangat tersedia. Setupnya gampang banget, masih di halaman Load Balancer ada tab Keepalive seperti di bawah ini:
Pilih jenis penerapan load balancer, dalam hal ini kami menggunakan ProxySQL, pilih layanan ProxySQL untuk keepalive. Isi alamat IP Virtual dan Antarmuka Jaringan. Setelah itu cukup klik Deploy Keepalive, maka secara otomatis akan memicu pekerjaan baru untuk menyiapkan layanan.
Pengaturan Aplikasi
Sebelum Anda menyiapkan aplikasi moodle, Anda perlu menyiapkan kredensial pengguna dan database itu sendiri. Untuk kredensial, Anda dapat membuka:Kelola -> Skema dan Pengguna.
Anda perlu mengisi beberapa informasi, misalnya:username, password, hostname dan hak istimewa. Setelah itu, klik saja Buat Pengguna. Ini memungkinkan Anda membuat pengguna untuk aplikasi moodle:
Untuk membuat database, Anda dapat memilih tab Create Database pada yang sama halaman sebagai Pengguna.
Langkah selanjutnya adalah mengkonfigurasi kredensial di sisi ProxySQL, Anda dapat mengimpor kredensial yang telah Anda buat di ProxySQL. Anda bisa pergi ke node ProxySQL, pilih tab Users, ada tombol Import User di sisi kanan.
Cari pengguna moodle_application, lalu pilih pengguna. Pada halaman berikutnya, Anda perlu menentukan Hostgroup default untuk pengguna dan kemudian Impor Pengguna.
Harap ulangi langkah-langkah untuk mengimpor Pengguna di node ProxySQL lainnya, atau Anda dapat menggunakan Instans Sinkronisasi di Menu ProxySQL.
Anda perlu mengunduh aplikasi moodle dari situs resmi moodle (re. https ://download.moodle.org/), versi terbaru saat blog ini ditulis adalah 3.9.1. Mereka menyediakan dua jenis file terkompresi, zip terkompresi dan zip tar. Unduh file zip dan letakkan file di server aplikasi Anda. Lihat persyaratan untuk perangkat lunak moodle, yaitu:Server Web, pustaka PHP.
Ekstrak file zip ke direktori temp, buat direktori /var/www/html/moodle, salin direktori hasil ekstrak ke folder. Jangan lupa untuk memberikan izin 0755 untuk direktori. Setelah itu, Anda dapat mengakses browser web untuk pengaturan selanjutnya. Pilih bahasa seperti yang ditunjukkan di bawah ini:
Pilih driver database untuk penyiapan MySQL Anda seperti di bawah ini:
Anda perlu mengisi beberapa informasi kredensial database yang telah Anda buat sebelumnya, untuk contoh:username, password, host, database, port. Nama host harus Alamat IP Virtual Anda dan portnya adalah port ProxySQL, yaitu 6032.
Host basis data akan menjadi Alamat IP Virtual Anda. Setelah Anda mengisi bidang, klik Berikutnya dan Anda selesai.
Membangun database yang sangat tersedia untuk Moodle menggunakan ClusterControl sangat mudah dan langsung, Anda dapat membangun database Anda sendiri yang akan mendukung uptime layanan 99,99% Anda.