- PVSM.RU - https://www.pvsm.ru -

Где размещать контейнеры: на выделенном сервере или на виртуальной машине?

Размещая контейнеры Docker на выделенных серверах, организации получают переносимость и стабильность. Эксперт Кристофер Тоцци объясняет, почему выбор иногда стоит делать в пользу виртуальных машин.

Для чего вам могут понадобиться контейнеры, вы уже понимаете. Но знаете ли вы, какой тип сервера больше для них подходит? Действительно ли для хостинга [1] платформ наподобие Docker или любой другой аналогичной среды по управлению контейнерами лучше пользоваться выделенными серверами, чем виртуальными машинами?

Ответ, естественно, зависит от множества параметров. В статье рассматриваются такие параметры, а также аргументы за и против использования контейнеров на выделенных серверах или виртуальных машинах. Я сосредоточусь на Docker, но выводы в целом распространяются на любую платформу по управлению контейнерами.

Где размещать контейнеры: на выделенном сервере или на виртуальной машине? - 1

Выделенный сервер или виртуальная машина?

Сравнение плюсов и минусов выделенных серверов и виртуальных машин для хостинга [1] программной среды — задача совсем не новая. Технические руководители об этом задумались еще когда виртуализация стала широко применяться в дата-центрах в 2000-х годах, задолго до появления Docker.

Вкратце, основные преимущества выделенного сервера следующие:

  • Сравнительно высокая скорость [2]. Ресурсы системы не расходуются на эмуляцию аппаратных средств;
  • Ресурсы оборудования используются в полном объеме, поскольку оно не простаивает в период высокого спроса;
  • Упрощенное администрирование. Инфраструктура содержит меньше хостов, сетей и дисков.

С виртуальными машинами, в свою очередь, предлагают следующие преимущества:

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

Но с использованием виртуальных машин сопряжены и некоторые недостатки [3]. К ним относятся следующие:

  • Ресурсы сервера могут использоваться не в полном объеме. Например, если вы выделите на сервере место под хранение образа виртуальной машины, то этот объем памяти уже нельзя будет использовать для других целей, даже если виртуальная машина, связанная с диском, не использует весь выделенный объем.
  • С помощью виртуальных машин нельзя работать с физическим оборудованием напрямую. К примеру, если вы захотите, чтобы вместо виртуальной машины вычислительные операции выполнялись GPU, то ничего не получится — по крайней мере, простыми способами — так как виртуальная машина работает вне связи с соответствующей средой сервера.
  • Как правило, виртуальные машины работают не так быстро, как физические серверы, поскольку их ресурсы расходуются на эмуляцию аппаратного средства для виртуального сервера.

Для преодоления этих ограничений системные администраторы могут прибегать к некоторым приемами на базе современных платформ виртуализации. Например, можно создать динамический образ диска [4], который будет расширяться в объеме по мере использования виртуальной машиной. То есть, объем памяти не будет заблокирован, пока он на самом деле не потребуется пользователю. Можно использовать транзитную передачу, чтобы в определенных случаях виртуальная машина имела прямой доступ к физическому оборудованию.

Тем не менее, эти уловки не всегда действенны. Применить такой подход можно не на всех видах хостов и гостевых операционных систем, и, в целом, все это вытекает в дополнительную нагрузку для администратора. Если для приложений, которыми вы собираетесь пользоваться, нужен непосредственный доступ к физическому оборудованию, то лучше сразу их запустить на таком оборудовании.

Либо вы можете запустить приложения в контейнерах [5] на физическом сервере, и у вас получится убить сразу двух зайцев.

Квадратура круга: как работают контейнеры на выделенном сервере

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

Контейнеры на выделенных серверах позволяют:

  • Получить доступ к аппаратным средствам, не прибегая к методам транзитной передачи. Приложение работает на той же операционной системе, что и сервер.
  • Эффективно использовать ресурсы системы. Хотя и можно ограничить ресурсы, отведенные контейнеру для вычисления, хранения и передачи данных, как правило, не требуется выделять эти ресурсы исключительно для работы одного конкретного контейнера. То есть сервер может распределять системные ресурсы по необходимости.
  • Получить производительность выделенного сервера для приложений из-за отсутствия уровня аппаратной эмуляции [6], отделяющей их от хост-сервера.

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

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

В целом контейнеры на выделенном сервере позволяют впихнуть невпихуемое решить нерешаемую задачу. Вы получаете и плюсы выделенного сервера: скорость и непосредственный доступ к физическому серверу — и преимущества виртуальных машин: переносимость и возможность изоляции программ.

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

Учитывайте следующие недостатки хостинга [1] контейнера на выделенном сервере, а не на виртуальной машине:

  • Обновить физический сервер сложно. Если вы захотите заменить сервер на новый, то придется воссоздавать программную среду контейнера с нуля на новом сервере. Если бы программная среда контейнера входила в образ виртуальной машины, то можно было бы просто переместить его на новый сервер.
  • Большинство из облачных сервисов настаивают на использовании виртуальных машин. Есть и облачный хостинг [1] с выделенными серверами, например, OnMetal от Rackspace или Bare Metal Cloud Service от Oracle. Но в общем и целом, работа с облаком подразумевает использование виртуальных машин. Если захотите воспользоваться облачной платформой для работы контейнеров, то придется использовать виртуальные машины.
  • Контейнеры поддерживают не все настройки оборудования и программного обеспечения. В наше время можно разместить почти любой вид операционной системы на платформе виртуализации наподобие VMware или на KVM, работающей почти на всех операционных системах и серверах. Но возможности Docker ограничены. При размещении на физическом сервере он работает только на Linux и некоторых серверах Windows. Это означает, что если ваш выделенный сервер [1] использует, скажем, Windows Server 2012, а Docker его сейчас не поддерживает, и вы хотите разместить на нем Docker, то придется установить виртуальную машину в дополнение к Windows-серверу, чтобы соблюсти требования работы Docker.
  • Нельзя запустить Linux-контейнеры на Windows-сервере и наоборот. Этот недостаток означает, что контейнеры Linux [7] работают только на Linux-серверах. Допустим, у вас выделенный сервер [1] с Windows, и вы хотите запустить на нем контейнер Docker, чтобы разместить приложение, разработанное для Linux. Придется установить виртуальную машину Linux на Windows-сервере и использовать ее в качестве среды для размещения Docker.
  • На выделенном сервере нельзя вернуться к предыдущему состоянию. На большинстве современных платформ виртуализации реализована очень полезная функция: можно сделать снапшот виртуальной машины и вернуться к тому состоянию позже, если необходимо. На выделенном сервере так сделать не получится (технически, может быть, и получится использовать функции резервного копирования самой операционной системы или файловой системы, но этот процесс уже не такой гладкий, как на виртуальной машине). И в целом снапшоты, и возврат к предыдущему состоянию для контейнеров понятия бессмысленные. Контейнеры сами по себе нечто эфемерное, у них нет предыдущего состояния. В конце концов, самый простой возврат к предыдущему состоянию можно реализовать только на виртуальной машине.

Заключение

Не просто решить, размещать контейнеры на выделенном сервере или на виртуальной машине. Придется сопоставить все доводы «за» и «против», чтобы определить, какой вариант больше подходит для вашей организации.

Отрадно, что вне зависимости от того, где размещать контейнеры, вы все равно получите пользу от основных свойств контейнеризации, в том числе переносимость приложений, масштабируемость и динамичность.

Если Вы выбираете виртуальный сервер или выделенный сервер [1] для Ваших проектов, попробуйте воспользоваться каталогами VDS.menu [8] и DEDICATED.menu [9].

Автор: HOSTING.cafe

Источник [10]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/virtualizatsiya/238807

Ссылки в тексте:

[1] хостинга: https://www.reg.ru/?rlink=reflink-717

[2] высокая скорость: http://searchcloudcomputing.techtarget.com/tip/Bare-metal-cloud-means-more-flexibility-at-a-cost

[3] некоторые недостатки: http://searchnetworking.techtarget.com/tip/Virtual-network-appliances-Benefits-and-drawbacks

[4] образ диска: http://searchvirtualdesktop.techtarget.com/tip/Four-virtual-disk-formats-every-VDI-admin-needs-to-know

[5] запустить приложения в контейнерах: http://www.computerweekly.com/feature/Docker-storage-101-How-storage-works-in-Docker

[6] аппаратной эмуляции: http://searchservervirtualization.techtarget.com/definition/hardware-emulation

[7] контейнеры Linux: http://searchitoperations.techtarget.com/news/450297179/IT-pros-contend-with-Linux-container-complexity

[8] VDS.menu: https://vds.menu/

[9] DEDICATED.menu: https://dedicated.menu/

[10] Источник: https://habrahabr.ru/post/319438/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best