Виртуальная сеть виртуальных машин - PullRequest
1 голос
/ 15 января 2009

Я занимаюсь разработкой программного обеспечения, предназначенного для работы в локальной сети. Когда в сети запущено несколько экземпляров программного обеспечения, они мешают друг другу.

Я хочу, чтобы несколько членов команды могли одновременно протестировать программу. Как бы я это сделал (без изменения программы).

Моей первой мыслью было бы создать группу виртуальных машин, работающих на локальном компьютере, с объединением этих машин в сеть. Важно то, что я не могу генерировать сетевой трафик за пределами моей реальной машины.

Какое программное обеспечение для виртуализации будет лучшим выбором для решения этой задачи? Как мне настроить программное обеспечение для такого поведения?

Ответы [ 7 ]

4 голосов
/ 15 января 2009

Лично мне нравится VMWare Server ... Он работает практически из коробки, и очень хорошо обрабатывает сетевые карты vm, позволяя рассматривать их как физические устройства (с точки зрения DHCP). и т.д.).

Что касается настройки программного обеспечения, то, что касается машин, они реальны. Если вы назначите им статические IP-адреса, они также могут быть реальными машинами - хотя вам будет проще управлять ими с помощью удаленного рабочего стола, чем использовать интерфейс консоли vmware.

РЕДАКТИРОВАТЬ: Я на самом деле использую VMWare Server в производственной среде, на которой виртуальный веб-сервер, сервер виртуальных БД и сервер виртуальных приложений работают в одном физическом боксе. VMWare также поставляется с отличным конвертером, который может виртуализировать физическую машину. Это значительно упростило мне консолидацию и обслуживание моих серверов с трех физических машин до одной.

РЕДАКТИРОВАТЬ 2: это тоже бесплатно;)

3 голосов
/ 15 января 2009

Я бы предложил VirtualBox . Я думаю, что виртуальные сетевые карты, которые он устанавливает, могут быть подключены к виртуальной сети, идентифицируемой по имени, где они могут видеть друг друга.

Руководство пользователя содержит подробные инструкции по работе с сетью для различных сценариев. Из руководства:

6,6. Внутренняя сеть Внутренняя сеть похожа на хост интерфейс сети в том, что виртуальная машина может напрямую общаться с внешний мир. Тем не менее, "снаружи мир "ограничен другими виртуальными машинами, которые подключиться к той же внутренней сети.

Работает на нескольких платформах: windows linux osx solaris.

1 голос
/ 10 июня 2014

В последнее время много людей говорят о сетевых пространствах имен 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. Оба хоста связаны друг с другом, а также с внешним миром через мой ethernet-адаптер 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
# 
1 голос
/ 15 января 2009

Практически любое программное обеспечение для виртуализации позволит вам настроить различные типы сетей.

VMware, например, предлагает следующие типы сетей:

  • Bridged - машина отображается как физическая локальная сеть (не то, что вам нужно)
  • NAT - разделяет IP вашего ПК (если вы хотите разрешить вашему приложению доступ к физической локальной сети / Интернету)
  • Только для хоста - частная сеть, видимая только виртуальным машинам и вашему ПК. Если вы хотите разрешить доступ к Интернету / локальной сети, вам потребуется запустить дополнительное программное обеспечение на главном ПК.
  • Пользовательский - если вам нужно запустить несколько виртуальных сетей для тестирования таких вещей, как комбинированные конфигурации брандмауэра / веб-сервера / vpn и т. П.

С точки зрения простоты и минимальной конфигурации, рабочая станция VMWare, вероятно, является идеальным выбором. Он очень прост в использовании и прост в настройке. Затраты на лицензирование очень разумны (190 долларов США за одну лицензию или 900 долларов США за 5 лицензий), а затем, чтобы покрыть себя за лицензирование, я бы предложил подписку Microsoft Technet для каждого члена команды (т. Е. Если они все разработчики и у вас MSDN, тогда ты уже накрылся)

Существуют более дешевые альтернативы, которые я бы порекомендовал для хобби, но если вы находитесь в коммерческой среде, где время - деньги, VMware окупит себя очень быстро, очень быстро.

Наконец, если стоимость - это проблема, тогда вы можете обойтись без единой лицензии VMware для настройки компьютеров, а затем использовать бесплатный проигрыватель VMware для их запуска, однако я не уверен если он имеет все те же функции изолированной сети, присутствующие в VMware Workstation.

1 голос
/ 15 января 2009

Я использую Sun xVM .... по умолчанию сеть работает в сети 10.x, за вашим реальным IP Так что я не уверен, будет ли это мешать другим экземплярам в сети или нет. Но он бесплатный и работает довольно хорошо, и поддерживает Hyper-V для загрузки, если вы используете 64-битную ОС и имеете процессор для его поддержки.

0 голосов
/ 15 января 2009

Если вы работаете в Windows или Linux, VMWare Server (упомянутый другим автором) и VirtualBox должны делать то, что вы хотите, и они оба бесплатны. VirtualBox также работает на Mac OS X и Solaris, если вы так склонны.

0 голосов
/ 15 января 2009

В моем предыдущем проекте ребята из хостинговой компании сказали мне, что они использовали VMWare для настройки веб-фермы, но я не знаю, как это сделать.

...