Назад | Перейти на главную страницу

Хорошее решение для многопутевого NFS

У меня есть пара серверов, обслуживающих точно такой же контент через NFS на нескольких веб-фермах, все задействованные серверы работают под управлением CentOS 5.

Контент между обоими серверами NFS реплицируется с помощью Unison (в прошлом пробовал drbd, сильно убавил производительность)

Для распределения нагрузки я монтирую отдельный сервер NFS из каждой фермы.

Единственная проблема, с которой я столкнулся, заключается в том, что когда один из серверов выходит из строя, я хотел бы автоматически перемонтировать контент с другого сервера NFS, пока сервер не восстановится, а затем вернется на первый сервер после льготного периода.

Прежде чем я начну писать такое приложение, я хотел бы знать, есть ли уже доступное решение с открытым исходным кодом, которое делает что-то близкое к тому, что я собираюсь сделать, весь интеллект приложения должен быть на стороне клиента (все серверные решения были протестированы и отброшены (сердцебиение, drbd и т. д.), поскольку я хочу использовать оба сервера NFS в активном-активном решении.

Также должно быть важно, чтобы все серверы в веб-ферме обращались к одному и тому же серверу NFS, в противном случае я столкнулся бы с некоторыми неприятными проблемами репликации.

Заранее благодарим за помощь!

Взгляните на Поваренная книга NFS для RedHat Cluster Suite, с подзаголовком «Настройка LoadBalanced NFS-кластера с возможностью переключения при отказе». Я думаю, у этого может быть несколько хороших предложений, если это не совсем то, что вы ищете.

Вы можете взять идеи, представленные в этом документе, и реализовать их с помощью Pacemaker / Corosync, с которыми, как мне кажется, гораздо проще работать, чем с устаревшими кластерными инструментами RedHat.

Вы в основном запрашиваете активный / активный кластер с автоматическим аварийным переключением. Поскольку вы обслуживаете две независимые, но синхронизированные, копии данных, вы фактически обошли большинство сложных проблем, которые возникают (включая блокировку и другую синхронизацию состояния), если вы действительно пытаетесь создать балансировка нагрузки от внешнего интерфейса NFS к некоторому общему хранилищу (например, файловой системе кластера, такой как GFS).

Вы могли бы использовать CTDB сделать это. Это поддерживает NFS с правильным поведением блокировки файлов и восстановлением блокировки. Кроме того, это активный-активный решение, то есть все серверы NFS активны одновременно, и клиенты получают к ним доступ через служебные IP-адреса (циклический перебор DNS), который может перемещаться с сервера на сервер в случае сбоя узла.

Однако это а) серверное решение и б) требует файловая система кластера как например GPFS или GFS (какой OTOH может быть преимуществом по сравнению с вашим унисонным решением).