Всем привет! Давно не был, много проблем было да и работы. Друзья, подскажите.
Организовано два отдельных веб сервера, на каждом поднять MySQL. Настроена master - master репликация. Все на Debian Weezy. Два независимых ЦОДа, рядом (пинг 2-3 мс), не критично. На уровне Nginx настроено обращение к соответствующему бекэнду, если один не доступен, отправляем на другой (nginx upstream), в front контроллере приложения выполняется запрос к СУБД на проверку основных параметров реплики (Slave_IO_Running, Slave_SQL_Running, Seconds_Behind_Master, Last_Errno, Last_SQL_Errno, Last_IO_Errno) на корректность, и в случае, если реплика задерживается или имеется ошибки отправляем на второй (через контроль 5xx ошибок).
Все ок, работает. Вопрос только с сессиями? Как их лучше хранить? В СУБД или что-то вроде редис (но как я понимю, он сейчас не поддерживает master-master реплику).
Вообще, первый сервер получает в основном публичные коннекты, а вот второй сервер получает обращения сотрудников компании, последние имеют приоритет.
Почему это сделано? Если веб сервер не будет обрабатывать запросы более 10 минут, мне капец. Поэтому в зоне TTL ли миниальные, и в случае выхода одного сервера все запросы отдам другому, да и в плане подключить третью реплику для RO юзеров, которые на RO сильно грузят сервера запросами на бух отчеты по разным критериям.
Организовано два отдельных веб сервера, на каждом поднять MySQL. Настроена master - master репликация. Все на Debian Weezy. Два независимых ЦОДа, рядом (пинг 2-3 мс), не критично. На уровне Nginx настроено обращение к соответствующему бекэнду, если один не доступен, отправляем на другой (nginx upstream), в front контроллере приложения выполняется запрос к СУБД на проверку основных параметров реплики (Slave_IO_Running, Slave_SQL_Running, Seconds_Behind_Master, Last_Errno, Last_SQL_Errno, Last_IO_Errno) на корректность, и в случае, если реплика задерживается или имеется ошибки отправляем на второй (через контроль 5xx ошибок).
Все ок, работает. Вопрос только с сессиями? Как их лучше хранить? В СУБД или что-то вроде редис (но как я понимю, он сейчас не поддерживает master-master реплику).
Вообще, первый сервер получает в основном публичные коннекты, а вот второй сервер получает обращения сотрудников компании, последние имеют приоритет.
Почему это сделано? Если веб сервер не будет обрабатывать запросы более 10 минут, мне капец. Поэтому в зоне TTL ли миниальные, и в случае выхода одного сервера все запросы отдам другому, да и в плане подключить третью реплику для RO юзеров, которые на RO сильно грузят сервера запросами на бух отчеты по разным критериям.