MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Pengantar Administrasi MaxScale Menggunakan maxctrl untuk MariaDB Cluster

Cluster MariaDB terdiri dari Server MariaDB dengan Cluster Galera dan MariaDB MaxScale. Sebagai solusi replikasi multi-master, setiap Server MariaDB dengan Galera Cluster dapat beroperasi sebagai server utama. Ini berarti bahwa perubahan yang dilakukan pada setiap node dalam cluster mereplikasi ke setiap node lain dalam cluster, menggunakan replikasi berbasis sertifikasi dan pemesanan transaksi global untuk mesin penyimpanan InnoDB. MariaDB MaxScale adalah proxy database, berada di atas Server MariaDB yang memperluas ketersediaan tinggi, skalabilitas, dan keamanan sementara pada saat yang sama menyederhanakan pengembangan aplikasi dengan memisahkannya dari infrastruktur database yang mendasarinya.

Dalam seri blog ini, kita akan melihat administrasi MaxScale menggunakan maxctrl untuk Cluster MariaDB kita. Dalam angsuran pertama dari seri blog ini, kita akan membahas pengenalan dan beberapa dasar utilitas baris perintah maxctrl. Setup kami terdiri dari satu server MaxScale dan MariaDB 10.4 3-node dengan Galera 4, seperti yang diilustrasikan dalam diagram berikut:

Cluster MariaDB kami digunakan dan dikelola oleh ClusterControl, sementara host MaxScale kami host baru di cluster dan tidak digunakan oleh ClusterControl untuk tujuan panduan ini.

Instalasi MaxScale

Instalasi MaxScale cukup mudah. Pilih sistem operasi yang tepat dari halaman unduh MariaDB untuk MaxScale dan unduh. Contoh berikut menunjukkan bagaimana seseorang akan menginstal MaxScale pada host CentOS 8:

$ wget https://dlm.mariadb.com/1067156/MaxScale/2.4.10/centos/8/x86_64/maxscale-2.4.10-1.centos.8.x86_64.rpm
$ yum localinstall maxscale-2.4.10-1.centos.8.x86_64.rpm
$ systemctl enable maxscale
$ systemctl start maxscale

Setelah daemon dijalankan, secara default, komponen MaxScale akan berjalan pada port berikut:

  • 0.0.0.0:4006 - Pendengar pemisahan baca-tulis default.
  • 0.0.0.0:4008 - Pendengar round-robin default.
  • 127.0.0.1:8989 - API Istirahat MaxScale.

Port di atas dapat diubah. Biasanya server MaxScale mandiri dalam produksi berjalan dengan pemisahan baca/tulis pada port 3306 dan round-robin pada port 3307. Konfigurasi inilah yang akan kita terapkan dalam entri blog ini.

File Penting dan Struktur Direktori

Setelah paket diinstal, Anda akan mendapatkan utilitas/program berikut:

  • skala maksimal - MaxScale itu sendiri.
  • maxctrl - Klien administratif baris perintah untuk MaxScale yang menggunakan API REST MaxScale untuk komunikasi.
  • maxadmin - Klien administratif dan monitor MaxScale yang tidak digunakan lagi. Gunakan maxctrl sebagai gantinya.
  • maxkeys - Utilitas ini menulis ke dalam file .secrets, di direktori yang ditentukan, kunci enkripsi AES dan vektor init yang digunakan oleh utilitas maxpasswd, saat mengenkripsi kata sandi yang digunakan dalam file konfigurasi MariaDB MaxScale.
  • maxpasswd - Utilitas ini membuat sandi terenkripsi menggunakan file .secrets yang sebelumnya telah dibuat menggunakan maxkeys.

MaxScale akan memuat semua opsi konfigurasi dari lokasi berikut, dalam urutan tertentu:

  1. /etc/maxscale.cnf
  2. /etc/maxscale.cnf.d/*.cnf
  3. /var/lib/maxscale/maxscale.cnf.d/*.cnf

Untuk memahami lebih lanjut tentang konfigurasi MaxScale, lihat Panduan Konfigurasi MaxScale.

Setelah MaxScale diinisialisasi, file default dan struktur direktori adalah:

  • Direktori data MaxScale:/var/lib/maxscale
  • File PID MaxScale:/var/run/maxscale/maxscale.pid
  • File log MaxScale:/var/log/maxscale/maxscale.log
  • Dokumentasi MaxScale:/usr/share/maxscale

MaxCtrl - CLI

Setelah dimulai, kita dapat menggunakan klien baris perintah MaxCtrl untuk mengelola MaxScale dengan menggunakan mendengarkan MaxScale REST API pada port 8989 di localhost. Kredensial default untuk REST API adalah "admin:mariadb". Pengguna yang digunakan oleh REST API sama dengan yang digunakan oleh antarmuka jaringan MaxAdmin. Ini berarti bahwa setiap pengguna yang dibuat untuk antarmuka jaringan MaxAdmin harus bekerja dengan MaxScale REST API dan MaxCtrl.

Kita dapat menggunakan utilitas maxctrl dalam mode interaktif, mirip dengan klien mysql. Cukup ketik "maxctrl" dan Anda akan masuk ke mode interaktif (di mana prompt berubah dari prompt shell ke maxctrl prompt), seperti screenshot berikut:

Atau, kita dapat menjalankan perintah yang sama langsung di prompt shell, misalnya:

Opsi perintah MaxCtrl bergantung pada versi MaxScale yang menyertainya. Pada saat penulisan ini, versi MaxScale adalah 2.4 dan Anda harus melihat dokumentasi ini untuk daftar lengkap perintah. MaxCtrl menggunakan antarmuka MaxScale REST API, yang menjelaskan secara rinci di sini.

Menambahkan Server MariaDB ke MaxScale

Saat pertama kali kita memulai MaxScale, itu akan menghasilkan file konfigurasi di /etc/maxscale.cnf dengan beberapa parameter dan contoh default. Kami tidak akan menggunakan konfigurasi ini dan kami akan membuat sendiri sebagai gantinya. Buat cadangan file ini karena kami ingin mengosongkannya nanti:

$ mv /etc/maxscale.cnf /etc/maxscale.cnf.bak
$ cat /dev/null > /etc/maxscale.cnf # empty the file

Mulai ulang MaxScale untuk memulai semuanya dengan segar:

$ systemctl restart maxscale

Istilah "server" di MaxScale pada dasarnya berarti server MariaDB backend, seperti dalam kasus ini, ketiga node dari Cluster MariaDB kami. Untuk menambahkan semua 3 server MariaDB Cluster ke dalam runtime MaxScale, gunakan perintah berikut:

$ maxctrl create server mariadbgalera1 192.168.0.221 3306
$ maxctrl create server mariadbgalera2 192.168.0.222 3306
$ maxctrl create server mariadbgalera3 192.168.0.222 3306

Untuk memverifikasi server yang ditambahkan, gunakan perintah daftar:

$ maxctrl list servers

Dan Anda akan melihat output berikut:

Menambahkan Pemantauan ke MaxScale

Hal berikutnya adalah mengkonfigurasi layanan pemantauan untuk penggunaan MaxScale. MaxScale mendukung sejumlah modul pemantauan tergantung pada jenis database, yaitu:

  • Monitor MariaDB
  • Galera Monitor
  • Monitor Clustrix
  • Pemantau ColumnStore
  • Aurora Monitor

Dalam pengaturan ini, kita akan menggunakan modul Monitor Galera yang disebut "galeramon". Pertama, kita perlu membuat database user yang akan digunakan oleh MaxScale di salah satu server di MariaDB Cluster. Dalam contoh ini kami memilih mariadbgalera1, 192.168.0.221 untuk menjalankan pernyataan berikut:

MariaDB> CREATE USER [email protected]'192.168.0.220' IDENTIFIED BY 'MaXSc4LeP4ss';
MariaDB> GRANT SELECT ON mysql.* TO 'maxscale_monitor'@'192.168.0.220';
MariaDB> GRANT SHOW DATABASES ON *.* TO 'maxscale_monitor'@'192.168.0.220';

Di mana 192.168.0.220 adalah alamat IP server MaxScale kami.

Tidak aman menyimpan kata sandi pengguna maxscale_monitor dalam teks biasa. Sangat disarankan untuk menyimpan kata sandi dalam format terenkripsi. Untuk mencapai ini, kita perlu membuat kunci rahasia khusus untuk instance MaxScale ini. Gunakan utilitas "maxkeys" untuk menghasilkan kunci rahasia yang akan digunakan oleh MaxScale untuk tujuan enkripsi dan dekripsi:

$ maxkeys
Generating .secrets file in /var/lib/maxscale.

Sekarang kita dapat menggunakan utilitas maxpasswd untuk menghasilkan nilai terenkripsi dari kata sandi kita:

$ maxpasswd MaXSc4LeP4ss
D91DB5813F7C815B351CCF7D7F1ED6DB

Kami akan selalu menggunakan nilai di atas sebagai gantinya saat menyimpan kredensial pengguna pemantauan kami di dalam MaxScale. Sekarang kami siap untuk menambahkan layanan pemantauan Galera ke MaxScale menggunakan maxctrl:

maxctrl> create monitor galera_monitor galeramon servers=mariadbgalera1,mariadbgalera2,mariadbgalera3 user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB

Verifikasi dengan perintah berikut:

Menambahkan Layanan ke MaxScale

Layanan pada dasarnya adalah cara MaxScale merutekan kueri ke server backend. MaxScale 2.4 mendukung beberapa layanan (atau router), yaitu:

  • Avrorouter
  • Binlogrouter
  • Kucing
  • CLI
  • HintRouter
  • Bacaconnroute
  • Pembagian baca-tulis
  • SchemaRouter
  • SmartRouter

Untuk Cluster MariaDB kami, kami hanya membutuhkan dua layanan perutean - Baca-tulis split dan load balancing round-robin. Untuk pemisahan baca-tulis, kueri tulis hanya akan diteruskan ke satu server MariaDB hingga server tidak dapat dijangkau, di mana MaxScale kemudian akan meneruskan kueri tulis ke node berikutnya yang tersedia. Untuk penyeimbangan round-robin, kueri akan diteruskan ke semua node backend secara round-robin.

Buat layanan perutean untuk round-robin (atau multi-master):

maxctrl> create service Round-Robin-Service readconnroute user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB --servers mariadbgalera1 mariadbgalera2 mariadbgalera3

Buat layanan perutean lain untuk pemisahan baca-tulis (atau master tunggal):

maxctrl> create service Read-Write-Service readwritesplit user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB --servers mariadbgalera1 mariadbgalera2 mariadbgalera3

Verifikasi dengan:

Semua komponen yang berhasil dibuat oleh MaxCtrl akan menghasilkan file konfigurasinya sendiri di bawah / var/lib/maxscale/maxscale.cnf.d. Pada titik ini, direktori terlihat seperti ini:

$ ls -l /var/lib/maxscale/maxscale.cnf.d
total 24
-rw-r--r--. 1 maxscale maxscale  532 Jul  5 13:18 galera_monitor.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera1.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera2.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:56 mariadbgalera3.cnf
-rw-r--r--. 1 maxscale maxscale 1128 Jul  5 16:01 Read-Write-Service.cnf
-rw-r--r--. 1 maxscale maxscale  477 Jul  5 16:00 Round-Robin-Service.cnf

Menambahkan Pendengar ke MaxScale

Listeners mewakili port yang akan didengarkan oleh layanan untuk koneksi masuk. Itu bisa berupa port atau file soket UNIX dan tipe komponennya harus "pendengar". Umumnya, pendengar terikat pada layanan. Dalam pengaturan kami, kami akan membuat dua pendengar - Read-Write Listener pada port 3306 dan Round-Robin Listener pada port 3307:

maxctrl> create listener Read-Write-Service Read-Write-Listener 3306 --interface=0.0.0.0 --authenticator=MariaDBAuth
maxctrl> create listener Round-Robin-Service Round-Robin-Listener 3307 --interface=0.0.0.0 --authenticator=MariaDBAuth

Verifikasi dengan perintah berikut:

Pada titik ini, MaxScale kami sekarang siap untuk memuat keseimbangan kueri ke Klaster MariaDB kami. Dari aplikasi, kirim kueri ke host MaxScale pada port 3306, di mana kueri tulis akan selalu mengenai node database yang sama sementara kueri baca akan dikirim ke dua node lainnya. Ini juga dikenal sebagai pengaturan penulis tunggal. Jika Anda ingin menggunakan pengaturan multi-penulis, di mana penulisan akan diteruskan ke semua node MariaDB backend berdasarkan algoritme penyeimbangan round-robin. Anda dapat menyempurnakan keseimbangan lebih lanjut dengan menggunakan prioritas dan bobot.

Sekali lagi, ketika mengubah opsi konfigurasi melalui maxctrl, semua komponen yang berhasil dibuat akan memiliki file konfigurasi sendiri di dalam /var/lib/maxscale/maxscale.cnf.d, seperti yang ditunjukkan pada output berikut:

$ ls -l /var/lib/maxscale/maxscale.cnf.d
-rw-r--r--. 1 maxscale maxscale  532 Jul  5 13:18 galera_monitor.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera1.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera2.cnf
-rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:56 mariadbgalera3.cnf
-rw-r--r--. 1 maxscale maxscale  259 Jul  5 16:06 Read-Write-Listener.cnf
-rw-r--r--. 1 maxscale maxscale 1128 Jul  5 16:06 Read-Write-Service.cnf
-rw-r--r--. 1 maxscale maxscale  261 Jul  5 16:06 Round-Robin-Listener.cnf
-rw-r--r--. 1 maxscale maxscale  477 Jul  5 16:06 Round-Robin-Service.cnf

Opsi konfigurasi di atas dapat langsung dimodifikasi agar lebih sesuai dengan kebutuhan Anda, tetapi layanan MaxScale harus dimulai ulang untuk memuat perubahan baru. Jika Anda ingin memulai dari awal lagi, Anda dapat menghapus semua yang ada di direktori ini dan memulai ulang MaxScale.

Di episode berikutnya, kita akan melihat perintah manajemen dan pemantauan MaxCtrl untuk Cluster MariaDB kita.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB JSON_ARRAY_APPEND() Dijelaskan

  2. Menggabungkan Kekuatan SQL dan Pernyataan Prosedural dengan Mode Kompatibilitas Oracle MariaDB

  3. Cara Mengelola MariaDB 10.3 dengan ClusterControl

  4. Cara Menjadwalkan Pencadangan Basis Data dengan ClusterControl

  5. Membangun Cold Standby MySQL atau MariaDB Database di Amazon AWS