Я хочу сделать сервис с балансировкой нагрузки (сначала) с 3 компьютерами.
Я хочу использовать циклический перебор или даже лучше: «NAT и обратная связь» (клиенты получают отправку на серверы, которым нечего делать).
Поскольку я не хочу иметь одни и те же данные несколько раз, я хочу, чтобы все серверы имели доступ к одному жесткому диску, если это возможно.
Как я могу это сделать, и будет ли это хорошей идеей / разумным, потому что HD может быть прочитан только одним компьютером за раз - или может?
И если это плохая идея, что я могу сделать, чтобы не тратить все пространство на дублирование данных? и если нет способа (с которым я не потеряю скорость) как я могу синхронизировать HD?
Могу я что-нибудь сделать с NAS?
пс. Я хочу использовать сервер Mac OS X LION и один или два сервера Linux Ubuntu
Вы можете делать все, что угодно, но как человек, прошедший этот путь и имеющий шрамы, подтверждающие это, я бы сильно рекомендую преодолеть вашу необоснованную неприязнь к дублированию кода приложения на нескольких машинах. Попытка централизовать этот аспект вашего сайта создает ненужное узкое место в производительности и единую точку отказа, а также снижает гибкость развертывания.
Вместо того, чтобы пытаться создать хрупкую и ненадежную архитектуру, сконцентрируйте свои усилия на автоматизации развертывания и практики управления кодом, что обеспечит гораздо более масштабируемую и надежную среду.
Как я могу это сделать, и будет ли это хорошей идеей / разумным, потому что HD может быть прочитан только одним компьютером за раз - или может?
Да, оно может. В этом есть две части - первая - интерфейс, который позволяет подключать не только хост - SCSI делает это годами. Сети SAN позволяют это. AFAIK SATA - нет. Во-вторых, вам нужна файловая система, обеспечивающая такой доступ, но вы не предоставили никаких подробностей об используемых вами операционных системах. Однако IME очень редко является правильным способом решения проблемы.
Потому что я не хочу получать одни и те же данные несколько раз
Почему нет? Это стандартная практика даже для одного сервера (где это называется RAID). Дублируя данные на нескольких серверах, вы добавляете избыточные процессоры, сетевые карты, материнские платы, память, кабели ...
Если данные меняются относительно нечасто, то rsync / unison реплицирует файлы. Если он меняется, обратите внимание на AFS или аналогичные реплицированные файловые системы кластера.