VMware Cloud Community
ypeace
Enthusiast
Enthusiast

Software test in a combined “real” and virtual environment

Hi,

I am writing my diploma thesis about the virtualization of a testing environment for a web application (web servers, db servers, search servers…).

I want to know how this is done by professionals…

\- I have difficulties to find information on how test clients can connect inside the virtual environment (especially if several instances of the environment are running parallel)

Right now I am thinking a proxy server as entrance for each instance and some kind of PAC (Proxy Auto-Configuration) to assign clients to a specific environment.

\- Another thing is the use of not virtualized servers inside the virtualized environment, the resulting IP address conflicts and routing problems (probably solved with some NAT solution) for example: image servers, databases or session servers

In general I didn’t have much luck in finding papers and stuff regarding this topics so any hind is appreciated. It’s important for me so that I don’t take credit for something someone else had already done…

An answer why I have no luck with my questions(not only in this forum) will be considered helpful as well Smiley Wink maybe you cant make sense out of my writing, don’t like my attitude or whatsoever Smiley Happy

Reply
0 Kudos
7 Replies
esiebert7625
Immortal
Immortal

You might check out some of these VMworld presentations...

http://www.vmware.com/vmtn/vmworld/

Reply
0 Kudos
SyverDude
Enthusiast
Enthusiast

For the network connection where you are connecting internal to the esx server. You will set up a "Virtual Switch" that is not connected to any physical switches. It is a mechanism in ESX server that allows connections within guests that are "Connected" to the same vertial switch that is only connected internally to the esx server.

\- Jon

Reply
0 Kudos
ypeace
Enthusiast
Enthusiast

thx Jon but I dont need the ESX Server for virtual Switches, they are used in Workstation and Server as well. And like i said, i don´t have problems with the basic network setup, its the kommunikation into/outward the virtual world considering the identical IP addresses (production servers outside and test servers inside).

I already got a network reachable from the outside. (client - virtual servers - real servers)

Reply
0 Kudos
SyverDude
Enthusiast
Enthusiast

I am not sure why it is required to have identical ip addresses. I am giving you information from the perspective of how we do things. You may be 3 layers deeper than I am but, in our environments for testing, we will create paralell (Very similiar) environments by cloning the production server to qa and then doing a similiar thing for a test environment. However, for testing in our environment, it is not considered important to have the same ip address as our production environment. the inword view that has an ip address will be set up with a different ip address. If all the application and database layers(not web) is needed to not be assessable from the outside, then a second nic would be connected internally to a vswitch that is not accessable to the outside as would all the other application and database servers for the environment.

For our purposes however, it is simply good enough to create seperate host and ip addresses for the test and qa environments.

You are probably several layers deeper than what we practically need.

What you are talking about could be done but would require extensive use of vlans in order to keep the common ip addresses from stepping on each other.

Sounds interesting . . .

Regards,

Jon

mbrkic
Hot Shot
Hot Shot

Virtual Lab Manager has a feature called "Network Fencing" that does some of the stuff you are talking about. Check out the User Guide for description:

http://www.vmware.com/pdf/labmanager_Users_Guide.pdf

Also, to set-up access between two networks with same IP subnets you will typically need network devices (routers/firewalls) that can do advanced NATs and that you can set up for double NAT'ing. Effectively you will need to NAT the IPs in question in both directions and then use the naming service to access the external addresses through the same names... The set-up will depend somewhat on your exact requirements. We did this at a client once, and I remember their networking guy having quite a blast with it...

Hope this helps...

ypeace
Enthusiast
Enthusiast

Thanks for your answers; I think I will go for the following setup:

I use one vm inside the testing environment to realize the “network fencing” feature on VMware Server (sadly I do not have the necessary Hardware to run ESX)

On this vm I run an http proxy and a static NAT server, two network interfaces, one with static IP in the vlan one with dynamic IP bridged to the outside world.

I use 1 VMware server for each environment, so I can copy the whole team (that’s what a setup of multiple virtual machines is called in Workstation) I hope that I don’t have any problems with the vm id…

Another advantage would be that I can use cheap hardware… and since it’s just for QA there will be no performance problems.

I think with some scripts even an automatic deployment would be possible.

I’am dreaming of a web interface where I just select the different versions of search&app code. The environment will be deployed on a free server, source code extracted from the CVS and the dynamic external proxy address returned to the user. Testers can just select one proxy from a list of running instances and start doing their job.

And of course all of this: easy to maintain.

I know that for this scenario ESX server with Lab Manager would be better and more fun… but that’s not my decision.

Maybe I post my progress somewhere here in the forum or start a dev blog ^^

Reply
0 Kudos
SyverDude
Enthusiast
Enthusiast

In real life and actual companies, your approach to using "Free", or approaches that utilize very low resources is the way to go because the practicle aspects of dev and qa mandate very low resources (Read no budget) is typical. That is if the company I work for is typical. as well, for these environments, the expectations for availability is not very high for dev and qa.

What ever solution you come up with, for reasons of simplicity to the end user, the extent that you can "Encapsulate" the complexities with the network and hide the implementation complexities, it becomes more and more approachable to your average Sys admin(Like myself Smiley Happy)

I think an ideal situation would allow you to "Clone" the entire environment into this encapsulated area so you can keep the same ip addresses.

Most likely some of the problems to overcome are things like typical network services that you may not want to put in your area like ad servers, DNS, DHCP, blah blah blah . . . the list goes on. Exposing actual production services to this environment where the "percieved risk" is very low for going agains live production servers, makes it all the simpler to set up the environment. Simplicity to the users viewpoint has a lot of merit.

Best of luck in your thesis. If you start a blog or something like this, post it so we can follow.

Kind Regards,

Jon

Reply
0 Kudos