Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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

share|improve this question

2 Answers 2

up vote 5 down vote accepted

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.

share|improve this answer
    
+1 for single point of failure. That's why I hate single copy clusters. The emphasis is on the single copy. –  Holocryptic Aug 16 '11 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? –  a0down Aug 16 '11 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 '11 at 8:03
    
...but if you use pull, the security controls are a lot simpler. –  symcbean Aug 16 '11 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 '11 at 20:45

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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.