虚拟机虚拟网络

时间:2009-01-14 22:11:27

标签: testing networking virtualization

我正在开发旨在在LAN上运行的软件。当在网络上运行多个软件实例时,它们会相互干扰。

我希望多个团队成员能够同时测试该程序。我该怎么做(不改变程序)。

我的第一个想法是创建一组在本地盒子上运行的虚拟机,这些机器联网在一起。重要的是我无法在真机外部生成网络流量。

哪种虚拟化软件是完成此任务的最佳选择?如何配置软件以这种方式运行?

7 个答案:

答案 0 :(得分:4)

就个人而言,我喜欢VMWare Server ......它几乎可以开箱即用,它可以很好地处理vm网卡,允许它们被视为物理设备(就DHCP等而言)。

至于配置软件,就机器而言,它们是真实的。如果您为它们分配静态IP,它们也可能是真正的机器 - 尽管您会发现通过远程桌面管理它们更容易,而不是使用vmware控制台界面。

编辑:我实际上在生产环境中使用VMWare Server,在同一个物理盒上运行虚拟Web服务器,虚拟数据库服务器和虚拟应用服务器。 VMWare还附带了一个可以虚拟化物理机器的强大转换器工具。这使我可以更轻松地将我的服务器从三台物理机器整合并维护到一台。

编辑2:它也是免费的;)

答案 1 :(得分:3)

我建议VirtualBox。我认为它设置的虚拟网卡可以连接到由名称标识的虚拟网络,在那里他们可以看到彼此。

用户手册包含各种方案的详细网络说明。来自手册:

  

6.6。内部网络   内部网络与主机类似   VM中的接口组网   可以直接与之沟通   外面的世界。但是,“外面   世界“仅限于其他虚拟机   连接到同一个内部网络。

它在几个平台上运行:windows linux osx solaris。

答案 2 :(得分:1)

我使用Sun xVM ....默认情况下,网络连接在10.x网络上,在你的实际ip后面。所以我不确定这是否会干扰网络上运行的其他实例。但是它是免费的并且运行得相当好,如果你使用64位操作系统并且有处理器来支持它,则支持hyper-v启动。

答案 3 :(得分:1)

几乎任何虚拟化软件都可以让您配置各种类型的网络。

例如,VMware提供以下网络类型:

  • Bridged - 计算机在物理局域网上显示为主机(不是您想要的)
  • NAT - 共享您的PC的IP(如果您想允许您的应用程序访问物理LAN / Internet)。
  • 仅限主机 - 仅对VM和您的PC可见的专用网络。如果您想允许Internet / LAN访问,则需要在主机PC上运行其他软件。
  • 自定义 - 如果您需要运行多个虚拟网络来测试防火墙/网络服务器/ vpn组合配置等内容

在简单性和最少配置方面,VMWare Workstation可能是理想的选择。它非常易于使用,设置轻而易举。许可成本是非常合理的(单个许可证为190美元,5个许可证为900美元)然后为了获得许可我自己会为每个团队成员建议一个Microsoft Technet订阅(如果他们都是开发人员,那么你有MSDN然后你已经被覆盖了)

我建议使用更便宜的替代品用于爱好使用,但如果您处于时间就是金钱的商业环境中,那么VMware将非常非常快地为自己的生产率提高付出代价。

最后,如果成本是一个问题,那么可能能够使用单个VMware许可证来配置计算机,然后使用免费的VMware播放器运行它们,但我不是确定它是否具有VMware Workstation中存在的所有相同的沙盒网络功能。

答案 4 :(得分:1)

最近有很多人在讨论linux网络命名空间,这是一种创建轻量级虚拟主机的方法。我相信这也是解决问题的一种方法。

Mininet(http://mininet.org/)使用它来创建模拟网络,它的效果非常好。我刚刚开始使用网络命名空间进行测试,而且内存使用率非常低,性能非常好。

另请参阅http://www.opencloudblog.com/?p=66

我从最后一个链接中获取了一系列命令,并创建了一个测试设置:

#!/bin/bash
# add the namespaces
ip netns add ns1
ip netns add ns2
# create the switch
BRIDGE=ovs-test
ovs-vsctl add-br $BRIDGE
#
#### PORT 1
# create an internal ovs port
ovs-vsctl add-port $BRIDGE tap1 -- set Interface tap1 type=internal
# attach it to namespace
ip link set tap1 netns ns1
# set the ports to up
ip netns exec ns1 ip link set dev tap1 up
#
#### PORT 2
# create an internal ovs port
ovs-vsctl add-port $BRIDGE tap2 -- set Interface tap2 type=internal
# attach it to namespace
ip link set tap2 netns ns2
# set the ports to up
ip netns exec ns2 ip link set dev tap2 up

# add external port eth11
ovs-vsctl add-port $BRIDGE eth11

# configure ip addresses
ip netns exec ns1 ifconfig tap1 192.168.201.1/24
ip netns exec ns2 ifconfig tap2 192.168.201.2/24

上述命令基本上创建了两个连接到Open vSwitch网桥的主机。两个主机相互连接,并通过我的eth11以太网适配器连接到外部世界。对外界的衔接是完全可选的。

我可以像这样在虚拟主机之间运行ping和iperf(输出有点乱,但我认为有可能得到这个想法):

# ip netns exec ns1 iperf -s &
[1] 22158
# ------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------

# ip netns exec ns2 iperf -c 192.168.201.1
------------------------------------------------------------
Client connecting to 192.168.201.1, TCP port 5001
[  4] local 192.168.201.1 port 5001 connected with 192.168.201.2 port 43469
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.201.2 port 43469 connected with 192.168.201.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  17.3 GBytes  14.9 Gbits/sec
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  17.3 GBytes  14.9 Gbits/sec
# 

答案 5 :(得分:0)

如果你在Windows或Linux上运行,VMWare Server(另一张海报提到)和VirtualBox都应该做你想做的事,而且他们都是免费的。如果您愿意,VirtualBox也可以在Mac OS X和Solaris上运行。

答案 6 :(得分:-1)

在我之前的项目中,来自托管公司的人告诉我他们正在使用VMWare配置webfarm,但我不知道如何做到这一点。