Galera

Материал из BiTel WiKi

(Различия между версиями)
Перейти к: навигация, поиск
 
(1 промежуточная версия не показана)
Строка 17: Строка 17:
bind 127.0.0.1:3306
bind 127.0.0.1:3306
default_backend database</pre>
default_backend database</pre>
 +
где 192.168.1.1 192.168.1.2 192.168.1.3 это ноды кластера.<br>
 +
Далее на каждом сервере с mysql ставим
 +
<pre>python-iniparse
 +
mysql-connector-python</pre>
 +
у меня стоит centos 7, далее пишу команды для него:
 +
<pre>yum -y install python-iniparse
 +
yum -y install ftp://mirror.switch.ch/pool/4/mirror/my ... noarch.rpm</pre>
 +
далее скачиваем mysqlchk, это скрипт напитоне который проверяет статус ноды mysql. если подробнее - проверяет переменную wsrep_local_state
 +
<pre>git clone https://github.com/Dimonyga/mysql_galera_checker.git</pre>
 +
добавляем в конфиг mysql
 +
<pre>[mysql]
 +
host = localhost
 +
user = mysql_user
 +
password = mysql_pass</pre>
 +
 +
вот собственно и всё, натравливаем на haproxy биллинг и радуемся жизни.
 +
PS: J/Connector умеет это делать и сам, но заставить адекватно его работать у нас не получилось.
 +
 +
PS: небольшой workaround - чтобы все процессы биллинга гарантированно попали на один сервер - рекомендуется на время запуска, в вэб интерфейсе haproxy ставить все ноды кроме одной в статус down. иначе если коннект уйдет на другой сервер - будет deadlock из за отставания репликации.
 +
потом естественно вернуть обратно.
 +
 +
[http://forum.bitel.ru/memberlist.php?mode=viewprofile&u=3231 Автор]

Текущая версия на 01:02, 30 марта 2015

Внимание! Данное решение/метод/статья относится к версии 5.2 и для других версий может быть неактуальна! Вам нужно самостоятельно поправить решение под свои нужды или воспользоваться помощью на форуме. Будем признательны, если внизу страницы или отдельной статьёй вы разместите исправленное решение для другой версии или подсказки что надо исправить.

1 - делаем galera кластер
2 - перекидываем базу ставим на сервере биллинга haproxy, добавляем в конфигурацию

backend database
mode tcp
option tcpka
balance source
option httpchk GET /
server db01 192.168.1.1:3306 weight 1 check port 8080 inter 1s rise 2 fall 1
server db02 192.168.1.2:3306 weight 1 check port 8080 inter 1s rise 2 fall 1
server db03 192.168.1.3:3306 weight 1 check port 8080 inter 1s rise 2 fall 1


frontend db_write
bind 127.0.0.1:3306
default_backend database

где 192.168.1.1 192.168.1.2 192.168.1.3 это ноды кластера.
Далее на каждом сервере с mysql ставим

python-iniparse 
mysql-connector-python

у меня стоит centos 7, далее пишу команды для него:

yum -y install python-iniparse 
yum -y install ftp://mirror.switch.ch/pool/4/mirror/my ... noarch.rpm

далее скачиваем mysqlchk, это скрипт напитоне который проверяет статус ноды mysql. если подробнее - проверяет переменную wsrep_local_state

git clone https://github.com/Dimonyga/mysql_galera_checker.git

добавляем в конфиг mysql

[mysql]
host = localhost
user = mysql_user
password = mysql_pass

вот собственно и всё, натравливаем на haproxy биллинг и радуемся жизни. PS: J/Connector умеет это делать и сам, но заставить адекватно его работать у нас не получилось.

PS: небольшой workaround - чтобы все процессы биллинга гарантированно попали на один сервер - рекомендуется на время запуска, в вэб интерфейсе haproxy ставить все ноды кроме одной в статус down. иначе если коннект уйдет на другой сервер - будет deadlock из за отставания репликации. потом естественно вернуть обратно.

Автор

Источник — «http://wiki.bitel.ru/index.php/Galera»
Личные инструменты