ProxySQL est un proxy très populaire dans les environnements MySQL. Il est livré avec un bel ensemble de fonctionnalités, notamment le fractionnement en lecture/écriture, la mise en cache des requêtes et la réécriture des requêtes. ProxySQL stocke sa configuration dans la base de données SQLite, les modifications de configuration peuvent être appliquées lors de l'exécution et sont effectuées via des commandes SQL. Cela augmente la courbe d'apprentissage et pourrait être un obstacle pour certaines personnes qui voudraient simplement l'installer et le faire fonctionner.
C'est la raison pour laquelle il existe quelques outils qui peuvent vous aider à gérer ProxySQL. Examinons l'un d'entre eux, proxysql-admin, et comparons-le aux fonctionnalités disponibles pour ProxySQL dans ClusterControl.
proxysql-admin
Proxysql-admin est un outil inclus dans ProxySQL lorsqu'il est installé à partir des référentiels Percona. Il est dédié à faciliter la configuration de Percona XtraDB Cluster dans ProxySQL. Vous pouvez définir la configuration dans le fichier de configuration (/etc/proxysql-admin.cnf) ou via des arguments à la commande proxysql-admin. Il est possible de :
- Configurer les groupes d'hôtes (lecteur, écrivain, écrivain de sauvegarde, hors ligne) pour PXC
- Créer un utilisateur de surveillance dans ProxySQL et PXC
- Créer un utilisateur d'application dans ProxySQL et PXC
- Configurer ProxySQL (maximum de connexions en cours d'exécution, maximum de transactions en retard)
- Synchroniser les utilisateurs entre PXC et ProxySQL
- Synchroniser les nœuds entre PXC et ProxySQL
- Créer des règles de requête prédéfinies (répartition R/W) pour les utilisateurs importés de PXC
- Configurer SSL pour les connexions de ProxySQL aux bases de données principales
- Définissez un seul écrivain ou un accès circulaire au PXC
Comme vous pouvez le voir, ce n'est en aucun cas un outil complexe, il se concentre sur la configuration initiale. Jetons un coup d'œil à quelques exemples.
[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
Ci-dessus montre la configuration initiale. Comme vous pouvez le voir, un mode singlewriter (par défaut) a été utilisé, les utilisateurs de surveillance et d'application ont été configurés et toute la configuration du serveur a été préparée.
[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 |
+---------------+-------+------------+------+--------+--------+----------+---------+-----------+
Voici la sortie de la configuration par défaut des nœuds PXC dans ProxySQL.
ClusterControl
ClusterControl est, par rapport à proxysql-admin, une solution beaucoup plus complexe. Il peut déployer un équilibreur de charge ProxySQL et le préconfigurer en fonction des besoins de l'utilisateur.
Lors du déploiement, vous pouvez définir l'utilisateur et le mot de passe administrateur, l'utilisateur de surveillance et vous pouvez importez également l'un des utilisateurs MySQL existants (ou créez-en un nouveau si c'est ce dont vous avez besoin) pour que l'application l'utilise. Il est également possible d'importer la configuration ProxySQL à partir d'autres ProxySQL que vous avez déjà dans le cluster. Cela rend le déploiement plus rapide et plus efficace.
Il est également important de mentionner que ClusterControl peut déployer ProxySQL dans les clusters MySQL et Galera. Il peut être utilisé avec les versions MySQL, Percona et MariaDB de MySQL.
Une fois déployé, ClusterControl vous offre des options pour gérer entièrement ProxySQL via une interface graphique facile à utiliser.
Vous pouvez surveiller votre instance ProxySQL.
Vous pouvez vérifier les requêtes plus lourdes exécutées via ProxySQL. Il est également possible de créer une règle de requête basée sur la requête exacte.
ClusterControl configure ProxySQL pour un fractionnement en lecture/écriture. Il est également possible d'ajouter des règles de requête personnalisées en fonction de vos besoins et de la configuration de l'application.
Comparé à proxysql-admin, ClusterControl vous donne un contrôle total sur la configuration du serveur . Vous pouvez ajouter de nouveaux serveurs, vous pouvez les déplacer dans les groupes d'hôtes comme vous le souhaitez. Vous pouvez créer de nouveaux groupes d'hôtes (puis, par exemple, créer de nouvelles règles de requête pour eux).
Il est également possible de gérer les utilisateurs dans ProxySQL. Vous pouvez modifier les utilisateurs existants, importer de nouveaux utilisateurs qui existent dans la base de données principale.
L'importation en masse est également possible. Vous pouvez également créer de nouveaux utilisateurs sur les bases de données ProxySQL et backend.
ClusterControl peut également être utilisé pour reconfigurer ProxySQL. Vous pouvez modifier toutes les variables via une interface utilisateur simple avec option de recherche.
Comme vous pouvez le constater, ClusterControl est livré avec des fonctionnalités de gestion approfondies pour ProxySQL. Il vous permet de déployer et de gérer facilement des instances ProxySQL.