Sunday, 17 April 2016

Docker Java App With MariaDB – Deployment In Less Than A Minute


Задний план

Java-разработчики и специалисты DevOps уже давно пытались автоматизировать развертывание корпоративных Java-приложений. Сложный характер этих приложений, как правило, означает, что зависимостей приложений и внешних интеграций должны были быть перенастроен каждый раз, когда приложение было развернуто в средах / TEST DEV.
Многие решения рекламировали сообщение "модель один раз, развернуть в любом месте" для развертывания приложений. В действительности, однако там всегда были хитросплетения, которые сделали его очень трудно повторно использовать шаблон приложения через одновременно на предпосылке Vsphere виртуальной среде и среде AWS, например.
Совсем недавно, однако, Docker контейнеры популяризировали идею компонентов упаковки приложения в Linux Контейнеры, которые могут быть развернуты точно так же на любом хосте Linux, пока установлен Docker двигателя.
К сожалению containerizing Enterprise Java приложений все еще проблема в основном потому, что существующие рамки состав приложения не учитывают сложные зависимости, внешние объединения или автоматическое масштабирование рабочих процессов пост-положение. Кроме того, эфемерная конструкция контейнеров означает, что разработчикам пришлось раскручивать новые контейнеры и заново создать сложные зависимости & внешние интеграции с каждым обновлением версии.
DCHQ, доступен в размещенных и на предпосылке версиях, устраняет все эти проблемы и упрощает контейнеризации корпоративных Java-приложений через рамки композиции предварительной заявки, которая простирается Docker Compose с переменными окружения кросс-изображений привязок, расширяемых Баш скрипт плагинов, которые могут вызывается во время запроса или после предоставления, а также применение кластеризации для высокой доступности в нескольких хостов или регионах с поддержкой автоматического масштабирования.
После того, как приложение подготовлено, пользователь может контролировать процессора, памяти и ввода / вывода запущенных контейнеров, получать уведомления & уведомления, а также выполнять 2-й день-операции, как резервное копирование по графику, Контейнер обновлений с использованием Баш скрипт плагинов, и масштаб In / Out. Кроме того, из-из коробки рабочие процессы, которые облегчают непрерывную доставку с Дженкинс позволяют разработчикам обновить WAR файл Java запущенного приложения, не нарушая существующих зависимостей & интеграции.
В этом блоге мы будем идти по автоматизации конца в конец приложения Java под названием Pizza Shop, развернутого на двух различных стеков приложений в контейнерах:
  • Nginx (для балансировки нагрузки), кластерный и MariaDB Tomcat (в качестве базы данных)
  • Nginx (для балансировки нагрузки), кластерный Причал и MariaDB (в качестве базы данных)
Этот же файл WAR Java будет развернуто на двух разных серверах приложений. DCHQ не только автоматизирует развертывание приложений - но он также интегрируется с 12 различными облаками автоматизировать выделение ресурсов и автоматическое масштабирование кластеров с программируемыми параметрами сети. Мы рассмотрим:
  • Построение шаблонов приложений, которые могут повторно использоваться на любом хосте Linux работает в любом месте
  • Provisioning & автоматическое масштабирование базовой инфраструктуры на любом облаке (с Rackspace быть примером в этом блоге)
  • Развертывание многоуровневой Java-приложений на базе пиццерии на кластере Rackspace
  • Мониторинг CPU, памяти и ввода / вывода бегущего контейнеров
  • Включение непрерывного рабочего процесса доставки с Дженкинс, чтобы обновить файл WAR из запущенных приложений, когда сборка запускается
  • Масштабирование кластера Application Server для обеспечения масштабируемости Тесты

Построение шаблонов Нанесение Для Яве Pizza Shop аппликацией на сервере Tomcat и причал

После входа в систему, чтобы DCHQ (либо принимал DCHQ.io или на предпосылке версии), пользователь может перейти к App & Machine, а затем нажмите на кнопку +, чтобы создать новый шаблон Docker Compose.
Мы создали четыре шаблона приложения , используя официальные изображения из Докер Hub для одного приложения Pizza Shop - но для четырех различных серверов приложений.
  • 3-Tier PizzaShop (Nginx - Tomcat - MariaDB)
  • 3-й эшелон PizzaShop (Nginx - Причал - MariaDB)
Через обоих шаблонов, вы заметите, что Nginx является вызовом Баш скрипт плагин, чтобы добавить контейнер IP-адресов серверов приложений в файле default.conf динамически (или во время запроса).
Серверы приложений (Tomcat и Jetty) также вызовом Баш скрипт плагин для развертывания файлов Pizza Shop Java WAR из внешнего URL Tomcat, JBoss и Jetty призываете точно такой же плагин - за исключением файла WAR становится развернуто на разных каталогах:
  • Tomcat - реж = / USR / местные / Tomcat / WebApps / ROOT.war
  • Причал - реж = / Var / Библиотека / Пристань / WebApps / ROOT.war
Вы заметите, что параметр CLUSTER_SIZE позволяет указать количество контейнеров для запуска (с теми же зависимостей приложений).
Параметр хост позволяет указать хост вы хотели бы использовать для развертывания контейнеров. Таким образом, вы можете обеспечить высокую доступность для ваших кластеров серверов приложений в различных хостов (или регионах), и вы можете соблюдать правила сродства, чтобы гарантировать, что база данных работает на отдельном хосте, например. Ниже приведены значения, которые поддерживаются для параметра хоста:
  • host1, host2, host3 и т.д. - выбирает хост случайным образом в пределах дата-центра (или кластер) для развертывания контейнеров
  • <IP - адрес 1, 2 IP - адреса и т.д.> - позволяет пользователю указать фактический IP - адреса используются для развертывания контейнеров
  • <Hostname 1, Hostname 2 и т.д.> - позволяет пользователю определить фактические имена хостов использовать для развертывания контейнеров
  • Подстановочные (например , "db- *" или "приложение-srv- *") - указание использовать групповые символы в имени хоста
Кроме того, пользователь может создавать кросс-изображения переменных среды привязок, сделав ссылку на переменную окружения другого изображения. В этом случае, мы сделали несколько привязок - includingdatabase.url = JDBC: MySQL: // {{MariaDB | container_ip}}: 3306 / {{MariaDB | MYSQL_DATABASE}} - в котором контейнер базы данных IP решается динамически во время запроса и используется для того, чтобы серверы приложений могут установить соединение с базой данных.
Ниже приведен список поддерживаемых значений переменной окружения:
  • {{alphanumeric | 8}} - создает случайный 8-символьный буквенно-цифровой строки. Это особенно полезно для создания случайных паролей.
  • {{<Image Name> | ip}} - позволяет ввести IP-адрес хоста контейнера в качестве значения переменной окружения. Это наиболее полезно для обеспечения возможности промежуточного программного обеспечения яруса, чтобы установить соединение с базой данных.
  • {{<Image Name> | container_ip}} - позволяет ввести внутренний IP контейнера в качестве значения переменной окружения. Это наиболее полезно для обеспечения возможности промежуточного программного обеспечения яруса , чтобы установить безопасное соединение с базой данных (не подвергая порт базы данных).
  • {{<Image Name> | port _<Port Number>}} - позволяет ввести номер порта контейнера в качестве значения переменной окружения. Это наиболее полезно для обеспечения возможности промежуточного программного обеспечения яруса , чтобы установить соединение с базой данных. В этом случае номер порта , указанный должен быть внутренний номер порта - то есть не внешний порт , который выделяется в контейнер. Например, {{PostgreSQL | port_5432}} будет переведен к фактической внешний порт , что позволит промежуточное программное обеспечение уровня для установления соединения с базой данных.
  • {{<Image Name> | <Environment Variable Name>}} - позволяет ввести значение переменной окружения изображение в в переменной окружения другого образа. Случаи использования здесь безграничны - как большинство многоуровневых приложений будет иметь зависимости кросс-изображения.
Картина
Картина

Provisioning & Auto-Scaling подстилающей инфраструктуры на любом облаке

После того, как приложение сохраняется, пользователь может зарегистрировать поставщика облако автоматизировать выделение ресурсов и автоматическое масштабирование кластеров на 12 различных облачных конечных точек, включая OpenStack, CloudStack, Amazon Web Services, Rackspace, Microsoft Azure, DigitalOcean, HP Public Cloud, IBM SoftLayer, Google Compute Engine, и многие другие.
Во-первых, пользователь может зарегистрировать поставщика облако для Rackspace (например), перейдя в облачных провайдеров, а затем нажав на кнопку +, чтобы выбрать Rackspace. Rackspace Ключ API должен быть обеспечен, - которые могут быть извлечены из раздела Параметры учетной записи на панели управления Rackspace Cloud.
сохранить изображение
Затем пользователь может создать кластер с автоматической масштабной политики для автоматического раскрутки новых серверов Облако. Это может быть сделано путем перехода к кластерам страницы, а затем нажав на кнопку +. Вы можете выбрать политику размещения мощностей на основе, а затем Плетение в качестве сетевого уровня для того, чтобы облегчить безопасный, защищенный паролем кросс-контейнеровоз связь между несколькими хостами в кластере. TheAuto-Scale политики в этом примере устанавливает максимальное количество VM (или Cloud Servers) до 10.

сохранить изображение
Пользователь может в настоящее время положение несколько облачных серверов на вновь созданном кластере, перейдя к машинам и затем нажав на кнопку +, чтобы выбрать Rackspace. После того, как поставщик Облако выбран, пользователь может выбрать область, размер и изображение, необходимое. Порты могут быть открыты на новых серверах облако (например, 32000-59000 для Докер, 6783 для Weave, и 5672 для RabbitMQ). Центра обработки данных (или кластер) затем выбирается и может быть определено количество облачных серверов.

сохранить изображение

Развертывание многоуровневой Java-Based пиццерии приложения, установленного на Rackspace кластера

После того, как серверы облачными подготовлено, пользователь может развернуть многоуровневую, Docker на основе Java-приложений на новых серверах Cloud. Это может быть сделано путем перехода к библиотеке Self-Service, а затем нажав на кнопку Настройка, чтобы запросить применение многоуровневой.

Пользователь может выбрать тег окружающей среды (например, DEV или QE) и кластер Rackspace, созданный, прежде чем нажать на Run
сохранить изображение

Мониторинг процессора, памяти и утилизации I / O бегущего Контейнеры

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

Включение непрерывного рабочего процесса доставки с Jenkins Чтобы обновить файл WAR бегущего приложения Когда сборки Срабатывает

Для разработчиков, желающих следовать модели "неизменные" контейнеров путем восстановления изображений Docker, содержащих код приложения и раскручивается новые контейнеры с каждым обновлением приложения, DCHQ обеспечивает автоматизированную функцию сборки, которая позволяет разработчикам автоматически создавать Docker изображения из Dockerfiles или частных проектов GitHub, содержащих Dockerfiles.

Тем не менее, многие разработчики , возможно , пожелают обновить сервер контейнеров запущенного приложения последней Java WAR файл вместо. Для этого, DCHQ позволяет разработчикам включить непрерывный рабочий процесс поставки с Дженкинс. Это можно сделать, нажав на меню Действия работающего приложения , а затем выберите непрерывной доставки. Пользователь может выбрать экземпляр Дженкинс , который уже зарегистрирован в DCHQ, фактическое работы на Дженкинс , который будет производить последнюю версию файла WAR, а затем Баш скрипт плагин , чтобы захватить эту сборку и развернуть его на работающем сервере приложений. После того, как эта политика будет сохранена, DCHQ будет взять последнюю версию файла WAR из Дженкинс любое время , когда сборка срабатывает и развернуть его на работающем сервере приложений.
Разработчики, как результат всегда будет иметь последнюю версию файла Java WAR развернут на своих текущих контейнеров в средах / TEST DEV.
Картина

Горизонтальное масштабирование кластера Tomcat Application Server

Если работающее приложение становится ограниченным ресурсом, пользователь может масштабировать приложение для удовлетворения возрастающей нагрузкой. Кроме того, пользователь может планировать масштабирование в рабочее время и в масштабе в выходные дни, например.
Для того, чтобы масштабировать кластер серверов Tomcat от 2 до 4, пользователь может щелкнуть мышью в меню Действия работающего приложения, а затем выберите Scale Out. Затем пользователь может указать новый размер кластера, а затем нажмите на Run Now.

сохранить изображение
Затем мы использовали BASH плагин для обновления файла default.conf Nginx, чтобы он знает о новом сервере приложений добавлен. Баш скрипт плагины также могут быть запланированы для размещения прецедентов, как очистка журналов или обновления конфигураций на определенных частотах. Приложение времени линия доступна для отслеживания все изменения, сделанные приложением для аудита и диагностики.
Чтобы выполнить плагин на работающем контейнере, пользователь может щелкнуть мышью в меню Действия работающего приложения, а затем выберите подключаемые модули. Затем пользователь может выбрать контейнер балансировки нагрузки (Nginx), поиск подключаемого модуля, который должен быть выполнен, включите перезагрузка контейнера с помощью кнопки переключения. по умолчанию аргумент этого плагина будет динамически решить все контейнер IP-адресов из запущенных серверов Tomcat и добавить их как часть файла default.conf.
сохранить изображение
Приложение времени линия доступна для отслеживания все изменения, сделанные приложением для аудита и диагностики. Это могут быть доступны из раздвижного меню в нижней части страницы запущенного приложения.
Предупреждения и уведомления доступны, когда контейнеры или хосты вниз или, когда ЦП и памяти Использование либо узлов или контейнеров превышает определенный порог.

Вывод

Containerizing Java корпоративных приложений по-прежнему является проблемой в основном потому, что существующие рамки состав приложения не учитывают сложные зависимости, внешние объединения или автоматическое масштабирование рабочих процессов пост-положение. Кроме того, эфемерная конструкция контейнеров означает, что разработчикам пришлось раскручивать новые контейнеры и заново создать сложные зависимости & внешние интеграции с каждым обновлением версии.
DCHQ, доступен в размещенных и на предпосылке версиях, устраняет все эти проблемы и упрощает контейнеризации корпоративных Java-приложений с помощью передовой основы композиции приложений, что облегчает переменных среды кросс-изображений привязок, расширяемый Баш скрипт плагины, которые могут быть вызваны в запросить время или пост-положения, а также применение кластеризацию для обеспечения высокой доступности между несколькими хостами или регионах с поддержкой автоматического масштабирования.

Регистрация бесплатно на http://DCHQ.io
чтобы получить доступ к вышедших из коробки шаблонов многоуровневая Java приложений наряду с функциональностью управления жизненным циклом приложений, таких как мониторинг, обновление контейнеров, окалины в / из и непрерывной доставки.



No comments:

Post a Comment