Правильно используем "облачные" технологии, или уверенный "шаг" в Clouding!:) Часть-I
Начало...:
Вы несомненно чувствуете современную тенденцию в области облачных технологий, упрятать в "небо" всё!:) - от электронной почты и....до приложений, хранить в Сети, т.е. в этих самых "ненужных" облаках:). Спрос, всегда рождает предложение, и в настоящее время за реализацию подобных решений взялись не только раскрученные коммерческие компании и мега-корпорации..., но и независимые разработчики свободного ПО (Ура...дождались, скупая слеза линуксоида упала на клаву...:) ). Его спектр в данной области сейчас широк (как - Днепр, Волга и Енисей, великие славянские реки:) ) — от PaaS-фреймворков и средств автоматизации развертывания групп систем и до средств приватности и "секурности" в сети. Я решил сделать небольшой обзор наиболее понравившихся проектов, так или иначе связанных с современными веяниями "облачной" моды в 2014 году.:)
И так, встречаем....(приятная музыка в зале, свет на рампу...!):
1. OpenDaylight
Ранее почти все сетевое оборудование управлялось нецентрализовано — все настройки прописывались индивидуально для каждого шлюза/свича. И это устраивало почти всех. Однако с появлением облачных технологий потребности изменились и понадобились новые идеи по организации управления сетями. Одной из таких идей стала SDN (Software Defined Networking). Заключается идея в том, что в сети, построенной на ее основе, управление сетью отделено от устройств передачи данных, что добавляет еще один уровень абстракции.
На базе этой идеи была разработана еще одна — NFV (Network Functions Virtualization), которая тесно пересекается с идеей SDN. NFV позволяет виртуализировать отдельные сетевые функции, которые ранее можно было реализовать только физически, — например, брандмауэр или IDS. То есть физически ты можешь находиться в Австралии, а брандмауэр — вообще за океаном, в самой "незалежной" стране в мире:).
И тут мы переходим к OpenDaylight:)). Он представляет собой платформу для организации работы этих технологий. Строго говоря, это не готовое решение, а фреймворк, на основе которого заинтересованные компании и разработчики могут строить свои продукты для SDN-сетей. Прежде чем описывать OpenDaylight дальше, нужно получить некоторое представление о структуре таких сетей. Условно можно разделить SDN-сеть на три уровня:
На самом верхнем уровне находятся приложения, которые отвечают за сетевую и бизнес-логику и контролируют поведение сети. Более сложные решения еще и сочетают облачные и NFV-приложения, а также проектируют сетевой трафик в соответствии с требованиями этих приложений.
Второй уровень собственно слой абстракции — здесь и происходит разделение управления сетью и передачи данных.
Ну и последний уровень — уровень устройств передачи данных. Отмечу, что эти устройства могут быть как физическими, так и виртуальными.
OpenDaylight концентрируется на втором уровне SDN-сети в виде набора RESTful API и OSGi-фреймворк для приложений верхнего уровня («северный интерфейс»), реализуя при этом C&C-протоколы для устройств передачи данных, такие как OpenFlow, BGP и SNMP («южный интерфейс»). В нем реализованы различные диспетчеры — от диспетчера топологии и до диспетчера переадресации трафика.
Ядро OpenDaylight написано на Java, следовательно, может работать на любой системе, где имеется JVM. Кроме того, фреймворк этот гибкий и модульный, что позволяет использовать только те возможности, которые необходимы для конкретной сети.
В целом это довольно перспективное направление, которое, однако, имеет смысл лишь для крупного Enterprise-сектора, например для магистральных провайдеров.
2. OpenIoT:
Облачная платформа, в рамках которой можно создавать приложения, собирающие и обрабатывающие данные с датчиков и с магистралей сенсорных сетей. По необходимости другие приложения, работающие в той же OpenIoT, на основе этих данных будут предпринимать какие-либо действия — например, уведомлять родителей о том, что их ребенок проснулся, или, скажем, сообщать врачу о состоянии его пациентов находящися на домашнем лечении..., короче сфера применения большая и довольно актуальная...:)
Архитектуру OpenIoT можно разделить на три уровня:
Самый верхний уровень позволяет пользователю создавать запросы на интересующие его темы и получать информацию, а также настраивать и мониторить датчики и приложения.
На втором уровне, который в терминологии OpenIoT назван виртуализованным, находится, во-первых, планировщик, который распределяет запросы приложений верхнего плана и предоставляет им доступ к требуемым ресурсам. Во-вторых, здесь же располагается облачное хранилище, куда стекается вся информация с нижнего уровня, а также сохраняются и метаданные, нужные для функционирования платформы.
И в-третьих, на этом уровне находится диспетчер, который объединяет на основе запросов планировщика сырые потоки данных в нечто более организованное и посылает их в приложения верхнего уровня.
Этот же самый диспетчер подсчитывает все обращения для каждого приложения, что может быть удобно как для профилировки, так и для биллинга.
Наконец, на физическом уровне и опрашиваются все необходимые датчики. Поступающие данные собираются, комбинируются, и им присваиваются метки. Этот уровень выступает прослойкой между OpenIoT и всем остальным миром. При этом развертываются датчики не абы как...., а подключаются к узлам сбора информации.
OpenIoT разрабатывается под эгидой Евросоюза и сотрудничает с несколькими европейскими университетами. На данный момент проект находится в стадии прототипа, но где-то в конце 2014-го он выйдет из нее. Применять его планируется от кампусов до фабрик и аграрной промышленности.
Если же говорить о технической стороне проекта, то используется опять же Java, есть возможность самим тестировать данную платформу, благо виртуальные датчики в наличии.
3. Cloud Foundry
Cloud Foundry — открытая облачная PaaS-платформа от VMware, по большей части написанная на Ruby. Для начала, кто забыл, напомню:), что такое PaaS. PaaS — своего рода фреймворк и инфраструктура для создания масштабируемых приложений любого уровня. Как правило, доступ к подобной инфраструктуре платный, и внутренности ее спрятаны где-то в глубинах дата-центров разработавшей ее компании. Соответственно, развертывание ее на собственных серверах невозможно, ...печалька:(((.
Однако недаром в первом предложении прозвучало слово «открытая». Да, VMware одной из первых открыла свою облачную платформу, опубликовав ее исходники под Apache License 2.0. Таким образом, развертывание своего PaaS-облака стало доступным и для простых смертных пользовтаелей, что очень приветствуется...:)
Перейду к описанию архитектуры.
Центральной частью Cloud Foundry является Cloud Controller, который управляет всеми модулями и хранит информацию о пользователях, сервисах и приложениях. Также он контролирует предоставляемые услуги. И да, он имеет как CLI, так и REST API.
Помимо Cloud Controller, существует еще Health Manager. Он регулярно сравнивает текущую информацию, получаемую от специальных агентов, с желаемым состоянием, предоставляемым Cloud Controller, и, если обнаруживает какое-либо некорректное состояние, уведомляет центральную часть о сбое, что очень позитивно...при наличии большого количества всяких любителей "халявки"!:)
Непосредственно за маршрутизацию запросов к приложениям отвечает Router.
За состояние той или иной службы (к примеру, СУБД) отвечает Service Gateway, а за запуск — Service Nodes.
Особенности данной облачной платформы — во-первых, не существует единственной точки, повреждение состояния которой могло бы привести к падению всей инфраструктуры - Ого:)
Во-вторых, поддерживается горизонтальное масштабирование.
В-третьих, VMware добилась от Rails, на базе которого в основном и построено ядро Cloud Foundry, асинхронности.
В-четвертых, несмотря на то что написана платформа на Ruby, в качестве средств для написания приложений могут использоваться самые разные языки и фреймворки — от Scala до Node.js. Это достигается путем создания языково-независимой системы коммуникаций.
Платформа, по современным меркам, относительно зрелая, то есть «болезнь роста» она уже прошла. Неоспоримым преимуществом ее является открытость — то есть возможно развертывание локального облака хоть у себя дома. Также платформа позволяет создавать решения, масштабируемые до 5 тысяч машин.
Но за все это удовольствие приходится платить излишней сложностью конфигурирования, так что в общем случае проще будет купить место в каком-нибудь платном облаке, а затем по необходимости создать свое.
4. OpenStack - является открытой облачной платформой.
Но в отличие от Cloud Foundry это IaaS, иными словами, является нижележащим слоем и предоставляет базовые ресурсы для работы с данными — то есть хранилища данных, виртуальные серверы и сетевую инфраструктуру. Делаться это должно динамически, поэтому неудивительно, что первые подобные решения были проприетарными и стоили больших денег.
OpenStack появился в результате объединения усилий NASA и Rackspace и в настоящее время имеет следующие возможности:
- возможность наличия более чем одного арендатора облака (Multi-Tenancy). Это, в свою очередь, предполагает развитые средства логирования, биллинга и удобный веб-интерфейс;
- масштабируемость — неотъемлемая часть любой облачной инфраструктуры;
- поддержка множества систем хранения данных — iSCSI, AOE, SAN...;
- в качестве бэкенда могут использоваться такие гипервизоры и технологии, как Xen, KVM, VMware/ESX и даже LXC.
OpenStack как IaaS не уступает, решению от той же Amazon. Отличается же он от последнего тем, что облако можно при желании развернуть и в своей фирме.
Пока...все:)
Спасибо за Ваше внимание!:)
В *nix-системах сетевые средства традиционно являются сильной стороной, и даже в эпоху облачных вычислений, разработчики сосредоточились на создании новых инструментов и фреймворков (или так заявляется...:))) ), способных облегчить жизнь как им самим, так и обычным пользователям, ну или почти облегчить:))).
Комментарии
Чингачгук
20 сентября, 2015 - 19:55
надо применить статью в деле!
Комментировать