- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Доброе утро.
Есть проект, ему хотим добавить отказо-устойчивость.
1 сервер балансер.
2 файлы сайта и база.
3 файлы сайта и база.
Балансер - nginx или haproxy
База mysql мастер-мастер.
А вот чем файлы сайта синхронизировать?
1 сервер балансер.
2 файлы сайта и база.
3 файлы сайта и база.
Как была одна точка отказа так и осталась. Только теперь это сервер балансер.
ИМХО вот такая схема лучше:
0. DNS round robin+load failover (у dnsmadeeasy или dyn или ещё куча вариантов)
1. сервер балансер.
2. сервер балансер.
3. файлы сайта и база.
4. файлы сайта и база.
Как была одна точка отказа так и осталась. Только теперь это сервер балансер.
ИМХО вот такая схема лучше:
0. DNS round robin+load failover (у dnsmadeeasy или dyn или ещё куча вариантов)
1. сервер балансер.
2. сервер балансер.
3. файлы сайта и база.
4. файлы сайта и база.
Это понятно, два балансера в разных дц, днс вторичный/первичный.
Но чем лучше файлы сайта синхронизировать между серверами?
Думаю использовать для синхронизации файлов сайта lsyncd.
baas, 1 Реально облачный впс решит вашу задачу без гемороя, но придётся раскошелиться:)
Можно ceph использовать, если каналы хорошие.
Как варианты:
1) Простое, но с задержкой - csync2
2) Сложнее, но в реальном времени - кластерная FS (glusterfs,ceph и т.п.)
База мастер-мастер не надёжное решение. Теряется связь между серверами и каждый сам себе мастер. Пойдёт запись в соседний, пока на предыдущем висят запросы - и split brain.
Балансеры тоже. Либо два, либо ни одного (балансировка на уровне DNS и низким TTL и с health check. Типа Amazon route53)
split brain
Сплит брейна в мульти-мастере не бывает) сплит-брейн это когда в master/slave где всего один мастер, возникает два мастера (вернувшася нода после промоута).
База мастер-мастер не надёжное решение
С этим согласен, если речь про MySQL.
Теряется связь между серверами и каждый сам себе мастер.
Так это ж и есть суть мультимастера, чтобы каждый сам себе мастер.
Пойдёт запись в соседний, пока на предыдущем висят запросы - и split brain.
Запись в соседний сама не пойдет, если нету роутера. А в их схеме я не вижу роутера запросов. Секрет прост: писать в свою же ноду в том ДЦ, где работает приложение.
Но тут есть несколько но:
во-первых, если это синхронный мультимастер, то при падении одной ноды упадет весь кластер, это раз, скорость записи будет потеряна - это два.
во-вторых, если это асинхронный мультимастер, то при падении ноды мы все равно сможем писать, но если сделать два апдейта на разных серверах одной записи, то получим конфликт, который нужно решать ручками.
ну и с auto_increment_increment нужно заморочиться.
про синхронизацию файлов я бы на вашем месте меньше парился, чем про мультимастер.
я бы взял ceph.
Хмм, пока в раздумье как быть.
Доброе утро.
Есть проект, ему хотим добавить отказо-устойчивость.
1 сервер балансер.
2 файлы сайта и база.
3 файлы сайта и база.
Балансер - nginx или haproxy
База mysql мастер-мастер.
А вот чем файлы сайта синхронизировать?
Может не совсем правильно и профессионально, но у себя я решил аналогичную задачу просто, запускаю при старте скрипт бесконечный с rsync и он раз в секунду синхронизирует, вдруг кому пригодиться:
while (true)
do
rsync -a -e user@источник:/удаленный_каталог /локальный_каталог
sleep 1; # пауза
done;
Если речь за исходники приложения - синхронно деплоить из системы контроля версий (git или что там)
если за всякий аплоад - то можно попробовать glusterfs (только не делайте очень много файлов (5к+) на каталог
если гластер сложно - можно взять любое внешнее файлохранилище: s3, селектел-кто-угодно
Поддержу предыдущего оратора.
Если загружаются только картинки, лучше их загружать во внешнее объектное хранилище.
Большинство CMS уже так или иначе умеют это делать.
Нужно понимать количество/объем данных для синхронизации, бюджет, допустимый простой и время восстановления после сбоя.
Городить тут ceph избыточно судя по вводным данным.