From fa0db0f0c9c039280407a00f94a9f29e534621bf Mon Sep 17 00:00:00 2001 From: dannc Date: Fri, 22 Apr 2022 10:37:56 +0700 Subject: [PATCH] fix homework 5.1 --- src/homework/05-virtualization/5.1/readme.md | 87 ++++++++++++++++---- 1 file changed, 70 insertions(+), 17 deletions(-) diff --git a/src/homework/05-virtualization/5.1/readme.md b/src/homework/05-virtualization/5.1/readme.md index 7935efa..e545eea 100644 --- a/src/homework/05-virtualization/5.1/readme.md +++ b/src/homework/05-virtualization/5.1/readme.md @@ -1,22 +1,21 @@ -Выполнение [домашнего задания](https://github.com/netology-code/virt-homeworks/blob/master/05-virt-01-basics/README.md) +Выполнение [домашнего задания](https://github.com/netology-code/virt-homeworks/blob/virt-11/05-virt-01-basics/README.md) по теме "5.1. Основы виртуализации". ## Q/A ### Задача 1 -> Вкратце опишите, как вы поняли - в чем основное отличие паравиртуализации и виртуализации на основе ОС. +> Опишите кратко, как вы поняли: в чем основное отличие полной (аппаратной) виртуализации, паравиртуализации и виртуализации на основе ОС. -Главное отличие паравиртуализации от виртуализации на основе ОС в том, что в качестве гостевой операционной системы используются ОС с модифицированным ядром, -которые взаимодействуют с гипервизором посредством определённого API. - -При этом виртуализация на основе ОС предоставляет гостевой ОС доступ -непосредственно до системных вызовов ядра хостовой операционной системы, при этом изолируя данные вызовы. -В таком случае не нужна модификация операционной системы для использования внутри виртуальных машин. +Главное отличие данных типов вирутализации в том, как именно ОС внутри виртуальной машины взаимодействует с реальным аппаратным комплексом: +1. Полной (аппаратная) виртуализация - это полноценная операционная система, которая имеет непосредственный доступ к "железу". +2. Паравиртуализация реализует взаимодействие через прослойку-гипервизор, которая имеет специальное API для гостевой ОС, + но при этом обращается к аппаратной части через ядро хостовой операционной системы. +3. Виртуализации на основе ОС реализует непосредственное взаимодействие гостевой ОС через системные вызовы ядра хостовой операционной системы ### Задача 2 -> Выберите тип один из вариантов использования организации физических серверов, в зависимости от условий использования. +> Выберите один из вариантов использования организации физических серверов, в зависимости от условий использования. > > Организация серверов: > * физические сервера @@ -25,8 +24,8 @@ > > Условия использования: > * Высоконагруженная база данных, чувствительная к отказу -> * Различные Java-приложения -> * Windows системы для использования Бухгалтерским отделом +> * Различные web-приложения +> * Windows системы для использования бухгалтерским отделом > * Системы, выполняющие высокопроизводительные расчеты на GPU > > Опишите, почему вы выбрали к каждому целевому использованию такую организацию. @@ -37,13 +36,14 @@ риски на стабильность работы системы. При этом во взаимодействии между гостевой ОС и хостом есть дополнительные расходы, что тоже может быть очень критично в высоконагруженных системах. -2. Различные Java-приложения +2. Различные web-приложения В данном случае лучше всего использовать виртуализацию уровня операционной системы. Это обосновано тем, -что по задаче приложения имеют различное назначение. При этом они должны запускаться в определённом окружении (желательно одинаковым для каждого приложения), +что по задаче приложения имеют различное назначение (нет уточнений про отказоусточивость, ожидаемую нагрузку, скалируемость и т.п.). +При этом они должны запускаться в определённом окружении (желательно одинаковым для каждого приложения), а для безопасности, данные приложения должны быть изолированы. Таким образом вируализация уровня ОС подходит под данную задачу. -3. Windows системы для использования Бухгалтерским отделом +3. Windows системы для использования бухгалтерским отделом В данном случае лучше всего будет использовать паравиртуализацию, что обеспечит изолированность систем с минимальной потерей скорости взаимодействия пользователей с системами. @@ -56,7 +56,60 @@ ### Задача 3 -> Как вы думаете, возможно ли совмещать несколько типов виртуализации на одном сервере? Приведите пример такого совмещения. +> Выберите подходящую систему управления виртуализацией для предложенного сценария. Детально опишите ваш выбор. -Да, совмещение нескольких типов виртуализации возможно. Например, на одну машину возможно установить `VirtualBox` для полной или пара-виртуализации -и `Docker` для виртуализации на уровне ОС. \ No newline at end of file +1. 100 виртуальных машин на базе `Linux` и `Windows`, общие задачи, нет особых требований. Преимущественно `Windows` based инфраструктура, требуется реализация программных балансировщиков нагрузки, репликации данных и автоматизированного механизма создания резервных копий. + +Для данного сценария наиболее предпочтительно будет использование решение `Microsoft Hyper-V`. Выбор обсловлен следующими факторами: +* `Преимущественно Windows based инфраструктура`, а значит лучшим выбором здесь будет решение, которое нативно умеет поддерживать данную ОС. + При этом, `Hyper-V` имеет поддержку и [Linux-систем](https://www.windowscentral.com/how-run-linux-distros-windows-10-using-hyper-v). +* "Из коробки" имеет поддержку репликации и миграции виртуальных машин, а значит подходит под требование резервного копирования и балансировки нагрузки. +* Так как больше нет никаких особых требований, то в этом случае более низкий порог вхождения для инженеров в данную технологию будет плюсом. + +2. Требуется наиболее производительное бесплатное open source решение для виртуализации небольшой (20-30 серверов) инфраструктуры на базе Linux и Windows виртуальных машин. + +В данном сценарии наиболее подходящей технологией является `Xen`: +* `Xen` - это open source решение. +* Имеет поддержку гостевых ОС как `Linux`, так и `Windows`. Для каждого типа ОС есть свой оптимальный режим виртуализации. + Данные режимы можно использовать одновременно на одном хосте. +* Имеет высокую производительность. +* Каждая виртуальная машина утилизирует только точно выделенные ресурсы без влияния на производительность других соседних виртуальных машин. + Подобная проблема есть в `KVM`, поэтому здесь предпочтение отдаётся `Xen`. + +3. Необходимо бесплатное, максимально совместимое и производительное решение для виртуализации Windows инфраструктуры. + +В данном случае стоит использовать `Microsoft Hyper-V Server`: +* Является бесплатной операционной системой +* Разработан для нативной поддержки виртуальных машин на базе Windows, а значит имеет максимальную совместимость и производительность для текущих потребностей. + +4. Необходимо рабочее окружение для тестирования программного продукта на нескольких дистрибутивах `Linux`. + +Для данного сценария подойдёт `KVM`. Из плюсов этого выбора можно выделить: +* Хорошая поддержка `Linux` в качестве гостевых ОС +* Близкая к нативной производительность, что полезно для тестирования, так как минимизирует различные накладные расходы на взаимодействие с виртуальной машиной. +* Есть возможность построить мониторинг всех виртуальных машин для тестов на хосте, то есть считывать различные метрики приложений из хостовой ОС. +* В моём понимании тестирование продукта - это краткосрочный процесс, который предполагает, + что виртуальная машина поднимается на короткий срок, и после окончания тестирования удаляется. + Исходя из этого понимания, появляется преимущество в виде создания шаблонов виртуальных машин для тестирования в формате ISO-образа, + которые могут использоваться как для развёртывания ВМ внутри стенда, так для использования людьми (например, специалистами QA-отдела или разработки). + +### Задача 4 +> Опишите возможные проблемы и недостатки гетерогенной среды виртуализации (использования нескольких систем управления виртуализацией одновременно) и что необходимо сделать для минимизации этих рисков и проблем. + +Самая большая проблема гетерогенной среды виртуализации - это высокие расходы на поддержку и управления нескольких систем управления виртуальными машинами одновременно. +То есть, для подобного решения необходимо сразу несколько инженеров, которые будут специалистами в своей конкретной области/технологии. + +Ещё одна проблема, которая может возникнуть - проблемы перемещения данных между виртуальными машинами, работающими в разных гипервизорах. + +Для минимизации проблем, в общем случае, необходимо стараться максимально стандартизировать подход к виртуализации внутри компании. + +> Если бы у вас был выбор, то создавали бы вы гетерогенную среду или нет? Мотивируйте ваш ответ примерами. + +Для выбора решения необходимо на этапе построения всей инфраструктуры решить множество вопросов: +* определить, какие решения есть на рынке виртуализаций и сделать некие прогнозы на будущее +* сделать анализ рынка вакансий, определить "популярность" решений вирутализации +* определить конкретные требования к инфрастуктуре: какие системы/сервисы будут разворачиваться на виртуальных машинах, + кто будет пользовать данными системами и т.п. +* определить требования к безопасности + +Только после ответа на данные вопросы можно решить, использовать ли единое решение для построения виртуализации, либо совместить решения.