Прямо сейчас я использую NFS (сетевая файловая система) для монтирования корневого веб-сервера файлового сервера на два веб-сервера.
Мне кажется, NFS съедает много ресурсов. Есть ли лучший способ синхронизировать файлы на веб-серверах? Я знаю, что вы можете запускать rsync каждые несколько секунд, но не уверен, что это лучший способ.
Изменяются ли файлы в обоих местах или они управляются централизованно?
Если файлы могут быть изменены на любом из серверов, то разумным выбором будет NFS.
Если файлы должны управляться централизованно, вы можете использовать какую-нибудь систему контроля версий (например, Subversion), чтобы также хранить данные и регулярно проверять изменения на серверах.
Если файлы изменены на одном компьютере и вы хотите, чтобы они были такими же на другом, вы можете использовать rsync - после любого изменения или в crontab. Rsync не будет использовать много ресурсов, если нет изменений для распространения.
Взгляните на csync2, он больше предназначен для этого типа вещей.
Если это система Linux (как я предполагаю), я настоятельно рекомендую DRBD. Это позволяет реплицировать файловую систему по сети на другой компьютер.
Вы можете создать GFS2 или OCFS2 (кластеризация) файловой системы, и вы можете смонтировать оба общих ресурса в двойном первичном режиме. Когда в одной из систем вносятся изменения, они мгновенно становятся доступными в другой.
Другой вариант - унисон он очень похож на rsync. Унисон лучше подходит для двусторонней синхронизации. Например: если файлы меняются в обоих местах, unison будет работать лучше, чем rsync.
Оба будут работать по ssh. У обоих будет мало ресурсов.
* Я использую его / их для каталогов с более чем 200К файлами. Синхронизирую каждые 5 минут. Я использовал оба и не заметил разницы в производительности.
А как насчет общего хранилища? Вы можете установить openfiler или freenas на другом компьютере и смонтировать файловую систему через iSCSI. Если вы используете файловую систему только для чтения, вы можете использовать ext3 или xfs или любой аналогичный fs и монтировать файловую систему только для чтения. Для доступа rw вам нужны кластерные файловые системы, такие как OCFS2 или GFS2 (и, возможно, clvmd, если вы используете LVM)
Как предложил Энди, вы также можете использовать DRDB. Но у него есть свои ограничения. Основное ограничение - только 2 сервера (Master-Slave или Master-Master). Можно добавить третий сервер, но это сложнее.