Galera
Материал из BiTel WiKi
Zavndw (Обсуждение | вклад) (Новая страница: «{{Актуальность Версии|версия=5.2}} 1 - делаем galera кластер 2 - перекидываем базу ставим на серве…») |
Zavndw (Обсуждение | вклад) |
||
(3 промежуточные версии не показаны) | |||
Строка 1: | Строка 1: | ||
{{Актуальность Версии|версия=5.2}} | {{Актуальность Версии|версия=5.2}} | ||
- | 1 - делаем galera кластер | + | 1 - делаем galera кластер<br> |
2 - перекидываем базу | 2 - перекидываем базу | ||
ставим на сервере биллинга haproxy, добавляем в конфигурацию | ставим на сервере биллинга haproxy, добавляем в конфигурацию | ||
- | < | + | <pre>backend database |
mode tcp | mode tcp | ||
option tcpka | option tcpka | ||
Строка 16: | Строка 16: | ||
frontend db_write | frontend db_write | ||
bind 127.0.0.1:3306 | bind 127.0.0.1:3306 | ||
- | default_backend database</ | + | 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 из за отставания репликации. потом естественно вернуть обратно.