Я хочу создать сервер, который будет использоваться для размещения виртуальных машин. Эти виртуальные машины будут играть разные роли, например:
- Сервер базы данных
- Сервер приложений JBoss
- Экземпляры разработки Eclipse (Java EE, Scala и т. д.)
Число пользователей, которые будут иметь доступ к серверу, будет около 5 человек одновременно. Операционная система может быть как Windows, так и Linux, что лучше работает. Пользователям понадобится графический / настольный доступ к экземплярам разработки Eclipse.
- Как мне выяснить, какие характеристики оборудования мне нужны для адекватной поддержки заданного количества пользователей и виртуальных машин? Есть ли какие-либо рекомендации по минимальным ресурсам на пользователя и т. д.?
- Если предположить, что разработчики физически находятся поблизости от сервера, будет ли возможно настроить многоместный ящик с несколькими наборами дисплей/клавиатура/мышь и назначить гостевую, клавиатуру, мышь и дисплейную головку каждому пользователю? Как будет спроектировано программное и аппаратное обеспечение этой установки?
решение1
Как мне выяснить, какие характеристики оборудования мне нужны для адекватной поддержки заданного количества пользователей и виртуальных машин? Есть ли какие-либо рекомендации по минимальным ресурсам на пользователя и т. д.?
Давайте рассмотрим различные варианты программного обеспечения, которое вы хотите запустить:
- Сервер базы данных
Если у вас есть один сервер базы данных, общий для всех разработчиков, вам следует запустить сервер базы данных с доступом ко многим ядрам ЦП и максимально возможному объему оперативной памяти. Важен быстрый (но не обязательно большой) диск. Размер диска будет зависеть от того, планируете ли вы хранить полные данные производственного масштаба для разработки или можете обойтись несколькими гигабайтами. Наличие узкого места в базе данных было бы Плохим, но имейте в виду, что рабочая нагрузка базы данных разработки может сильно отличаться от рабочей нагрузки производственной базы данных. Первая, скорее всего, будет меньше по масштабу и будет включать в себя более неэффективные запросы (пока запросы все еще разрабатываются, а данные исследуются специальными запросами), тогда как производственная база данных, скорее всего, будет иметь оптимизированные запросы, выполняемые к ней, и работать с огромными наборами данных, которые (надеюсь) в значительной степени кэшируются в оперативной памяти.
- Сервер приложений JBoss
JBoss в основном будет использовать процессорное время (при выполнении сервлетов), много оперативной памяти (потому что это Java) и пропускную способность сети. Как и база данных, продвинутый сервер приложений может выиграть от нескольких ядер. Лучший способ выяснить правильное количество виртуальных ядер для назначения — протестировать его при разном количестве ядер. Но, как правило, никогда не назначайте больше виртуальных ядер, чем у вас есть физических ядер.
- Среды разработки рабочего стола Eclipse
Это сложно. Сам Eclipse съест несколько сотен мегабайт оперативной памяти, но это число должно оставаться довольно статичным и стабильным после загрузки всех ваших плагинов. Поэтому вы можете проверить, сколько оперативной памяти необходимо в зависимости от того, сколько плагинов вы запускаете. Самые простые приложения Eclipse RCP могут использовать всего 10 или 20 МБ оперативной памяти, но полноценная среда JavaEE с инструментами GEF, инструментами управления версиями и инструментами баз данных может съедать более гигабайта памяти. Компиляция исходных файлов Java не так зависит от ЦП, как собственный код, но все равно может выиграть от использования нескольких ядер. Однако в целом ваши экземпляры Eclipse, вероятно, будут использовать относительно меньше ресурсов (ЦП, ОЗУ, диск), чем экземпляры базы данных или JBoss.
В целом, с пятью пользователями и несколькими серверными приложениями, которые известны своей жадностью к ресурсам, вы должны выглядеть высококлассно. Не называя брендов, что-то вроде: четырехъядерный процессор, 24 ГБ ОЗУ или больше, возможно, SSD или быстрый аппаратный RAID-массив HDD.
Если предположить, что разработчики физически находятся поблизости от сервера, будет ли возможно настроить многоместный ящик с несколькими наборами дисплей/клавиатура/мышь и назначить гостевую, клавиатуру, мышь и дисплейную головку каждому пользователю? Как будет спроектировано программное и аппаратное обеспечение этой установки?
Сначала немного вводной информации:здесьиздесь.
Вы быстро поймете, чтоесть много вариантови в этой области нет сильного лидера. Нет одного очевидного способа, который используют 99,9% людей. Некоторые вообще не используют виртуализацию. Некоторые используют несколько экземпляров Xorg. Некоторые используют Windows Multipoint Server. Некоторые используют ... вы поняли. Это определенно осуществимая конфигурация, особенно для всего пяти пользователей... плюс в том, что вам не нужно иметь настольные ПК для каждого человека, только монитор/клавиатура/мышь. Минус в том, что вам нужно иметь более мощный центральный сервер для поддержки всех пользователей, а конфигурация программного обеспечения более сложная.
Для конфигурации multiseat вам понадобится достаточно видеокарт, чтобы иметь достаточно портов для всех нужных вам мониторов. Вам также понадобится USB-концентратор для всех клавиатур и мышей.
Имейте в виду, что как только вы перейдете на многопользовательскую конфигурацию, вы вложите средства в графические карты (и, возможно, многопользовательское программное обеспечение), что привяжет вас к тому, что разработчики будут физически находиться на сервере. Поэтому, если вы позже решите привлечь другого разработчика, который работает в другой части света, он не сможет (легко) присоединиться к вашей существующей настройке, просто пододвигая стул и принося клавиатуру/мышь/монитор. Также может быть сложно расширить вашу настройку для большего количества разработчиков, как только вы достигнете лимита портов вашей видеокарты.