Доброго времени суток.
У меня имеется сервер NGINX который выдает пользователям статику. До этого времени делал бекапы на внешний hdd, но теперь решил совместить полезное с приятным.
Подскажите, в каком направлении двигаться, а то боюсь нагородить чего-то избыточно сложного. Необходимо два сервера, оба имеют одинаковое файловое содержимое. Записываются новые данные на один сервер, второй их обновляет у себя сам. Что-то по аналогии с репликациями мускула.
Как устроить взаимодействие внутри такого кластера?
Дублирующий сервер статики
Модераторы: SLEDopit, Модераторы разделов
-
SLEDopit
- Модератор
- Сообщения: 4824
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Дублирующий сервер статики
Если интересует live зеркалирование, то посмотрите на lsync (соответствующий пакет наверняка есть в репозитории вашего дистрибутива).
И да, зеркало и бэкап - это разные вещи. Наличие зеркала не отменяет необходимость бэкапа. Вдруг разработчик случайно удалит всё файлы?
И да, зеркало и бэкап - это разные вещи. Наличие зеркала не отменяет необходимость бэкапа. Вдруг разработчик случайно удалит всё файлы?
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
-
yegor
- Сообщения: 13
Re: Дублирующий сервер статики
SLEDopit писал(а): ↑27.03.2012 15:34Если интересует live зеркалирование, то посмотрите на lsync (соответствующий пакет наверняка есть в репозитории вашего дистрибутива).
И да, зеркало и бэкап - это разные вещи. Наличие зеркала не отменяет необходимость бэкапа. Вдруг разработчик случайно удалит всё файлы?
точно! ведь на мастере могут все удалить и то же самое произойдет на слейве!
Spoiler
а можно ли сделать задержку на удаление неделю?
чтоб за это время можно было местами мастер/слейв поменять?
глупость сказал ))
спасибо!
-
SLEDopit
- Модератор
- Сообщения: 4824
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Дублирующий сервер статики
Задержка на удаление не решает всех проблем. Если на сервер проберётся злоумышленник и испоганит часть файлов (не удалит, а именно испортит), то что делать? Тогда схема только с задержкой удаления не сработает. Кто-то должен запоминать все изменения за неделю и только потом перекидывать их на зеркальный сервер?
Ну и в конце концов, если вам понадобится вон тот файл, в который два месяца назад добавили ошибку, то какую задержку ставить? (:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
yegor
- Сообщения: 13
Re: Дублирующий сервер статики
SLEDopit писал(а): ↑27.03.2012 15:49Задержка на удаление не решает всех проблем. Если на сервер проберётся злоумышленник и испоганит часть файлов (не удалит, а именно испортит), то что делать? Тогда схема только с задержкой удаления не сработает. Кто-то должен запоминать все изменения за неделю и только потом перекидывать их на зеркальный сервер?
Ну и в конце концов, если вам понадобится вон тот файл, в который два месяца назад добавили ошибку, то какую задержку ставить? (:
да да, уже понял что немного не то.
спасибо за ответ!
-
Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: Дублирующий сервер статики
А вопрос, меж тем, не такой тривиальный в общем случае, насколько я понимаю. Предположим, для бэкапов у нас отдельный сервер, и там отдельная заморочка. А вот есть у нас зеркало, и надо распределить нагрузку. Как это лучше сделать? Несколько A-записей в dns-е, указывающих на разные зеркала? nginx настроить, чтобы 302-м ответом перенаправлял, или ещё как-то замысловато nginx настроить? Или какой-то отдельный софт для балансировки искать?
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
Vladislav
- Сообщения: 383
- ОС: Debian Sid
Re: Дублирующий сервер статики
Portnov писал(а): ↑28.03.2012 09:19А вопрос, меж тем, не такой тривиальный в общем случае, насколько я понимаю. Предположим, для бэкапов у нас отдельный сервер, и там отдельная заморочка. А вот есть у нас зеркало, и надо распределить нагрузку. Как это лучше сделать? Несколько A-записей в dns-е, указывающих на разные зеркала? nginx настроить, чтобы 302-м ответом перенаправлял, или ещё как-то замысловато nginx настроить? Или какой-то отдельный софт для балансировки искать?
http://wiki.nginx.org/LoadBalanceExample
Спасибо сказали:
-
Kreept
- Сообщения: 107
- ОС: Linux
Re: Дублирующий сервер статики
Portnov писал(а): ↑28.03.2012 09:19А вопрос, меж тем, не такой тривиальный в общем случае, насколько я понимаю. Предположим, для бэкапов у нас отдельный сервер, и там отдельная заморочка. А вот есть у нас зеркало, и надо распределить нагрузку. Как это лучше сделать? Несколько A-записей в dns-е, указывающих на разные зеркала? nginx настроить, чтобы 302-м ответом перенаправлял, или ещё как-то замысловато nginx настроить? Или какой-то отдельный софт для балансировки искать?
Не плохая статья на эту тему недавно проскакивала на Хабре http://habrahabr.ru/post/140068/, данный подход интересен тем что в случаи рассинхронизации серверов клиент получит нужный статический файл.
-
KiWi
- Бывший модератор
- Сообщения: 2521
- Статус: статус, статус, статус
Re: Дублирующий сервер статики
Portnov писал(а): ↑28.03.2012 09:19А вопрос, меж тем, не такой тривиальный в общем случае, насколько я понимаю. Предположим, для бэкапов у нас отдельный сервер, и там отдельная заморочка. А вот есть у нас зеркало, и надо распределить нагрузку. Как это лучше сделать? Несколько A-записей в dns-е, указывающих на разные зеркала? nginx настроить, чтобы 302-м ответом перенаправлял, или ещё как-то замысловато nginx настроить? Или какой-то отдельный софт для балансировки искать?
По нескольким A-запись тот же Firefox под Linux вполне спокойно ходит(если одна недоступна, то пробует идти на вторую), в других браузерах/ОС, скорее всего, аналогично. Желательно, чтобы отлуп о недоступности быстро выдавался. Если не брать IPv6, то приблизительно пополам нагрузка поделится(в IPv6 round-robin DNS не работает -- там есть чёткие правила на какую из записей идти).
Если развивать эту схему -- можно прописать несколько разных записей и в приложении, предварительно проверив, что хост доступен, выдавать пользователям разные адреса. Правда, над кешированием стоит подумать(может кешироваться несколько раз).
Если возникла проблема в балансеровке нагрузки на статику(первоначальный вопрос), то упирается, скорее всего, в сеть, а поэтому проксировать -- плохая идея -- канал свободнее не станет.
Если ложится не из-за канала, то, конечно, можно посмотреть на проксирование в несколько upstreamов в nginxе/haproxy/ipvs. И, если нужно, делать какой-либо fault tolerance -- поднимать IP-адрес на соседней машине, анонсировать в OSPF с нескольких машин, но с разными весами -- тут уже зависит от возможностей.
-
KiWi
- Бывший модератор
- Сообщения: 2521
- Статус: статус, статус, статус
Re: Дублирующий сервер статики
Kreept писал(а): ↑29.03.2012 13:16Portnov писал(а): ↑28.03.2012 09:19А вопрос, меж тем, не такой тривиальный в общем случае, насколько я понимаю. Предположим, для бэкапов у нас отдельный сервер, и там отдельная заморочка. А вот есть у нас зеркало, и надо распределить нагрузку. Как это лучше сделать? Несколько A-записей в dns-е, указывающих на разные зеркала? nginx настроить, чтобы 302-м ответом перенаправлял, или ещё как-то замысловато nginx настроить? Или какой-то отдельный софт для балансировки искать?
Не плохая статья на эту тему недавно проскакивала на Хабре http://habrahabr.ru/post/140068/, данный подход интересен тем что в случаи рассинхронизации серверов клиент получит нужный статический файл.
Как и многие статьи с хабра -- я тут чуток ман прочитал и пересказываю, но сделать нормально не хочу(это, в частности, про 503 ошибку -- есть чуть-чуть подумать, то есть лёгкий способ этого избежать). И таймауты дикие. И бессмысленное отключение логов. И ещё один сервер под обработку php на 127.0.0.1 как-то не особо логичен.