ESXi as game server over 6VM's

Jagernaut

n00b
Joined
Jul 14, 2009
Messages
28
Im going to be hosting a 300 person LAN. Rather then running 6 individual servers Im thinking of going with ESXi on an i7 box with 12 gigs of ram. I would like it to be able to run 6 game servers. COD: Modern Warfare 2 would be the top end game. MW2 not have a dedicated server would rely heavily on graphics which would be a show stopper in a vm environment. So it will longer be a tourny viable game. Not sure what the top tier game will be now. WIll have to be a modern FPS with a dedicated option NOT Conter Strike.

Possible?

SYS:
i7 with 12 gigs of ram
2 Gb nics to the network backbone

VM's 6 with 2 gigs of RAM.

The server would only be used for tournenment play. I imagine the max amount of people connecting to it at any one given time would be 20-60 people. With the majority of game play being cross network play from players hosting their own servers for others to connect to.



Any help would be appreciated.

EDIT: LOTS of feedback has helped a great deal and have updated the thread to take note of it.
 
Last edited:
I'm kinda a noob with this stuff but I'm just going to throw out what I'm thinking. I see 3 potential problems

1. Network bandwidth. I would want multiple nics in the box to balence out the load.
2. Disk what you are thinking would probally work but I worry about what would happen if on system started to thrash the disk.
3. Lack of graphics I don't know what games you are going to run but you could have trouble getting MW2 to run with out supported graphics.

Just the problems that I see I'm still learning though curious to know what others will say.
 
I would separate them. Just for the fact that if you blow out a power supply or something stupid like that, then you're going to have 300 angry gamers :) Were as if one server out of 6 blows up, you'll still be able to hobble along.

Also, correct me if I'm wrong; but most game servers don't require much resources.
 
ESX isn't guaranteed to be anywhere close to realtime emulation. Depending on the game, this may or may not matter :)
 
I'm kinda a noob with this stuff but I'm just going to throw out what I'm thinking. I see 3 potential problems

1. Network bandwidth. I would want multiple nics in the box to balence out the load.
2. Disk what you are thinking would probally work but I worry about what would happen if on system started to thrash the disk.
3. Lack of graphics I don't know what games you are going to run but you could have trouble getting MW2 to run with out supported graphics.

Just the problems that I see I'm still learning though curious to know what others will say.

Looking at an EVGA board with 2 integrated gigabyte connections. The rest of the LAN will run on 100Mb network where the game server and core swith router will all be on a Gb connections
 
I would separate them. Just for the fact that if you blow out a power supply or something stupid like that, then you're going to have 300 angry gamers :) Were as if one server out of 6 blows up, you'll still be able to hobble along.

Also, correct me if I'm wrong; but most game servers don't require much resources.

I did think about that and the odds of catastrophic failure are low. But backup parts would be on hand to swap out. And if the oppurtunity comes up I would build another barebones machine that I could swap the vms into. Gotta love VM swapping.
 
Do dedicated game servers have the graphic needs that non-dedicated servers have?

In the above scenerio would it be better to only run games that have a dedicated server option?
 
1. Also, correct me if I'm wrong; but most game servers don't require much resources.
2. ESX isn't guaranteed to be anywhere close to realtime emulation
3. I do understand that MW2 does not support a dedicated server, and I would manually "host" it each time
4. Network bandwidth. I would want multiple nics in the box to balence out the load.
5. I did think about that and the odds of catastrophic failure are low. But backup parts would be on hand to swap out
6. Do dedicated game servers have the graphic needs that non-dedicated servers have?

1. Quite the opposite really, i remember one of my CSS servers using almost a single core of a C2D on a 32 man server and between 3-7Mbits of outgoing bandwidth.

2. I think it needs to be real time otherwise your players are going to glitch and lag whenever it isnt. Its possible that it doesnt matter, and ive never hosted on a VM, so i couldnt be 100% sure, but from what i know, it needs to be realtime, all the time.

3. Does it run as a server at all, or does it require the machine hosting it, to actually be logged in like a player (i think it does), if it does then you can forget hosting it on a server, otherwise you'll need the required GPU and you'll always have a player on one side spawning and standing still (the server), which is easy kill for the opposite team.

4. Its not necessarily just the overall bandwidth, its the cards ability to handle thousands of very small packets in realtime and handle it well. My realtek cards can push 750Mbit+ with file-file transfers, but hosting 2 populated game servers on it can really show its weakness. I would recommend an intel nic.

5. Remember that during this time, there will be no servers at all up for the gamers to play. How many times have we all sat down to replace a Blown PSU (or other part) expecting it to be a 15mins job max.......only to finish 3-4hours later.

6. Dedicated servers typically run as a console, and don't require any 3D functions....ive run several hosts on crappy Intel integrated and some just using the standard Microsoft VGA drivers (where there was no vendors drivers).
 
Last edited:
Looking at an EVGA board with 2 integrated gigabyte connections. The rest of the LAN will run on 100Mb network where the game server and core swith router will all be on a Gb connections

make sure it's on the HCL. ESXi doesn't run on everything.
 
you would definitly want more than one NIC. Make the VMs running the popular games use separate NICs to balance the bandwidth. You're concern will be CPU clock cycles and bandwidth. 300 users at a time is no joke and I honestly do not think a single i7 will handle multiple VMs with that many users.
 
Are 6 servers going to be enough for 300 players?

6 Indivdual servers would be capable of handling 300 players, as you could have 2-4 hosts per server, depending on player counts. A decent dual core server would handle 2x32 player games of CSS for instance or more hosts with a lower player count. However a single core i7 will not handle 300 players if its a modern FPS game in question, virtualised or not.

Also thinking about it more, why bother virtualising the server at all, you'll just have the extra cpu/memory hits from each virtualised host. You may as well just install the basic OS (windows/linux) and run each dedicated game off that. That was you benefit from the memory for caching filetransfers, for instance maps that have been cached on another instance. VMing it, im sure you dont (could be wrong)

Also you never really mentioned it, but how are you going to handle the massive amounts of file sharing that will happen (between clients), as these can really clog up cheap network switches and increase the ping times dramatically for everybody if you havent thought it through correctly.
 
Last edited:
300 users at a time is no joke and I honestly do not think a single i7 will handle multiple VMs with that many users."

Are 6 servers going to be enough for 300 players?

Not all 300 would be hosted at any 1 given time. This would be the tourney server used for prize events. So it would have anywhere from 30-60 connections at any one given time.

Think of it like bracket play.
 
6 Indivdual servers would be capable of handling 300 players, as you could have 2-4 hosts per server, depending on player counts. A decent dual core server would handle 2x32 player games of CSS for instance or more hosts with a lower player count. However a single core i7 will not handle 300 players if its a modern FPS game in question, virtualised or not.

Also thinking about it more, why bother virtualising the server at all, you'll just have the extra cpu/memory hits from each virtualised host. You may as well just install the basic OS (windows/linux) and run each dedicated game off that. That was you benefit from the memory for caching filetransfers, for instance maps that have been cached on another instance. VMing it, im sure you dont (could be wrong)

Also you never really mentioned it, but how are you going to handle the massive amounts of file sharing that will happen (between clients), as these can really clog up cheap network switches and increase the ping times dramatically for everybody if you havent thought it through correctly.

The main reason to VM the tourney server would be to have 6 instances of the same game running. Im not sure if you can run 6 of the same game servers at the same time. In one OS.
 
You can, you just choose a different port for the gameserver to run on. It will be in the configuration files for each game.
 
You can, you just choose a different port for the gameserver to run on. It will be in the configuration files for each game.

So would the process be somthting like this.

Game 1 running on port A
edit config and launch game
Game 2 running on port B
edit config and launch game
Game 3 running on port C

How would it look to the client side? Would the see games 1 2 3 or would they see one game and the server would "push" them into one of the available instances of the game?

As you can tell. Im new to this. Its a huger learning curve but Im sure I can manage I have a 3 month lead time.
 
gotcha with the bracket type play.

You can pre-save your config files for most games, and once you launch the console bring up a specific config. Or you can do it the way you mentioned. The clients would see all running servers on the specific port they search for, or all avail servers in a port range. The individual user would then pick which game to join.
 
gotcha with the bracket type play.

You can pre-save your config files for most games, and once you launch the console bring up a specific config. Or you can do it the way you mentioned. The clients would see all running servers on the specific port they search for, or all avail servers in a port range. The individual user would then pick which game to join.


I see, I see....(rubbing hands together) its starting to make sense.
 
How would it look to the client side?

Just like there is 3 servers running, the client will either see them via the name or ip:port, i.e

Server 1
Server 2
Server 3

or

192.168.1.1:27015
192.168.1.1:27016
192.168.1.1:27017

As you can tell. Im new to this. Its a huger learning curve but Im sure I can manage I have a 3 month lead time

Are you responsible for the whole thing, or just the running of the game servers in question?. Make sure to have a seperate data storage for all the relevant game patches as people will forget them, no matter how many times you warn them you wont be supplying them. As previously mentioned make sure you have enough network equipment to handle the amount of filesharing that will go across the network, its normally a lot more than the bandwidth that will be used for gaming.
 
Are you responsible for the whole thing, or just the running of the game servers in question?. Make sure to have a seperate data storage for all the relevant game patches as people will forget them, no matter how many times you warn them you wont be supplying them. As previously mentioned make sure you have enough network equipment to handle the amount of filesharing that will go across the network, its normally a lot more than the bandwidth that will be used for gaming.

every 2 tables (6 persons) will have a dlink 8 port switch that is 100Mb those will feed into our 24 port switches that wil have 1Gb connections that will feed into the core switch. The core switch will then connect to our Multi Port WAN router, and server row. Itll be fed by 2+ comcast cable modems for internet.
 
See with the 100mbit switches, that only equals about 10-11MBytes per second. Lets say that there is a 400MB game patch or a 4GB DVD on a seperate table's computer (and switch) then for 40-440 seconds, the uplink on the 2 switches will be completely saturated and its likely that the pings for all the people connected on the 2 tables in question will sky rocket upwards and the game potentially unplayble for the clients. This is just a single file transfer on your network, now imagine 300 peoples activity. It's one thing you need be very aware of.
 
See with the 100mbit switches, that only equals about 10-11MBytes per second. Lets say that there is a 400MB game patch or a 4GB DVD on a seperate table's computer (and switch) then for 40-440 seconds, the uplink on the 2 switches will be completely saturated and its likely that the pings for all the people connected on the 2 tables in question will sky rocket upwards and the game potentially unplayble for the clients. This is just a single file transfer on your network, now imagine 300 peoples activity. It's one thing you need be very aware of.


What would be your suggestion? A single connection from every person into the core switch?


I purchased a Cisco Catalyst 4006 switch. All tables switches will connect to it now rather then 2 48 ports, The cisco has 64Gbs of switching bandwith so I am sure itll meet the needs of the lan.


I might be able to put file transfers at a lower priority then game packets. But ill have to look into that.
 
What would be your suggestion?

I dont know, lol, i know thats not very helpful, but i've seen threads pop up on here before and file sharing and bandwidth was some of the things that were mentioned by some of the pro's who had set up lan parties before on here, if you could get a moderator to move this to the networking forum instead, i think you would get more helpful replies there.

All tables switches will connect to it now rather then 2 48 ports, The cisco has 64Gbs of switching bandwith so I am sure itll meet the needs of the lan.

But the problem still remains, if somebody on table 1 downloads a file from somebody on table 5, then both them 100Mbit switches uplinks (they were 100mbit wasnt they?) to the cisco will be saturated with traffic. During that time its very likely that table1 and table5's pings will shoot up, maybe even to 1000+ ms.
 
I might be able to put file transfers at a lower priority then game packets. But ill have to look into that.
Not with your dlink switches you won't.

Your solution is to get more bandwidth between tables. What modules does your 4006 have? The GigE cards for these are *not* cheap. If you haven't got one you could stuff it full (240 ports) of 100mbit cards and bond 4 ports out to a few 24-port switches to increase your port count instead, but going in cold I'd rather have a less capable but GigE core for your needs.

I would supplement the 4006 with a number of 48-port switches with at least 1 gigabit uplink to the core each (and most swithces should give you 2 you can bond), or if you have to get by with a 100mbit core switch, 4x100mbit bonded to 24 port switches instead (HP 2524 would be fine for this and dirt cheap).
 
Last edited:
To add to what Toytown said, you also need to be aware of the disk i/o need of that many players connected.

What are the complete specs of this server? How many drives does it have, how many spindles?
 
Go 1gb network everywhere....throw out your 100mb switchs at each table
Get a dual proc. mobo or build 2 machines to get your CPU store up to 40+GHZ to support the VMs
Have your RAM store to 16GB+ (ram is cheap so get as much as possible)
Build a NAS to support file copy needs (game patches, vm image store, etc) Raid size of 3-5TB
Build a SAN to support disk i/o and data speed needs for hosting VMs Raid size of 1-3TB
Setup two networks or VLANs to your 4006 (storage and production) to spread network load
300+ people will require alot of power please make sure you have enough (can turn into a problem)

So....
Build a test system i7/4GB/2 NICs/Raid some raptors together.....or what have you...and just test some things out....then invest the time into the full build.
 
Back
Top