У меня есть два сервера, расположенных в центрах обработки данных в Голландии и Франции. Оба работают под управлением Debian Wheezy. Мне нужно разделить / домой между ними, с хорошей производительностью. На серверах с чем-то 300 пользователей, около 30 из них должны иметь возможность иметь активные процессы на данном сервере в данный момент времени, каждый из которых имеет чтение по 50 кбит и запись по 20 кбит в секунду, с короткими пиками около 2000 кбит / с. с чтением. меры с iotop на локальном хранилище. У меня много маленьких файлов, всего около 500000, и мне нужна как можно меньшая задержка. Пинг между серверами составляет 17 мс, а скорость соединения может достигать 20-30 МБ / с при использовании scp и wget. Кажется, что для этого должно быть достаточно полосы пропускания, но ...
Что я до сих пор проверял: sshfs: Похоже, что у него была лучшая производительность, чем у nfs, но он случайно изменил права доступа к файлам на root, что привело к сбою приложения.
nfs: способ замедлить, попробовал noatime и кучу других вариантов, но продолжает работать медленно, даже когда активны только несколько процессов.
drbd: 5 часов тупиковой работы, когда я понял, что на самом деле не могу смонтировать файловую систему в обеих системах :-(
glusterfs: Наличие локальной копии всех данных звучало многообещающе, но произвольный доступ к файлам очень медленный, и через некоторое время он становится невероятно медленным и почти зависает. noatime не помогает.
снова nfs: все еще вялый.
Плач в клавиатуру: Никаких улучшений.
Что попробовать дальше? Каждое из неудавшихся испытаний длилось по вечерам, а может быть, и больше за последнюю неделю, и мне бы очень хотелось, чтобы следующий метод сработал. И да, очень важно, чтобы файловые системы были общими для обоих серверов.
Спасибо за любые новые идеи по этой проблеме.
Для этого есть несколько возможных решений:
Вы можете использовать реплицированное блочное хранилище, такое как DRBD (или MARS, как упоминалось выше), но вам необходимо настроить файловую систему кластера поверх блочного хранилища. Такими файловыми системами могут быть GFS2 или OCFS2, которые доступны в ядре Debian afaik. DRBD может обрабатывать первичный / первичный, и вы можете установить его на обоих серверах одновременно. Но если вы сделаете это со стандартной файловой системой, один сервер не будет знать о другом, и вы уничтожите свою файловую систему за несколько секунд. Кластерная файловая система наверху будет обрабатывать связь и блокировку, чтобы оба узла могли писать в один и тот же блок.
Используйте распределенную файловую систему для / home. Вы найдете список таких файловых систем на http://en.wikipedia.org/wiki/Comparison_of_distributed_file_systems. Но будьте осторожны и выбирайте с умом. Все они не умеют колдовать, и у всех есть свои недостатки. Gluster - такая файловая система. Для некоторых систем вам может потребоваться более двух узлов.
Если его не нужно реплицировать в реальном времени и будет достаточно синхронизации файлов почти в реальном времени, обратите внимание на BitTorrent Sync (http://www.getsync.com/), Dropbox или альтернативы. У каждого сервера есть свой / home, но изменения реплицируются на другой сервер на файловой основе.