Open edX adalah platform untuk aktivitas pendidikan online. Mengingat situasi dunia saat ini, semua platform tersebut menghadapi beban yang lebih tinggi dan kepentingannya telah meningkat secara signifikan. Itu bukan hanya platform “pembantu” tetapi sering menjadi cara utama di mana kegiatan pendidikan dilakukan. Ini mengarah pada persyaratan yang lebih tinggi terkait beban yang dapat mereka tangani atau ketersediaan platform.
Open edX adalah produk kompleks yang terdiri dari beberapa elemen. Salah satunya adalah database MySQL. Dalam blog singkat ini kami ingin membahas bagaimana Anda dapat meningkatkan ketersediaan tinggi platform Open edX.
Jelas, database MySQL tunggal adalah satu titik kegagalan dan, dengan demikian, ini bukan pendekatan yang cocok untuk penyebaran produksi. Ada beberapa cara untuk meningkatkan ketersediaan database MySQL.
Sebagai permulaan, Anda dapat menjalankan master - pengaturan slave menggunakan replikasi asinkron atau semi-sinkron. Keuntungannya adalah, ketika master tidak tersedia, Anda dapat mempromosikan salah satu budak dan melanjutkan operasi. Kelemahan utama dari pengaturan seperti itu adalah bahwa failover harus dilakukan secara manual, yang meningkatkan waktu henti atau Anda harus menggunakan beberapa perangkat lunak eksternal (misalnya ClusterControl) tetapi sekali lagi mungkin masih memerlukan sedikit waktu. Akhirnya, segala jenis replikasi asinkron atau semi-sinkron tunduk pada jeda replikasi. Ini dapat berdampak serius pada skenario baca-setelah-tulis di mana aplikasi mengeksekusi penulisan pada master dan kemudian segera mencoba membaca data tersebut dari slave.
Pendekatan lain adalah menggunakan Galera Cluster untuk menyimpan data dari platform Open edX. Kita bisa mulai dengan tiga cluster node - cluster tersebut dapat secara otomatis menangani kegagalan satu node. Dua node yang tersisa akan terus bekerja dan responsif untuk pertanyaan yang datang dari aplikasi. Keuntungan lain dari Galera adalah, meskipun "hampir" sinkron (yang berarti hampir sinkron), ada cara untuk menegakkan pemeriksaan kausalitas dan memaksa cluster ke mode sinkron (bahkan jika Anda membayarnya dengan penurunan kinerja).
Kedua skenario akan memerlukan semacam penyeimbang beban di depannya, yang akan menangani lalu lintas dan mengarahkannya ke tujuan yang tepat.
Mari kita lihat bagaimana ClusterControl dapat membantu Anda menerapkan Galera Cluster dengan satu set load balancer yang dapat Anda gunakan untuk platform Open edX Anda.
Menerapkan Cluster MariaDB
Kali ini kita akan mencoba menggunakan MariaDB Cluster sebagai backend kita. Sekali lagi, langkah pertama sama, kita harus memilih “Deploy” dari wizard:
Setelah Anda melakukannya, kita harus menentukan konektivitas SSH, tanpa kata sandi, kunci -akses SSH berbasis merupakan persyaratan untuk ClusterControl, jika tidak maka tidak akan dapat mengelola infrastruktur database.
Kemudian kita harus memutuskan vendor, versi, sandi, host, dan beberapa pengaturan tambahan:
Dengan semua detail yang terisi, kami siap untuk melanjutkan penerapan.
Menyebarkan ProxySQL
Database itu sendiri bukan satu-satunya elemen yang ingin kita terapkan. Kami juga membutuhkan penyeimbang beban yang akan kami gunakan untuk mengarahkan lalu lintas ke node yang tersedia pada saat tertentu. Kami juga akan menggunakannya untuk menyediakan pemisahan baca/tulis, mengarahkan semua penulisan ke satu simpul MariaDB Galera. Ini akan membantu kami menghindari konflik antara penulisan yang dieksekusi pada node Galera yang berbeda.
Untuk ProxySQL ClusterControl juga memerlukan pengisian beberapa informasi - Anda harus memilih host untuk menginstalnya, memutuskan versi ProxySQL, kredensial untuk pengguna administratif dan pemantauan. Pengguna tersebut akan digunakan untuk mengelola ProxySQL dan memantau status kluster Galera Anda. Anda juga harus mengimpor pengguna database yang ada atau membuat yang baru untuk aplikasi Anda. Terakhir, terserah Anda untuk memutuskan node database mana yang ingin Anda gunakan dengan ProxySQL dan memutuskan apakah Anda menggunakan transaksi implisit.
Menerapkan Keepalive
Sebagai langkah selanjutnya kami akan menerapkan Keepalive. Idenya di sini adalah memiliki IP virtual yang akan menunjuk ke instance ProxySQL yang berfungsi. VIP tersebut kemudian dapat digunakan dalam aplikasi sebagai titik akhir untuk konektivitas database MySQL.
Setelah melewati detail seperti instance ProxySQL yang harus dipantau, IP Virtual dan antarmuka VIP harus mengikat kami siap untuk menyebarkan. Setelah beberapa menit semuanya akan siap dan topologi akan terlihat seperti di bawah ini:
Itu saja dalam hal penerapan. Anda dapat mengarahkan platform Open edX Anda ke VIP dan port 6033, ini seharusnya cukup untuk mendapatkan konektivitas ke database backend Anda. Bit terakhir yang tersisa, jika Anda merasa perlu, adalah mengonfigurasi pemeriksaan kausalitas. Ada variabel wsrep_sync_wait yang dapat melakukan hal itu. Itu dapat mengaktifkan tes pada beberapa pola akses:membaca, memperbarui, menyisipkan, menghapus, mengganti, dan perintah SHOW. Jika kita hanya tertarik pada kueri SELECT, kita akan menyetel variabel ini ke '1' menggunakan manajemen konfigurasi ClusterControl.
Ini akan melakukan perubahan ini pada semua node MariaDB Cluster.
Sudah cukup. Jika Anda ingin berbagi beberapa pengalaman Anda dengan Open edX, Anda dipersilakan untuk memberikan komentar kepada kami.