Сейчас рассматриваем варианты перевода php в докер сварм. Тут вроде понятно, закидываем пробирки по сервакам и все. Далее докер уже сам разберется кого дернуть.
Но вот засада выступает с мемкэшем. В данный момент поднятно 2 сервера с ним и данные пишутся то на один то на другой, стандартная схема. Один большой косяк в этом если один из серверов падает, вся система ложиться пока не поправить конфиги приложения и не удалить нерабочий мемкэш.
В данный момент напрашивается одно решение, костыль не костыль даже сложно оценить :). На стороннем сервере я опрашиваю мемкэши и если какой то не отвечает правлю конфиги приложения удаляя не рабочий сервис.
А вот тут задача усложняется, думаем это дело еще и в кластер с докерами перевести, и тут уже если будет 2 и более мемкэшей кроме как дублировать в них данные ничего на ум не приходит. Дублировать плохо, нагрузка на базу выше и данные могут различаться...
Редис тоже не идеальное решение, там какой то замудренный кластер, проще не связываться для такой простой задачи...
Dmitry Bay, да дороговато, если бы за бугром, а у нас цены ломят большие. Файлы в облаке и так. У нас уже 4 сервера куплены и работают который год. Щас все накручено на proxmox но там просто без денег не обновишь систему да и вообщем то с деньгами не факт, что обновится корректно. Ставить тоже пришлось повозится, ибо не новый, вообщем год два там уже эту версию и не накрутишь. Вообщем поэтому другую схему рассматриваем.
С кластером докера что привлекает, что можно равномерно нагрузку распределить. Мускуль понятно, его либо в докере либо без него поднимем и привяжем к конкретной ноде. Ну и если сервак рухнет все остальные сервера вступят на подмогу автоматом, а тут если рухнет что, придется с этими виртуозками возится, мигрировать, nginx перенастраивать ...
Вот тока интересно еще если у меня мускул стоит без докера на одной из над, нормально ли сварм нагрузку рассчитает что бы бдшку не повалить :)
kiranananda, так нормальный Memcached-клиенты умеют отказы из-коробки ж отрабатывать. Готовите consistent hashing и всё будет работать пока не откажет последний Memcached. И даже когда всё отвалится, то на уровне кода можно предусмотреть нормальную работу, ведь это всего лишь кэш.
Tyranron, По умолчанию в yii используется я так понимаю php либа. Есть ли смысл менять на что то другое? И по скорости как оно будет? я просто с yii не силен, решаю задачу со стороны админства... Переписывать там огромный проект врятли программеры захотят :)
kiranananda, увы, я не в курсе что там у Yii. Поинтересуйтесь у Ваших разработчиков, обсудите с ними этот момент. Переписывать весь проект при этом не надо. В большинстве PHP либ это настраивается на уровне конфига/инициализации кеша.
Писать костыли с подобными динамическими апдейтами конфига со стороны Ops, вместо того, чтобы привести в порядок сам код со стороны Dev - это попытка забивать гвозди, извините, дилдаком. У Вас потом столько гемора будет, начиная с того, что решение не будет работать бесшовно, и пока конфиг одуплится - часть запросов уже будет поломана, и заканчивая невозможностью выкрутить opcache на максимальные настройки кеширования (если конфиг в PHP файлах, к примеру). Задачу лучше решать на том уровне, где она должна быть нормально решена.
Вроде появилось решение внезапно :)...
Если в докере я поднимаю 2 мемкэша с разными именами. И цепляюсь к ним из приложения по именам. В таком случае при падении одной из нод на которых есть мемкэш, он просто мигрирует на другую вообщем то и все. Просто честно говоря я не крутил этого всего, пока в теории. Но вроде должно пройти... :)
Ну походу да :). Только вот висит при падении мемкэша да и в инете люди на это жалуются, есть шанс что идея выше сработает хорошо, надо собрать тестовый стенд поглядеть...