views:

348

answers:

6

I am developing software that is designed to run on a LAN. When multiple instances of the software are run on the network, they interfere with each other.

I want multiple team members to be able to test the program simultaneously. How would I do so (without altering the program).

My first thought would be to create a bunch of virtual machines running on a local box, with those machines networked together. The important thing is that I cannot generate network traffic outside of my real machine.

Which virtualization software would be the best choice to accomplish this task? How would I configure the software to behave in this manner?

+4  A: 

Personally, I like VMWare Server... It pretty much works out of the box, and it handles the vm network cards very well, allowing them to be treated as physical devices (in terms of DHCP etc).

As for configuring the software, well as far as the machines are concerned, they are real. If you assign them static IPs, they may as well be real machines - although you'll find it easier to administer them by remote desktop rather than use the vmware console interface.

EDIT: I actually use VMWare Server in a production environment, running a virtual webserver, virtual DB server and a virtual app server on the same physical box. VMWare also comes with a great converter tool that can virtualize a physical machine. This made it much simpler for me to consolidate and maintain my servers from three physical machines down to one.

EDIT 2: It's free too ;)

Andrew Rollings
VMWare ESXi is also free now, and a much better choice for a production enviroment ;)
sascha
Yeah, I saw that... I think I may well look into that for my next server. I wonder if it installs on anything, or whether it only supports limited hardware configurations.
Andrew Rollings
A: 

In my previous project the guys from the hosting company tell me that they were using VMWare to configure the webfarm, but I don't have any clue of how to do this, though.

Jaime Febres
+1  A: 

I use Sun xVM.... it does the networking by default to be on a 10.x network, nat'd behind your actual ip. So I'm not sure if that'd interfere with other instances running out on the network or not. But it's free and runs fairly well, and supports hyper-v to boot if you're on a 64bit os and have the processor to support it.

Arthurdent510
A: 

If you're running on Windows or Linux, VMWare Server (mentioned by another poster) and VirtualBox should both do what you want, and they're both free. VirtualBox also runs on Mac OS X and Solaris, if you're so inclined.

MattK
+2  A: 

I would suggest VirtualBox. I think virtual network cards it sets up can be connected to a virtual network identified by name, where they can see each other.

The user manual has detailed networking instructions for various scenarios. From the Manual:

6.6. Internal networking Internal Networking is similar to host interface networking in that the VM can directly communicate with the outside world. However, the "outside world" is limited to other VMs which connect to the same internal network.

It runs on several platforms: windows linux osx solaris.

feihtthief
+1  A: 

Almost any peice of Virtualization software will enable you to configure various types of networking.

VMware for example offers the following network types:

  • Bridged - machine appears as a host on the physical lan (not what you want)
  • NAT - shares your PC's IP (if you want to permit your application to access the physical LAN/internet)
  • Host-only - private network only visible to the VMs and your PC. If you want to permit internet/LAN access you'll need to run additional software on the host PC.
  • Custom - if you need to run multiple virtual networks to test things like firewall/webserver/vpn combo configurations and the like

In terms of simplicity and least configuration, VMWare Workstation is probably the ideal choice. It's very easy to use and setup is a breeze. Licensing costs are very reasonable ($190 for a single license, or $900 for 5 licenses) and then to cover yourself for licensing I'd suggest a Microsoft Technet subscription for each team member (Tho if they're all developers and you have MSDN then you're already covered)

There are cheaper alternatives that I'd recommend for hobby use, but if you're in a commercial environment where time is money then VMware will pay for itself in productivity gains very, very quickly.

Lastly, if cost is an issue then you might be able to get away with a single VMware license for configuring the machines and then using the free VMware player to run them, however I'm not sure if it has all the same sandboxed networking features present in VMware Workstation.

sascha