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

Gambaran Umum Pengelompokan ProxySQL di ClusterControl

ProxySQL adalah penyeimbang beban yang terkenal di dunia MySQL - ia hadir dengan serangkaian fitur hebat yang memungkinkan Anda mengendalikan lalu lintas dan membentuknya sesuai keinginan Anda. Hal ini dapat digunakan dalam berbagai cara - node khusus, ditempatkan dengan host aplikasi, pendekatan silo - semua tergantung pada lingkungan yang tepat dan kebutuhan bisnis. Tantangan umum adalah bahwa Anda, sebagian besar kasus, ingin node ProxySQL Anda berisi konfigurasi yang sama. Jika Anda menskalakan kluster dan menambahkan server baru ke ProxySQL, Anda ingin server tersebut terlihat di semua instans ProxySQL, bukan hanya di yang aktif. Ini mengarah ke pertanyaan - bagaimana memastikan Anda menjaga konfigurasi tetap sinkron di semua node ProxySQL?

Anda dapat mencoba memperbarui semua node dengan tangan, yang jelas tidak efisien. Anda juga dapat menggunakan semacam alat orkestrasi infrastruktur seperti Ansible atau Chef untuk menjaga konfigurasi di seluruh node dalam keadaan yang diketahui, membuat modifikasi tidak langsung pada ProxySQL tetapi melalui alat yang Anda gunakan untuk mengatur lingkungan Anda.

Jika Anda menggunakan ClusterControl, ia hadir dengan serangkaian fitur yang memungkinkan Anda untuk menyinkronkan konfigurasi antara instance ProxySQL tetapi solusi ini memiliki kekurangan - ini adalah tindakan manual, Anda harus ingat untuk jalankan setelah perubahan konfigurasi. Jika Anda lupa melakukannya, Anda mungkin akan mendapat kejutan yang tidak menyenangkan jika, misalnya, keepalived akan memindahkan IP Virtual ke instance ProxySQL yang tidak diperbarui.

Tidak satu pun dari metode tersebut yang sederhana atau 100% dapat diandalkan dan situasinya adalah ketika node ProxySQL memiliki konfigurasi yang berbeda dan mungkin berpotensi berbahaya.

Untungnya, ProxySQL hadir dengan solusi untuk masalah ini - ProxySQL Cluster. Idenya cukup sederhana - Anda dapat menentukan daftar instance ProxySQL yang akan berbicara satu sama lain dan memberi tahu orang lain tentang versi konfigurasi yang masing-masing berisi. Konfigurasi diversi oleh karena itu setiap modifikasi pengaturan apa pun pada node mana pun akan menghasilkan versi konfigurasi yang ditingkatkan - ini memicu sinkronisasi konfigurasi dan versi konfigurasi yang baru didistribusikan dan diterapkan di semua node yang membentuk cluster ProxySQL.

Versi terbaru dari ClusterControl memungkinkan Anda untuk mengatur cluster ProxySQL dengan mudah. Saat men-deploy ProxySQL, Anda harus mencentang opsi “Gunakan Native Clustering” untuk semua node yang Anda inginkan untuk menjadi bagian dari cluster.

Setelah Anda melakukannya, Anda cukup selesai - sisanya terjadi di bawah kerudung.

MySQL [(none)]> select * from proxysql_servers;

+------------+------+--------+----------------+

| hostname   | port | weight | comment        |

+------------+------+--------+----------------+

| 10.0.0.131 | 6032 | 0      | proxysql_group |

| 10.0.0.132 | 6032 | 0      | proxysql_group |

+------------+------+--------+----------------+

2 rows in set (0.001 sec)

Pada kedua server tabel proxysql_servers diatur dengan benar dengan nama host dari node yang membentuk cluster. Kami juga dapat memverifikasi bahwa perubahan konfigurasi diterapkan dengan benar di seluruh cluster:

Kami telah meningkatkan pengaturan Koneksi Maks pada salah satu node ProxySQL (10.0 .0.131) dan kami dapat memverifikasi bahwa node lain (10.0.0.132) akan melihat konfigurasi yang sama:

Jika perlu men-debug proses, kita selalu dapat melihat ke log ProxySQL (biasanya terletak di /var/lib/proxysql/proxysql.log) di mana kita akan melihat informasi seperti ini:

2020-11-26 13:40:47 [INFO] Cluster: detected a new checksum for mysql_servers from peer 10.0.0.131:6032, version 11, epoch 1606398059, checksum 0x441378E48BB01C61 . Not syncing yet ...

2020-11-26 13:40:49 [INFO] Cluster: detected a peer 10.0.0.131:6032 with mysql_servers version 12, epoch 1606398060, diff_check 3. Own version: 9, epoch: 1606398022. Proceeding with remote sync

2020-11-26 13:40:50 [INFO] Cluster: detected a peer 10.0.0.131:6032 with mysql_servers version 12, epoch 1606398060, diff_check 4. Own version: 9, epoch: 1606398022. Proceeding with remote sync

2020-11-26 13:40:50 [INFO] Cluster: detected peer 10.0.0.131:6032 with mysql_servers version 12, epoch 1606398060

2020-11-26 13:40:50 [INFO] Cluster: Fetching MySQL Servers from peer 10.0.0.131:6032 started. Expected checksum 0x441378E48BB01C61

2020-11-26 13:40:50 [INFO] Cluster: Fetching MySQL Servers from peer 10.0.0.131:6032 completed

2020-11-26 13:40:50 [INFO] Cluster: Fetching checksum for MySQL Servers from peer 10.0.0.131:6032 before proceessing

2020-11-26 13:40:50 [INFO] Cluster: Fetching checksum for MySQL Servers from peer 10.0.0.131:6032 successful. Checksum: 0x441378E48BB01C61

2020-11-26 13:40:50 [INFO] Cluster: Writing mysql_servers table

2020-11-26 13:40:50 [INFO] Cluster: Writing mysql_replication_hostgroups table

2020-11-26 13:40:50 [INFO] Cluster: Loading to runtime MySQL Servers from peer 10.0.0.131:6032

Ini adalah log dari 10.0.0.132 di mana kita dapat dengan jelas melihat bahwa perubahan konfigurasi untuk tabel mysql_servers terdeteksi pada 10.0.0.131 dan kemudian disinkronkan dan diterapkan pada 10.0.0.132, membuatnya sinkron dengan node lain dalam cluster.

Seperti yang Anda lihat, mengelompokkan ProxySQL adalah cara yang mudah namun efisien untuk memastikan konfigurasinya tetap sinkron dan membantu secara signifikan untuk menggunakan penerapan ProxySQL yang lebih besar. Beri tahu kami di komentar tentang pengalaman Anda dengan pengelompokan ProxySQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbaiki "ERROR 1222 (21000):Pernyataan SELECT yang digunakan memiliki jumlah kolom yang berbeda" saat menggunakan UNION di MariaDB

  2. Bagaimana TRIM() Bekerja di MariaDB

  3. Pengguna Baru dan Manajemen LDAP di ClusterControl 1.8.2

  4. Kiat Manajemen Skema untuk MySQL &MariaDB

  5. Bagaimana CONCAT_WS() Bekerja di MariaDB