0

I want to make a load-balanced service with (at first) 3 computers.

I want to use round robin or even better: "NAT and Feedback" (clients get send to servers which have nothing to do).

Because I don't want to have the same data multiple times, I want to let all the servers access the same hard drive, if possible.

How can I do that and would this even be a good idea/reasonable, because a HD can only be read by one computer at a time -- or can it?

And if this is a bad idea, what could I do to not spend all the space on duplicate data? and if there is no way (with which I won't lose the speed) how can I sync the HDs?

Can I do something with NAS?

ps. i want to use mac os x lion server and many one or two linux ubuntu servers

2 Answers 2

5

You can do all sorts of things, but as someone who has been down this road and has the scars to prove it, I'd strongly recommend getting over your unfounded dislike of duplicating your application code on multiple machines. Trying to centralise this aspect of your site introduces an unnecessary performance bottleneck and a single point of failure, and reduces your deployment flexibility.

Instead of trying to create a brittle and unreliable architecture, focus your efforts instead on automating your deployment and code management practices, which will provide a much more scalable and robust environment.

12
  • +1 for single point of failure. That's why I hate single copy clusters. The emphasis is on the single copy. Aug 16, 2011 at 0:44
  • thank you for your answer. so you suggest i for example use a main server in my system and have the others sync to it?
    – abegehr
    Aug 16, 2011 at 7:43
  • I prefer to push code out, rather than having the servers pull it; this provides you with better control over what's running where.
    – womble
    Aug 16, 2011 at 8:03
  • ...but if you use pull, the security controls are a lot simpler.
    – symcbean
    Aug 16, 2011 at 11:43
  • @symcbean: You're going to have to explain that one, because it makes absolutely no sense to me as it stands.
    – womble
    Aug 16, 2011 at 20:45
0

How can I do that and would this even be a good idea/reasonable, because a HD can only be read by one computer at a time -- or can it?

Yes it can. There are 2 parts to this - first an interface which allows more than host to be connected - SCSI has done this for years. SANs allow this. AFAIK SATA does not. Second, you need a filesystem which allows for this kind of access - but you've provided no details of the operating systems you are using. However IME this is very rarely the right way to solve the problem.

Because I don't want to have the same data multiple times

Why not? This is standard practice even for a single server (where it is referred to as RAID). By duplicating the data across multiple servers you add redundant CPUs, network cards, motherboards, memory, cabling.....

If the data is changing relatively infrequently then rsync/unison will replicate the files. If it is changing then have a look at AFS or similar replicated cluster filesystems.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .