ProxySQL è un proxy molto popolare negli ambienti MySQL. Viene fornito con un bel set di funzionalità tra cui la suddivisione in lettura/scrittura, la memorizzazione nella cache delle query e la riscrittura delle query. ProxySQL memorizza la sua configurazione nel database SQLite, le modifiche alla configurazione possono essere applicate in runtime e vengono eseguite tramite comandi SQL. Ciò aumenta la curva di apprendimento e potrebbe essere un blocco per alcune persone che vorrebbero semplicemente installarlo e farlo funzionare.
Questo è il motivo per cui esistono un paio di strumenti che possono aiutarti a gestire ProxySQL. Diamo un'occhiata a uno di questi, proxysql-admin, e confrontiamolo con le funzionalità disponibili per ProxySQL in ClusterControl.
proxysql-admin
Proxysql-admin è uno strumento incluso in ProxySQL quando installato dai repository Percona. È dedicato a semplificare l'installazione di Percona XtraDB Cluster in ProxySQL. È possibile definire l'installazione nel file di configurazione (/etc/proxysql-admin.cnf) o tramite argomenti al comando proxysql-admin. È possibile:
- Configura i gruppi host (lettore, scrittore, scrittore di backup, offline) per PXC
- Crea utente di monitoraggio in ProxySQL e PXC
- Crea utente dell'applicazione in ProxySQL e PXC
- Configura ProxySQL (massimo connessioni in esecuzione, massimo transazioni dietro)
- Sincronizza gli utenti tra PXC e ProxySQL
- Sincronizza i nodi tra PXC e ProxySQL
- Crea regole di query predefinite (divisione R/W) per gli utenti importati da PXC
- Configura SSL per le connessioni da ProxySQL ai database back-end
- Definisci un singolo scrittore o accesso round robin al PXC
Come puoi vedere, questo non è affatto uno strumento complesso, si concentra sulla configurazione iniziale. Diamo un'occhiata a un paio di esempi.
[email protected]:~# proxysql-admin --enable
This script will assist with configuring ProxySQL for use with
Percona XtraDB Cluster (currently only PXC in combination
with ProxySQL is supported)
ProxySQL read/write configuration mode is singlewrite
Configuring the ProxySQL monitoring user.
ProxySQL monitor user name as per command line/config-file is proxysql-monitor
The monitoring user is already present in Percona XtraDB Cluster.
Would you like to enter a new password [y/n] ? n
Monitoring user 'proxysql-monitor'@'10.%' has been setup in the ProxySQL database.
Configuring the Percona XtraDB Cluster application user to connect through ProxySQL
Percona XtraDB Cluster application user name as per command line/config-file is proxysql_user
Application user 'proxysql_user'@'10.%' already present in PXC.
Adding the Percona XtraDB Cluster server nodes to ProxySQL
Write node info
+------------+--------------+------+--------+
| hostname | hostgroup_id | port | weight |
+------------+--------------+------+--------+
| 10.0.0.152 | 10 | 3306 | 1000 |
+------------+--------------+------+--------+
ProxySQL configuration completed!
ProxySQL has been successfully configured to use with Percona XtraDB Cluster
You can use the following login credentials to connect your application through ProxySQL
mysql --user=proxysql_user -p --host=localhost --port=6033 --protocol=tcp
Sopra mostra la configurazione iniziale. Come puoi vedere, è stata utilizzata una modalità singlewriter (predefinita), sono stati configurati il monitoraggio e gli utenti dell'applicazione ed è stata preparata l'intera configurazione del server.
[email protected]:~# proxysql-admin --status
mysql_galera_hostgroups row for writer-hostgroup: 10
+--------+--------+---------------+---------+--------+-------------+-----------------------+------------------+
| writer | reader | backup-writer | offline | active | max_writers | writer_is_also_reader | max_trans_behind |
+--------+--------+---------------+---------+--------+-------------+-----------------------+------------------+
| 10 | 11 | 12 | 13 | 1 | 1 | 2 | 100 |
+--------+--------+---------------+---------+--------+-------------+-----------------------+------------------+
mysql_servers rows for this configuration
+---------------+-------+------------+------+--------+--------+----------+---------+-----------+
| hostgroup | hg_id | hostname | port | status | weight | max_conn | use_ssl | gtid_port |
+---------------+-------+------------+------+--------+--------+----------+---------+-----------+
| writer | 10 | 10.0.0.153 | 3306 | ONLINE | 1000 | 1000 | 0 | 0 |
| reader | 11 | 10.0.0.151 | 3306 | ONLINE | 1000 | 1000 | 0 | 0 |
| reader | 11 | 10.0.0.152 | 3306 | ONLINE | 1000 | 1000 | 0 | 0 |
| backup-writer | 12 | 10.0.0.151 | 3306 | ONLINE | 1000 | 1000 | 0 | 0 |
| backup-writer | 12 | 10.0.0.152 | 3306 | ONLINE | 1000 | 1000 | 0 | 0 |
+---------------+-------+------------+------+--------+--------+----------+---------+-----------+
Ecco l'output della configurazione predefinita dei nodi PXC in ProxySQL.
Controllo cluster
ClusterControl è, rispetto a proxysql-admin, una soluzione molto più complessa. Può distribuire un servizio di bilanciamento del carico ProxySQL e preconfigurarlo in base ai requisiti dell'utente.
Durante la distribuzione è possibile definire l'utente e la password dell'amministratore, monitorare l'utente e importa anche uno degli utenti MySQL esistenti (o creane uno nuovo se questo è ciò di cui hai bisogno) per l'applicazione da utilizzare. È anche possibile importare la configurazione di ProxySQL da altri ProxySQL già presenti nel cluster. Rende la distribuzione più rapida ed efficiente.
Un'altra cosa importante da ricordare è che ClusterControl può distribuire ProxySQL in entrambi i cluster MySQL e Galera. Può essere utilizzato con le versioni MySQL, Percona e MariaDB di MySQL.
Una volta distribuito, ClusterControl offre opzioni per gestire completamente ProxySQL tramite una GUI facile da usare.
Puoi monitorare la tua istanza ProxySQL.
Puoi controllare le query più pesanti eseguite tramite ProxySQL. È anche possibile creare una regola di query basata sulla query esatta.
ClusterControl configura ProxySQL per una divisione in lettura/scrittura. È anche possibile aggiungere regole di query personalizzate in base ai requisiti e alla configurazione dell'applicazione.
Rispetto a proxysql-admin, ClusterControl offre il controllo completo sulla configurazione del server . Puoi aggiungere nuovi server, puoi spostarli nei gruppi host come desideri. Puoi creare nuovi gruppi host (e quindi, ad esempio, creare nuove regole di query per loro).
È anche possibile gestire gli utenti in ProxySQL. Puoi modificare gli utenti esistenti, importare nuovi utenti che esistono nel database di back-end.
È anche possibile eseguire l'importazione in blocco. Puoi anche creare nuovi utenti sia su ProxySQL che su database back-end.
ClusterControl può essere utilizzato anche per riconfigurare ProxySQL. Puoi modificare tutte le variabili tramite una semplice interfaccia utente con opzione di ricerca.
Come puoi vedere, ClusterControl include funzionalità di gestione approfondite per ProxySQL. Ti consente di distribuire e gestire facilmente le istanze ProxySQL.