Здравствуйте, коллеги. Продолжаем освещать разработку UNetLab. В предыдущем посте я рассказывал о новой версии UNetLab 1.0 и анонсировал запуск видео курса. Но время идет и разработчики выпустили очередное значительное обновление — UNetLab 1.0.0-12. Ключевые новшества, которые будут описаны в этой статье:
1) Dynamic nodes connection
2) Интеграция с Docker
Если вас заинтересовала данная тема, добро пожаловать по кат.
Dynamic nodes connection
Функция, которую так ждали все пользователи UNetLab. Наконец-то стало возможным динамическое соединение узлов простым кликом мышки (в видео уроке ниже показан сам процесс).
Теперь нет необходимости создавать сети в ручную. Таким образом создание топологий в UNetLab стало таким же удобным, как и в GNS3.
Если вы еще не успели обновиться, то делается это элементарно:
apt-get update
apt-get install unetlab
Интеграция с Docker
Вообще говоря, реализация Docker-а в UNL еще сыровата и требует серьезной доработки, однако я не могу не затронуть эту тему, т.к. она очень важна. На сколько я знаю, даже новая версия GNS3 так же имеет поддержку Docker-а. У этой технологии очень большой потенциал.
Но прежде чем начать, думаю весьма логично сначала рассказать про сам Docker. Что же это такое? Вопрос не самый простой, но я, как обычно, постараюсь объяснить максимально просто. Описывать буду поверхностно и общими фразами, т.к. данный курс не про виртуализацию, да и я сам не считаю себя экспертом в этой области.
Итак, на сегодняшний день можно выделить три основных вида виртуализации:
1) Полная (аппаратная) виртуализация</4>
Данный тип виртуализации используют VirtualBox, VMware, KVM, QEMU и т.д. Смысл заключается в полной эмуляции компьютера со всеми аппаратными средствами. В данном случае гипервизор распределяет аппаратные средства между виртуальными машинами. И уже в эти виртуальные машины устанавливается Операционная система, практически как на полноценный физический компьютер. Виртуальные машины полностью изолированны друг от друга. Аппаратная виртуализация должна поддерживаться процессором. Многие наверно уже включали в биосе эту функцию. Это либо Intel VT (VT-x) либо AMD-V.
2) Виртуализация уровня операционной системы
Данный тип виртуализации используют OpenVZ, LXC и т.д. В этом случае уже не используется эмуляция аппаратных средств. Создается как бы копия большинства процессов исходной операционной системы. Эти процессы изолируются в отдельный контейнер (отсюда и название — контейнерная виртуализация). При этом в контейнере мы получаем практически полноценную операционную систему, куда могут быть установлены приложения. Такой подход дает выигрыш в производительности по сравнению с полной виртуализацией, т.к. нет необходимости эмулировать аппаратные средства. Вообще есть много плюсов и минусов использования того или иного типа виртуализации, но наш урок не об этом.
3) Виртуализация приложений
Это уже более высокий уровень абстракции, который позволяет еще больше экономить системные ресурсы. Зачем виртуализировать целую операционную систему если нам к примеру нужна только отдельная база данных? Или отдельный web — сервер? Docker решает этот вопрос. Он позволяет создавать копию не всех процессов исходной операционной системы, а копию отдельного приложения и изолировать его в контейнер. Это очень удобно при разработке и тестировании. При этом docker так же умеет виртуализировать операционную систему, как это делает OpenVZ или LXC.
Если есть желание познакомиться с docker поближе, то можете воспользоваться данным ресурсом.
Вкратце рассказал, что есть что. Повторюсь, что я описал все очень поверхностно. Я даже не затрагивал такие вещи, как виртуализация сети или виртуализация систем хранения данных. Вообще виртуализация очень интересная и обширная тема. Если у вас есть свободное время, то по возможности обучайтесь по этому направлению, т.к. без виртуализации сегодня уже никуда!
А мы, тем временем, переходим к docker-у. Кто-то может спросить: «Зачем нам docker, когда есть и QEMU, и внешние виртуалки в виде VMware и тот же VPCS?» Попробую ответить.
Если взять виртуалки в виде QEMU или VMware, то они всем хороши, но, потребляют слишком много ресурсов (память, процессор, жесткий диск).
Казалось бы, есть VPCS, который вообще ничего не потребляет. Но у него весьма скудный функционал. Нет telnet или ssh клиента, нет tcpdump-а, нет nslookup-а и многих других полезных функций. Т.е. на данный момент мы либо тратим много ресурсов, либо испытываем проблемы с нехваткой функционала. Docker призван решить наши проблемы. Docker позволяет запустить практически полноценную Linux подобную систему с довольно скромныными параметрами, как по оперативной памяти, так и по жесткому диску. При этом у нас огромный выбор готовых контейнеров с различными дистрибутивами или приложениями.
В этом уроке мы рассмотрим работу с одним из самых маленьких контейнеров для docker-а — BusyBox. Что это такое, можно почитать вот здесь. Если коротко, то это очень маленький дистрибутив, с очень маленькими системными требованиям. Что ж, начнем.
Для начала нам необходимо установить docker на сервер unetlab, т.к. по умолчанию он отсутствует. Подробная инструкция есть на официальном сайте UNL в разделе howto. Не вижу смысла дублировать здесь эту информацию.
После установки можем перейти к веб-интерфейсу unetlab. Кстати говоря, для подключения к контейнерам используется специальная утилита docker-а. Убедитесь что у вас в папке C:Program FilesUNetLab присутствуют необходимые файлы: docker.exe, docker_wrapper и win7_64bit_docker. Если нет, то вам нужно установить новый windows integration pack.
Какой же функционал нам дает этот экстремально малый дистрибутив? На самом деле довольно богатый. В busybox нам доступны:
— Клиент и сервер telnet
— Клиент и сервер tftp
— Клиент и сервер ftp
— HTTP сервер
— DNS сервер
— NTP сервер
— Такие утилиты как:
— ifconfig
— ip route
— traceroute
— arp
— nslookup
— netstat
Теперь давайте соберем простенькую схему и воспользуемся доступным нам функционалом. Предположим, что нам в лабораторной работе понадобилось протестировать такие сервисы как DHCP, HTTP, DNS, FTP и Telnet. Все это мы можем сделать с помощью Docker! Для настройки мы будем использовать следующие встроенные сервисы BusyBox:
udhcpd — для DHCP сервера
httpd — для WEB сервера
dnsd — для DNS сервера
ftpd — для FTP сервера
telnetd — для Telnet сервера
Весь процесс настройки можно посмотреть в данном уроке (смотреть с 10-й минуты):
Таким образом, мы подняли Telnet сервер, HTTP сервер, DHCP, FTP и DNS сервер на одном контейнере, образ которого весит всего 1 Мбайт! Впечатляет, правда? И мы рассмотрели всего лишь один образ, а их огромное кол-во с различным софтом внутри. Более того, вы можете с легкостью собрать свой собственный образ с нужным вам набором утилит. Наш урок не про это, но если вам стало интересно, то обязательно изучите эту возможность.
Резюмирую вышесказанное: можно с уверенностью сказать, что UNetLab продолжает динамичное развитие и становится все более функциональным и удобным средством для обучения.
Автор: cooper051