Дублирующий сервер статики

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

yegor
Сообщения: 13

Дублирующий сервер статики

Сообщение yegor »

Доброго времени суток.
У меня имеется сервер NGINX который выдает пользователям статику. До этого времени делал бекапы на внешний hdd, но теперь решил совместить полезное с приятным.
Подскажите, в каком направлении двигаться, а то боюсь нагородить чего-то избыточно сложного. Необходимо два сервера, оба имеют одинаковое файловое содержимое. Записываются новые данные на один сервер, второй их обновляет у себя сам. Что-то по аналогии с репликациями мускула.
Как устроить взаимодействие внутри такого кластера?
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Дублирующий сервер статики

Сообщение SLEDopit »

Если интересует 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.
Спасибо сказали:
yegor
Сообщения: 13

Re: Дублирующий сервер статики

Сообщение yegor »

SLEDopit писал(а):
27.03.2012 15:34
Если интересует live зеркалирование, то посмотрите на lsync (соответствующий пакет наверняка есть в репозитории вашего дистрибутива).
И да, зеркало и бэкап - это разные вещи. Наличие зеркала не отменяет необходимость бэкапа. Вдруг разработчик случайно удалит всё файлы?

точно! ведь на мастере могут все удалить и то же самое произойдет на слейве!
Spoiler
а можно ли сделать задержку на удаление неделю? :) чтоб за это время можно было местами мастер/слейв поменять?

глупость сказал ))

спасибо!
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Дублирующий сервер статики

Сообщение SLEDopit »

yegor писал(а):
27.03.2012 15:42
а можно ли сделать задержку на удаление неделю?
Задержка на удаление не решает всех проблем. Если на сервер проберётся злоумышленник и испоганит часть файлов (не удалит, а именно испортит), то что делать? Тогда схема только с задержкой удаления не сработает. Кто-то должен запоминать все изменения за неделю и только потом перекидывать их на зеркальный сервер?
Ну и в конце концов, если вам понадобится вон тот файл, в который два месяца назад добавили ошибку, то какую задержку ставить? (:
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.
Спасибо сказали:
yegor
Сообщения: 13

Re: Дублирующий сервер статики

Сообщение yegor »

SLEDopit писал(а):
27.03.2012 15:49
yegor писал(а):
27.03.2012 15:42
а можно ли сделать задержку на удаление неделю?
Задержка на удаление не решает всех проблем. Если на сервер проберётся злоумышленник и испоганит часть файлов (не удалит, а именно испортит), то что делать? Тогда схема только с задержкой удаления не сработает. Кто-то должен запоминать все изменения за неделю и только потом перекидывать их на зеркальный сервер?
Ну и в конце концов, если вам понадобится вон тот файл, в который два месяца назад добавили ошибку, то какую задержку ставить? (:


да да, уже понял что немного не то.
спасибо за ответ!
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Дублирующий сервер статики

Сообщение Portnov »

А вопрос, меж тем, не такой тривиальный в общем случае, насколько я понимаю. Предположим, для бэкапов у нас отдельный сервер, и там отдельная заморочка. А вот есть у нас зеркало, и надо распределить нагрузку. Как это лучше сделать? Несколько A-записей в dns-е, указывающих на разные зеркала? nginx настроить, чтобы 302-м ответом перенаправлял, или ещё как-то замысловато nginx настроить? Или какой-то отдельный софт для балансировки искать?
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
Vladislav
Сообщения: 383
ОС: Debian Sid

Re: Дублирующий сервер статики

Сообщение Vladislav »

Portnov писал(а):
28.03.2012 09:19
А вопрос, меж тем, не такой тривиальный в общем случае, насколько я понимаю. Предположим, для бэкапов у нас отдельный сервер, и там отдельная заморочка. А вот есть у нас зеркало, и надо распределить нагрузку. Как это лучше сделать? Несколько A-записей в dns-е, указывающих на разные зеркала? nginx настроить, чтобы 302-м ответом перенаправлял, или ещё как-то замысловато nginx настроить? Или какой-то отдельный софт для балансировки искать?

http://wiki.nginx.org/LoadBalanceExample
Спасибо сказали:
Kreept
Сообщения: 107
ОС: Linux

Re: Дублирующий сервер статики

Сообщение Kreept »

Portnov писал(а):
28.03.2012 09:19
А вопрос, меж тем, не такой тривиальный в общем случае, насколько я понимаю. Предположим, для бэкапов у нас отдельный сервер, и там отдельная заморочка. А вот есть у нас зеркало, и надо распределить нагрузку. Как это лучше сделать? Несколько A-записей в dns-е, указывающих на разные зеркала? nginx настроить, чтобы 302-м ответом перенаправлял, или ещё как-то замысловато nginx настроить? Или какой-то отдельный софт для балансировки искать?

Не плохая статья на эту тему недавно проскакивала на Хабре http://habrahabr.ru/post/140068/, данный подход интересен тем что в случаи рассинхронизации серверов клиент получит нужный статический файл.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Дублирующий сервер статики

Сообщение KiWi »

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: Дублирующий сервер статики

Сообщение KiWi »

Kreept писал(а):
29.03.2012 13:16
Portnov писал(а):
28.03.2012 09:19
А вопрос, меж тем, не такой тривиальный в общем случае, насколько я понимаю. Предположим, для бэкапов у нас отдельный сервер, и там отдельная заморочка. А вот есть у нас зеркало, и надо распределить нагрузку. Как это лучше сделать? Несколько A-записей в dns-е, указывающих на разные зеркала? nginx настроить, чтобы 302-м ответом перенаправлял, или ещё как-то замысловато nginx настроить? Или какой-то отдельный софт для балансировки искать?

Не плохая статья на эту тему недавно проскакивала на Хабре http://habrahabr.ru/post/140068/, данный подход интересен тем что в случаи рассинхронизации серверов клиент получит нужный статический файл.

Как и многие статьи с хабра -- я тут чуток ман прочитал и пересказываю, но сделать нормально не хочу(это, в частности, про 503 ошибку -- есть чуть-чуть подумать, то есть лёгкий способ этого избежать). И таймауты дикие. И бессмысленное отключение логов. И ещё один сервер под обработку php на 127.0.0.1 как-то не особо логичен.
Спасибо сказали: