Синхронизация каталога между N серверами

Metal Messiah
На сайте с 01.08.2010
Offline
160
1546

Добрый день. Есть несколько серверов, как правило Centos и Debian.

На каждом по сколько-то сайтов, где-то ISP Lite, где-то VestaCP, где-то еще что-то, а где-то вообще без панели :crazy:

Есть 1 субдомен с разной статикой, картинки, css, архивы для скачивания, созданный на 2 серверах, в DNS прописано 2 "A" записи. Контент одинаковый, как правило не изменяемый (хотя это допускается), в основном только добавляются файлы. Сейчас я заливаю файл сразу на оба сервера с клиента, иногда с одного сервера на другой по ssh.

Хочу чтобы работала автоматическая синхронизация между серверами, залить файл на один и он автоматически появился бы на остальных. Пока 2 сервера, планирую на всех сделать т.к. везде есть лишнее место и неизрасходованный запас BW.

Есть ли полностью автоматические решения? Самописные скрипты в крон не интересно.

Думал сделать через клиент DropBox, только там скорее всего будут проблемы с правами доступа к файлам - dropbox насколько я помню запускается из под своего юзера, и может быть конфликт с юзером www-data. Или эта проблема решаемая?

Есть ли другие варианты?

anonymous, думай что говоришь и не забывай подписать отзыв :)
kxk
На сайте с 30.01.2005
Offline
970
kxk
#1

Metal_Messiah, Как вариант используйте csync

Ваш DEVOPS
Mik Foxi
На сайте с 02.03.2011
Offline
1131
#2

дропбокс для серверов фигня, я некоторое время назад пробовал с ним извращаться, это извращение.

в вашей ситуации - лейте на один сервер, а с него обычным rsync синхронизируйте с серверами, просто и стабильно.

Универсальный антибот, антиспам, веб файрвол, защита от накрутки поведенческих № 1 в рунете: https://antibot.cloud/
Metal Messiah
На сайте с 01.08.2010
Offline
160
#3

rsync идея хорошая, но в идеале надо создавать отдельного пользователя с доступом только к этой директории, иначе если кто хакнет основной сервер - автоматически получает ssh доступ ко всем остальным серверам... А если создавать - будут опять же проблемы с записью от имени веб сервера

Mik Foxi
На сайте с 02.03.2011
Offline
1131
#4

Metal_Messiah, с первого заливаем на второй, с третьего забираем со второго... и тогда всех не перехакают.

M
На сайте с 30.08.2010
Offline
92
#5

поднять rsync server и тянуть с него клиентами

A1
На сайте с 04.09.2013
Offline
18
#6
Metal_Messiah:
Думал сделать через клиент DropBox, только там скорее всего будут проблемы с правами доступа к файлам - dropbox насколько я помню запускается из под своего юзера, и может быть конфликт с юзером www-data.

Если интересует dropbox-подобное решение, то можно попробовать использовать яндекс.диск и ydcmd (или аналог, запуская ее из под нужного пользователя), но это все равно не решает проблемы взлома аккаунта в облаке, что позволит злоумышленнику залить свои файлы на оба сервера.

С другой стороны, судя по тому, что все сайты работают из под www-data (вместо заведения отдельного пользователя под каждый), то особо париться по поводу безопасности смысла нет.

SD
На сайте с 20.07.2014
Offline
4
#7

Предлагаю такой вариант. Есть один сервер - master-stat. И на него выкладываются все обновления. Остальные сервера если не могут найти файл локально - лезут на мастер-сервер и скачивают недостоющий файл. Вы можете сделать реверс - и ссылаться с каждого на друг-друга по этому же принципу.

set $root /opt/www/img.domain.com;


location / {
root $root;
try_files $uri @master-stat;
}

location @master-stat{
internal;
proxy_pass img.master-stat.domain.com;
proxy_set_header Host img.domain.com;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path /opt/tmp;
root $root;
break;
}

Ну и раз в сутки с mster-stat rsync на все остальные, чтоб удалить ненужное и перелазить обновленные (редко но всеже надо).

Glueon
На сайте с 26.07.2013
Offline
172
#8

Часто получается, что существует много идентичных серверов, которым нужно периодически раскидывать новые версии конфигов, PHP-скриптов. Для этого я использую csync. Его не очень удобно настраивать, но работает без сбоев.

Если задача ограничивается только статикой, то самое простое - это proxy_store в nginx-е.

Есть много IP-сетей в аренду под прокси, парсинг, рассылки (optin), vpn и хостинг. Телега: @contactroot ⚒ ContactRoot команда опытных сисадминов (/ru/forum/861038), свой LIR: сдаем в аренду сети IPv4/v6 (/ru/forum/1012475).
pupseg
На сайте с 14.05.2010
Offline
364
#9

использую lsyncd для синхронизации статического контента с одного сервера на 50+ серверов cpa-партнерки.

доволен как слон.

все работает.

---------- Добавлено 21.07.2014 в 15:35 ----------

в общем то - это удобно-управляемая надстройка над rsync.

Качественная помощь в обслуживании серверов. (/ru/forum/661100) Бесплатных консультаций не даю, не помогаю, не обучаю. Минималка от 100$. Как пропатчить KDE-просьба не спрашивать. Есть форумы (http://linux.org.ru) и полезные сайты (http://www.opennet.ru/).
W
На сайте с 07.07.2014
Offline
1
#10

Еще можно посмотреть в сторону drbd и glusterfs. Хотя для нескольких серверов действительно нет смысла сильно заморачиваться и лучше брать lsyncd.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий