Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Оцените статью

В рамках создания собственного кластера Kubernetes я поднаял кластер Mysql который работает в режиме Master-Slave и Slave-узлы соответственно работают в режиме read-only, а мастер в read-write. Соответственно мне нужен балансировщик b cейчас я его и настрою.

Обновим систему

# apt update
# apt upgrade -y

Установка ProxySQL

Добавляем репозитарий и устанавливаем пакет.

# curl -fsSL https://repo.proxysql.com/ProxySQL/repo_pub_key | sudo gpg --dearmor -o /usr/share/keyrings/proxysql-archive-keyring.gpg
# echo "deb [signed-by=/usr/share/keyrings/proxysql-archive-keyring.gpg] https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/$(lsb_release -sc)/ ./" | sudo tee /etc/apt/sources.list.d/proxysql.list
# apt-get update
# apt-get install proxysql

Проверка установки

Убедитесь, что ProxySQL установлен и работает:

# systemctl status proxysql

Если сервис не запущен, запустите его:

# systemctl start proxysql
# systemctl enable proxysql

Подключение к интерфейсу администрирования ProxySQL

ProxySQL имеет два интерфейса:

  • Admin interface (по умолчанию порт 6032) — для настройки;
  • MySQL interface (по умолчанию порт 6033) — для клиентских подключений.

Подключитесь к интерфейсу администрирования:

# mysql -u admin -p -h 127.0.0.1 -P 6032

Пароль по умолчанию — admin.

Настройка backend-серверов MySQL

Внутри интерфейса администрирования добавьте серверы MySQL, к которым будет проксировать запросы.

  1. Посмотрите текущие серверы:
SELECT * FROM mysql_servers;
  1. Добавьте ваш MySQL-сервер:
INSERT INTO mysql_servers (hostgroup_id, hostname, port, max_connections) VALUES (1, '127.0.0.1', 3306, 1000);
  1. Примените изменения:
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;

Настройка пользователей и прав

  1. Добавьте пользователя, который будет использоваться для подключения к MySQL через ProxySQL:
INSERT INTO mysql_users (username, password, default_hostgroup, active)
VALUES ('proxy_user', 'proxy_password', 1, 1);
  1. Смените пароль пользователя admin запросом UPDATE global_variables SET variable_value='admin:NewStrongPassword' WHERE variable_name='admin-admin_credentials';
  2. Примените изменения:
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;
LOAD ADMIN VARIABLES TO RUNTIME;
SAVE ADMIN VARIABLES TO DISK;

Настройка маршрутизации запросов (опционально)

ProxySQL позволяет маршрутизировать запросы на разные серверы в зависимости от правил.

  1. Добавьте правила маршрутизации:
INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup, apply)
VALUES (1, 1, '^SELECT.*FOR UPDATE$', 1, 1);
  1. Примените изменения:
LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;

Настройка MySQL-сервера для работы с ProxySQL

  1. Подключитесь к MySQL естественно на мастере:
# mysql -u root -p
  1. Создайте пользователя для ProxySQL (если ещё не создан):
CREATE USER 'proxy_user'@'%' IDENTIFIED BY 'proxy_password';
GRANT ALL PRIVILEGES ON *.* TO 'proxy_user'@'%';
FLUSH PRIVILEGES;
EXIT;

Важно: ограничьте права пользователя в соответствии с требованиями безопасности.

Тестирование подключения через ProxySQL

  1. Попробуйте подключиться через ProxySQL:
# mysql -u proxy_user -p -h 127.0.0.1 -P 6033
  1. Выполните тестовый запрос:
SELECT VERSION();

Мониторинг и анализ работы ProxySQL

  1. Проверьте статус серверов:
SELECT * FROM runtime.mysql_servers;
  1. Посмотрите статистику запросов:
SELECT * FROM stats.mysql_query_digest;
  1. Проверьте активные сессии:
SELECT * FROM stats.mysql_connections;

Настройка firewall (если используется)

Если используется firewall, разрешите подключения к портам ProxySQL:

# ufw allow 6032/tcp
# ufw allow 6033/tcp
# ufw reload

Настройка дополнительных параметров (опционально)

  1. Изменение портов по умолчанию. Отредактируйте конфигурационный файл /etc/proxysql.cnf, чтобы изменить порты или другие параметры.
  2. Настройка балансировки нагрузки. Распределите нагрузку между несколькими серверами, добавив их в одну hostgroup:
INSERT INTO mysql_servers (hostgroup_id, hostname, port, max_connections)
VALUES (1, '192.168.1.10', 3306, 1000),
       (1, '192.168.1.11', 3306, 1000);
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
  1. Настройка мониторинга и автоматического переключения. ProxySQL поддерживает мониторинг состояния серверов и автоматическое переключение при отказе.

Настройка резервного копирования конфигурации

Регулярно сохраняйте конфигурацию ProxySQL:

sudo cp /etc/proxysql.cnf /backup/proxysql.cnf.backup
sudo cp /var/lib/proxysql/proxysql.db /backup/proxysql.db.backup

Важные замечания

  1. Безопасность: не используйте учётную запись root для подключения через ProxySQL. Создайте отдельного пользователя с ограниченными правами.
  2. Производительность: ProxySQL оптимизирован для высокой производительности, но следите за нагрузкой на сервер.
  3. Обновления: регулярно проверяйте наличие обновлений ProxySQL.
  4. Резервное копирование: перед изменениями делайте резервные копии конфигурационных файлов и базы данных ProxySQL.
  5. Мониторинг: используйте встроенные инструменты мониторинга ProxySQL для отслеживания состояния системы.

Полезные команды для администрирования

  • Просмотр текущих настроек:
  SELECT * FROM runtime.*;
  • Применение изменений из конфигурации в runtime:
  LOAD * TO RUNTIME;
  • Сохранение изменений в диск:
  SAVE * TO DISK;

Похожие записи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

В этой статье мы рассмотрим пошаговую настройку кластера Kubernetes на Ubuntu 24.04 с тремя узлами: один мастер (который также может запускать пользовательские поды) и два рабочих узла. Мы настроим PersistentVolume…

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Введение UFW (Uncomplicated Firewall) — это удобная надстройка над стандартным iptables, предназначенная для упрощения управления сетевыми правилами в операционных системах семейства Linux, особенно в Ubuntu. Благодаря интуитивно понятному синтаксису UFW…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования