Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Menyebarkan Database MySQL Chamilo untuk Ketersediaan Tinggi

Chamilo, seperti halnya Open edX atau Moodle, adalah platform yang memungkinkan institusi pendidikan mentransfer aktivitas pendidikan mereka ke internet. Mengingat bahwa sebagian besar aktivitas pendidikan telah beralih ke online pada tahun lalu, tidak mengherankan jika kita melihat semakin banyak orang berjuang untuk memperluas platform pendidikan mereka dan memastikan ketersediaan yang lebih baik.

Chamilo adalah platform yang dibangun di atas *AMP stack, yang terdiri dari Apache, MySQL, dan PHP. Seperti biasa, database adalah elemen yang paling sulit untuk dipindahkan ke lingkungan yang sangat tersedia. Dalam blog singkat ini kami ingin membahas bagaimana Anda dapat meningkatkan ketersediaan database Chamilo yang tinggi.

Seperti yang dapat Anda bayangkan, database MySQL tunggal adalah satu titik kegagalan dan, oleh karena itu, harus dihindari dalam penerapan produksi. Untungnya, ada beberapa cara untuk meningkatkan ketersediaan database MySQL.

Salah satu cara untuk mengatasi masalah adalah dengan menggunakan Galera Cluster. Penyebaran minimal harus terdiri dari tiga 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.

Pengaturan ini memerlukan semacam penyeimbang beban di depan kluster Galera. Tugasnya adalah 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 Chamilo Anda.

Menerapkan Cluster MariaDB

Kali ini kita akan mencoba menggunakan MariaDB Cluster sebagai backend kita. Chamilo mendukung MySQL 5.6 dan yang lebih baru atau MariaDB 5.5 dan yang lebih baru. Sebagai langkah pertama kita harus memilih “Deploy” dari wizard:

Setelah kita melakukannya, kita harus mendefinisikan konektivitas SSH, tanpa kata sandi, kunci -akses SSH berbasis adalah persyaratan untuk ClusterControl, jika tidak, ia tidak akan dapat mengelola infrastruktur basis data:ia bergantung pada konektivitas SSH untuk menjalankan perintah untuk memulai atau menghentikan layanan, menginstal perangkat lunak, dan sebagainya.

Kemudian kita harus memutuskan vendor, versi, sandi, host, dan beberapa pengaturan tambahan:

Dengan semua detail yang terisi, kami siap untuk melanjutkan penerapan.

Menyebarkan ProxySQL

Seperti yang kami sebutkan sebelumnya, database itu sendiri bukanlah satu-satunya elemen yang ingin kami terapkan. Kita bisa menggunakan penyeimbang beban yang akan kita gunakan untuk memindahkan lalu lintas jika salah satu node gagal. Kami juga akan menggunakannya untuk menyediakan pemisahan baca/tulis, mengarahkan semua penulisan ke satu node MariaDB Galera dan membagi bacaan di seluruh node MariaDB Galera yang tersisa. Ini akan membantu kami menghindari konflik antara penulisan yang dijalankan 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

ProxySQL akan bekerja dengan baik mendistribusikan lalu lintas kami di seluruh node cluster. Di sisi lain, satu node ProxySQL akan bertindak sebagai satu titik kegagalan. Oleh karena itu kami ingin menyebarkan setidaknya dua dari mereka. Lalu, pertanyaannya adalah bagaimana mendeteksi kegagalan node ProxySQL dan bagaimana memindahkan lalu lintas ke ProxySQL yang sehat. Ini dia 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, memastikan bahwa aplikasi akan selalu mencapai ProxySQL yang sehat yang, pada gilirannya, akan memastikan bahwa lalu lintas akan mencapai node cluster yang sehat.

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:

Begitulah mengenai lingkungan yang kami bangun. Anda dapat mengarahkan Chamilo Anda ke VIP dan port 6033, ini seharusnya cukup untuk mendapatkan konektivitas ke database backend Anda. Jika Anda mengalami masalah terkait pembacaan yang basi (saat penulisan mengenai satu node dan kemudian Chamilo mencoba membaca dari node lain, Anda dapat melihat mengaktifkan pemeriksaan kausalitas pada cluster Galera. Ada variabel wsrep_sync_wait yang dapat mengaktifkan pengujian pada beberapa akses pola: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 Cluster MariaDB.

Sudah cukup. Jika Anda ingin berbagi beberapa pengalaman Anda dengan Chamilo, silakan tinggalkan komentar kepada kami.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi MySQL ATAN2() – Mengembalikan Tangen Busur dari 2 Nilai

  2. Bagaimana cara mengetahui apakah MySQLnd adalah driver aktif?

  3. Bagaimana saya bisa melihat kueri MySQL langsung?

  4. Pelacakan notifikasi suka Facebook (Desain DB)

  5. Menggunakan Python dan MySQL dalam Proses ETL:SQLAlchemy