Sign in to follow this  
lgc_ustc

Server clustering.

Recommended Posts

Hi, all, I guess this is a common problem, but I can not find any thread from the FAQ or the forum. It's: how to cluter physical servers so that they appear to be a single "logic" server that is visible from outside. I know there are some solutions for this, like LVS. But few discussions are found on this topic. Does anyone have any good ideas or any good resource for this? Thanks. Gangcai

Share this post


Link to post
Share on other sites
Do you want a truly NUMA system (non-uniform memory architecture)? Or do you just want a single IP address to load-share onto multiple servers?

NUMA is pretty hard to program for good performance on high-end back-bone servers; it gets even harder to program if the nodes are just Ethernet connected. There are some applications where it makes sense, but most of the time, it's easier and cheaper to just treat the separate machines as separate machines.

For load sharing, there's lots of routers or gateway servers that can do that for you.

Share this post


Link to post
Share on other sites
Thanks for the reply.

I mean that there is only one "instance" of the world at any time. Any player in the world can communicate with anybody else in the world (if permitted). There is no seperated game worlds, no migration of characters among servers. No matter how may servers are required to support the world, the client only sees a single consistent world, since mechanisms like load balancing are totally transparent to the clients.

Share this post


Link to post
Share on other sites
There are many ways to cluster computers, the way I'm designing my cluster is to have one machine be what users initially connect to, this computer will do the authentication for the product, and the login, then the user will get passed off to another node of the cluster, and this is where all the packet forwarding gets handled. The zones in your game world should be small enough so that each node can handle several zones. Then nodes should be able to pass around zones to balance the load so that each node has relatively equal share of the work.

Share this post


Link to post
Share on other sites
In a client/server game, you've got control of the client as well as the server. So you can make it do whatever you need to, to load-balance over servers, use fail-over, or whatever.

So you don't actually need to make it appear "as a single server" at all, as long as the players don't have to physically do anything for it to work.

Mark

Share this post


Link to post
Share on other sites
There are significant system-level hurdles to trying to make a distributed cluster of servers look like a "single system" to the software. After all, things in local memory are 1,000,000 faster to access than things in remote memory. Thus, most implementations that achieve high performance pay the price of deriving code structure based on locality. To the user, it still seems like a single server, but in the software, you deal explicitly with the fact that you're distributed.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this