PDA

View Full Version : Server Clustering question


Steel Chicken
04-27-2005, 12:10 PM
Is there an OS function, or a software package, that allows the resources of multiple PC's to be linked together to allow a single multi-threaded app to share CPU and RAM resources?

In other words, take 2 or more PC's, link em together, and install programs and run them, just like it was on one PC, only with pooled resources.

Note, I am not talking about parralelization setups like Beowulf.
I mean taking off the shelf generic software, and running it without modifications.

I dont know much about Vmware or Citrix....is that something they can do?

Malk-a-mite
04-27-2005, 12:41 PM
I mean taking off the shelf generic software, and running it without modifications.

From what I understand most generic software isn't designed to be broken up into the different pieces it would need to be to make the multiprocessor/multisystem approach useful.

You can look into something like this:
http://openmosix.sourceforge.net/#What

If you are interested in the concept of clusters, but there isn't a plug and go software application for it yet (Open Mosix is about as close to one that I've seen).

Steel Chicken
04-27-2005, 01:32 PM
openmosix looks very promising.

ill look into it. any other ideas/suggestions?

hokatichenci
04-27-2005, 04:52 PM
OpenMosix is the only thing I can think of that would even let you remotely do that. OpenMosix as far as I know isn't even very effective at what it tries to do. It's hard to write something that can distribute tasks unless a lot of information is known about the tasks or is highly specialized (ie: some sort of middleware). Think about it this way, the speed/bandwidth of your processor and memory is very fast, and gamers seek solutions to the "hard disk" problem which are rated at 4-10ms access speeds. You would not get low access times distributing tasks throughout a network unless you ran some sort of low latency networking like Infiniband, which is also very costly.

In short, the answer is no. Nothing really does this effectively (that I am aware of). Some software packages are designed to be distributed throughout multiple processors/machines, such as distcc, some databases, probably some webservers. But all in all it is very hard to write efficient distributed software.

-hoka

Steel Chicken
04-27-2005, 05:12 PM
OpenMosix is the only thing I can think of that would even let you remotely do that. OpenMosix as far as I know isn't even very effective at what it tries to do. It's hard to write something that can distribute tasks unless a lot of information is known about the tasks or is highly specialized (ie: some sort of middleware). Think about it this way, the speed/bandwidth of your processor and memory is very fast, and gamers seek solutions to the "hard disk" problem which are rated at 4-10ms access speeds. You would not get low access times distributing tasks throughout a network unless you ran some sort of low latency networking like Infiniband, which is also very costly.

In short, the answer is no. Nothing really does this effectively (that I am aware of). Some software packages are designed to be distributed throughout multiple processors/machines, such as distcc, some databases, probably some webservers. But all in all it is very hard to write efficient distributed software.

-hoka


well this is not for a game. im looking at various webserver technologies (Domino, WebSpehere, etc)

Linux Virtual server looks interesting as well.

rcolbert
04-27-2005, 05:40 PM
You need to be more specific. There are many different ways to cluster. Your OP sounded a lot like you were looking for a grid-style computing solution, where a single instance of an application was distributed across multiple hardware resources in a sort-of inverse virtualization scenario. Your latest update sounded more like a web farm, where you would really be running multiple instances of an application or webserver, but from the end user's perpsective it would look like a single server. I wouldn't simultaneously look for a solution for Domino and Websphere at the same time. What's good for one will likely not be good for the other. Most if not all of the best solutions for this kind of problem are built-into the product itself. For example, using weblogic clustering is probably the best way to cluster a pool of weblogic application servers.

ameoba
04-27-2005, 11:39 PM
Process migration isn't really goign to help you with web-based load problems - the processes are too short-lived for it to do you any good.

It shouldn't be too hard to load-balance web stuff since HTTP is pretty much a stateless protocol - it shouldn't matter which server handles a request.

Steel Chicken
04-27-2005, 11:50 PM
I posted this in the first post. Ill repeat it, with more details.

Im looking for a way to combine multiple PC's CPU and RAM resources so that a single application, with multiple threads (not multiple instances of a webserver) but rather ONE webserver with many threads, performing different functions. A single Domino server for example runs probably 30-50 threads depending on load, and yet is ONE application. Im not an expert in Websphere, but from what I gather, its similar.

One application. One IP address (visible to the outside world). Many threads, running on many CPU's, using the combined available RAM.

These servers do alot more than process HTTP requests. SMTP, POP, IMAP, LDAP, clients of various types, etc. Background agent managers, database indexers, yadda yadda you get the idea.

After more research, I ruled out Microsofts Clustering Tech, which is great for hardware failover but not load balancing.

OpenMosix looks like a no go, but Linux Virtual Server might work. LVS is transparent to the application, which is what I want....OpenMosix doesn't seem to be. an OpenMosix app needs to be written to be parrellized.

Pixeleet
04-28-2005, 12:08 AM
Why not have the computers run seperately, but install something like Plesk on the core server, then set up the other servers as nodes for the same Plesk domain. When you manage Plesk, you have the option to set a domain-wide policy or a server-specific policy. It's great software and it's only getting better.

rcolbert
04-28-2005, 12:28 AM
Thanks for the clarification. So again, that sounds a lot like grid computing. Linux Virtual Server seems to me to be more of a traditional load balancing farm. In other words, each server in the server array is still running it's own unique instance of the application, which is what you didn't want. Openmosix actually sounds like what you do want, which is a single instance of the application, but the ability to distribute processes to other nodes. But Openmosix is constrained by the reality that grid computing requires applications that can take advantage of parallelism. If you application can't take advantage of parallelism, then you might as well buy the fastest dual-processor box you can and allocate one processor to the application and it's threads, and the other processor to the OS and basic housekeeping chores. In otherwords, there's a bit of a catch-22 built into your requirements statement.

I'm not aware of a COTS product that can turn websphere or domino into a grid solution. As a previous poster mentioned, an application must be tuned in very specific ways to take advantage of a grid.

My greatest concern with the question is that it sounds like an endeavor that would only be undertaken if an extreme amount of performance was demanded and that a whole lot of money was available to back it up. If I were being asked to pursue this avenue myself I'd be asking a lot of questions regarding the problem statement and what the desired result was. If this is a highly funded project I'd be working with IBM to find the right solution. If this was an underfunded project to try and apply a magic solution to existing underpowered hardware to utilize it for an application that really needs a high-end system, I'd walk away thinking that it was a half-baked idea where the solution proposed couldn't possibly achieve the desired result.

My guess is that it's somewhere inbetween. I don't mean to be a cynic, but do you understand my confusion?

What hardware is this intended to run on, and why is there an expectation that a grid can be applied in a beneficial way? What problem is needing to be solved?

Steel Chicken
04-28-2005, 09:19 AM
Why not have the computers run seperately, but install something like Plesk on the core server, then set up the other servers as nodes for the same Plesk domain. When you manage Plesk, you have the option to set a domain-wide policy or a server-specific policy. It's great software and it's only getting better.

I went to Plesk.com, and found the product dsecription page, but they dont even bother to describe what it does, LOL

It sounds like a fancy control panel.

Steel Chicken
04-28-2005, 09:26 AM
Openmosix actually sounds like what you do want, which is a single instance of the application, but the ability to distribute processes to other nodes. But Openmosix is constrained by the reality that grid computing requires applications that can take advantage of parallelism.

I understand parallelism, but what im wondering is will a multithreaded app take advantage of openmosix. Rewriting Domino or Websphere to handle it is not a solution. Can one thread run on one CPU, and another thread on another? Or does it HAVE to be all threads on all servers?


If this is a highly funded project I'd be working with IBM to find the right solution. If this was an underfunded project to try and apply a magic solution to existing underpowered hardware to utilize it for an application that really needs a high-end system, I'd walk away thinking that it was a half-baked idea where the solution proposed couldn't possibly achieve the desired result.

My guess is that it's somewhere inbetween. I don't mean to be a cynic, but do you understand my confusion?

What hardware is this intended to run on, and why is there an expectation that a grid can be applied in a beneficial way? What problem is needing to be solved?

the issue is trying to develop a solution that is redundant, fault tolerant, and uses existing PC hardware. There is no budget. In other words, I dont have a 20K budget to go buy a quad opteron server. What I do have is access to many standard desktop PC's. This is a proof of concept project...can it even be done? One PC will not support the load of the amount of users we have, period. And, There is no budget for an uber server. But there are many PC's available. If it can't be done, thats fine. But im looking for information on possible solutions before I come to that conclusion. Im trying to educate myself on the technology available. Explore all options, even if none of them will work.

Pixeleet
04-28-2005, 08:16 PM
Maybe I've missed something in this thread, but what are you going to use this server cluster for exactly? A www server farm or an app server cluster?

tom61
04-28-2005, 08:56 PM
I understand parallelism, but what im wondering is will a multithreaded app take advantage of openmosix. Rewriting Domino or Websphere to handle it is not a solution. Can one thread run on one CPU, and another thread on another? Or does it HAVE to be all threads on all servers?

When you start an app, OpenMosix will asign it to the most-available most-powerfull processor, and as the threads that app uses go beyond what that processor can handle, the excess threads are assigned to the next most-available most-powerfull processor, and so on, in the same manner.

Open Mosix is the closest 'Grid Computing' or alot of computers acting as one big computer as you can get with commodity hardware.

A 'real-world' example might help you understand:
http://www.rimboy.com/cluster/

BTW, is this a thesis project or something?

rcolbert
04-29-2005, 01:26 AM
the issue is trying to develop a solution that is redundant, fault tolerant, and uses existing PC hardware....

One PC will not support the load of the amount of users we have, period. And, There is no budget for an uber server. But there are many PC's available....

Im trying to educate myself on the technology available. Explore all options, even if none of them will work.

For fault tolerance and redundancy, I'd lean away from a single instance across a grid and back to a cluster solution. The Linux Virtual Server product may have the multiple instances that you don't want, but without at least two instances of the application running it would be impossible to have any real level of fault tolerance. Recombining multiple instances into one virutal instance is what Linux Virtual Server is for.

On the other hand, I believe that there is ample clustering technology built into websphere, so you could setup multiple OpenMosix instances of websphere, and then use websphere clustering to make them work together as a farm. Openmosix would provide the grid-style access to distributed resources, and websphere clustering would provide the fault-tolerance. Same for Domino.

I admire that you're taking on a difficult task with limited resources, and exploring all the options and educating yourself sounds like the right way to go about it. I'm interested to hear how it turns out.

One major point of curiosity though is the licensing for websphere and domino. In my experience the software licensing of these types of products often greatly exceeds the hardware costs. How are the licensing costs being addressed?

Whatsisname
04-29-2005, 01:51 AM
No, not possible for a single threaded process. MHz is the absolute determiner of how fast you can something in a single thread.

Steel Chicken
04-29-2005, 10:12 AM
Maybe I've missed something in this thread, but what are you going to use this server cluster for exactly? A www server farm or an app server cluster?

both

Steel Chicken
04-29-2005, 10:21 AM
When you start an app, OpenMosix will asign it to the most-available most-powerfull processor, and as the threads that app uses go beyond what that processor can handle, the excess threads are assigned to the next most-available most-powerfull processor, and so on, in the same manner.

Thats bascially what I needed to know. Unfortunately hours of browsing openmosix pages, I couldnot find anywhere that said that specifically. As long it spawns other threads (from the same app!) on other CPU's then thats what I am looking for.


Open Mosix is the closest 'Grid Computing' or alot of computers acting as one big computer as you can get with commodity hardware.

A 'real-world' example might help you understand:
http://www.rimboy.com/cluster/

Thanks for the link but hes running multiple instances of the same app looks like, which is not what I am doing.



BTW, is this a thesis project or something?
Nope, this is a work based project.

Steel Chicken
04-29-2005, 10:22 AM
No, not possible for a single threaded process. MHz is the absolute determiner of how fast you can something in a single thread.

read the thread, thanks