Балансировка mysql

от автора

Это краткая заметка как настроить отказоустойчевый кластер с балансировкой нагрузки из 2-х mysql серверов. Исходные данные 2 свежеустановленных mysql сервера. Необходимо настроить работу таким образом, что бы в нормальной ситуации запросы балансируются между mysql серверами, в случае выхода из строя одного из mysql серверов все запросы идут ко второму.

Для начала необходимо настроить репликацию mysql типа master-master. Как это сделать, уверен найти не проблема. Так что опустим этот шаг. Что бы настроить балансировку, устанавливаем пакет haproxy, socat(Для просмотра статусов базы данных).

На одном из серверов, выполняем запрос, который создаст пользователя для просмотра статуса БД:

INSERT INTO mysql.user (Host,User) values ('haproxy_ip','haproxy'); FLUSH PRIVILEGES;

Теперь конфигурируем HAproxy, собственно сам конфиг, а потом немного комментариев:
lobal log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/stats mode 777 level admin listen mysql bind 0.0.0.0:3306 timeout connect 10s timeout client 1m timeout server 1m mode tcp option mysql-check user haproxy server server_db1 <FQDN сервера>:3306 weight 1 check inter 1s rise 3 fall 1 server server)db2 <FQDN сервера>:3306 weight 1 check inter 1s rise 3 fall 1

option mysql-check user haproxy — задает под каким пользователя подключаться к mysql для проверки.
server server_db1 <FQDN сервера>:3306 weight 1 check inter 1s rise 3 fall 1 — задается отображаемое имя сервера, адрес сервера, количество проверок до перехода в состояние недоступности и сколько проверок до перехода в состояние доступен.

Ну и на последок, для проверки состояния серверов из командной строки можно использовать команду:
echo "show stat" | socat stdio /var/lib/haproxy/stats | cut -d, -f1,2,18,20,21

Автор: системный администратор компании Magvai69

ссылка на оригинал статьи http://habrahabr.ru/post/265593/


Комментарии

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

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