Welcome to WebmasterWorld Guest from 220.127.116.11
Forum Moderators: open
We are expanding our photo sharing business and are revising our Unix-based server architecture. We're looking to develop a standard server configuration so that we can easily add servers when necessary.
Our ISP has recommended a configuration with mirrored web servers and mirrored RAID5 NAS boxes. I've read about Google's server architecture which consists of identical mirrored servers; when a drive or part from one of those servers goes down, data is served from the mirrored servers and the bad machine is repaired or replaced.
Comparing the two architectures with similar storage sizes, the overall cost of the hardware itself is about the same, with the identical mirrored machines being slightly cheaper. The monthly co-location fees (rack, power, etc.) are higher for the NAS solution.
I'm interested to hear your thoughts and experiences with similar solutions. I know the web/NAS solution is popular, and it's probably the one we'll go with, initially at least. Has anyone here implemented a Google-like identical mirrored server solution?
It brings up a couple of thoughts. If you're only going to be serving up images, and not using a database shared amongst the web servers, then you should be OK using a mountable filesystem (NFS/CIFS) and accessing files from each webserver that way.
There are lots of issues for you to consider, though... In what fashion are these boxes operating? By that I mean, are they in an active/active configuration, where both boxes are accessing the same data at the same time? If so, how are you splitting up the incoming traffic? You'll need a load-balancer of some kind to do that properly (you would ideally have 2 LB's for redundancy).
If it's in an active/passive mode, you should consider something like Linux's HA components, where you can monitor the primary server, and a failover occurs if there's a failure of network,OS,application, etc. The secondary box sends out gratuitous ARPs, taking over the IP address of the primary server, and you now have a fast failover. It's not instantaneous, BUT, it does remove the need for load-balancers in front.
Other problems start to crop up when configurations are modified on each box. So, if you add a VHost on one box, you have to remember to apply the same configuration to the second box. If in an active/passive mode using linux-HA, you should be able to script the transfer of configurations using ssh/rsync. That way, you have an up to date configuration, and you won't need to modify anything after the fact, since the secondary box will take over the primary's IP address.
If you're planning on sharing a database in an active/active fashion, then you have lots of work ahead of you. If it's in an active/passive mode, then the secondary server will startup its DB once failover has occurred, and hopefully there will be no corruption from the primary's crash when it takes over the DB.
There are other options as well, that are much more "enterprisey", such as booting from SAN and so forth, but I think those are out of the scope of what you want to accomplish, and what you can live with in terms of lost processing power or uptime.
Lots of really interesting stuff to consider!