0

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

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

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

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

4

7 回答 7

4

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

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

编辑:我实际上在生产环境中使用 VMWare 服务器,在同一个物理机器上运行虚拟网络服务器、虚拟数据库服务器和虚拟应用程序服务器。VMWare 还附带了一个很棒的转换器工具,可以虚拟化物理机。这让我可以更轻松地整合和维护我的服务器,从三台物理机减少到一台。

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

于 2009-01-14T22:15:19.623 回答
3

我会建议VirtualBox。我认为它设置的虚拟网卡可以连接到按名称标识的虚拟网络,在那里它们可以互相看到。

用户手册有针对各种场景的详细组网说明。从手册:

6.6. 内部网络 内部网络类似于主机接口网络,因为虚拟机可以直接与外部世界通信。但是,“外部世界”仅限于连接到同一内部网络的其他 VM。

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

于 2009-01-14T22:44:27.240 回答
1

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

于 2009-01-14T22:22:54.150 回答
1

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

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

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

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

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

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

于 2009-01-15T05:57:59.177 回答
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
# 
于 2014-06-10T14:12:21.910 回答
0

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

于 2009-01-14T22:41:42.410 回答
-1

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

于 2009-01-14T22:18:01.553 回答