Статьи

DCHQ + EMC REX-Ray Доставка сервисов контейнерных баз данных на нескольких облаках и платформах виртуализации

DCHQ On-Premise v4.0 теперь доступен в режиме предварительного просмотра, поддерживающем службы баз данных контейнеров (CDS) , диспетчер ресурсов Microsoft Azure , Alibaba Aliyun , общедоступное облако OVH , потоковую передачу журналов приложений и другие замечательные функции.

Предложение CDS интегрируется с EMC REX-Ray для предоставления масштабируемых и высокодоступных баз данных в контейнерах, поддерживающих кластеризацию на нескольких хостах, резервное копирование, репликацию и автоматическое восстановление баз данных.

Доступны шаблоны для кластеризованных MySQL, MariaDB, PostgreSQL, Oracle XE, Mongo и Cassandra. Новое предложение также поддерживает платформы хранения от EMC, Amazon, OpenStack, Rackspace и Google. Посмотрите записанные демонстрации на этой странице: http://dchq.co/container-database-services.html

DCHQ v4.0 будет представлен на EMC World . Вы можете скачать DCHQ On-Premise v4.0 (режим предварительного просмотра) , заполнив форму загрузки на этой странице. http://dchq.co/dchq-on-premise.html

В этом блоге мы расскажем об автоматизации развертывания приложения Enterprise Java с многоузловым кластером PostgreSQL, настроенным для репликации Master-Slave и автоматизированного управления хранилищем с резервными томами EBS в AWS с использованием DCHQ + EMC REX-Ray.

Что такое DCHQ?

DCHQ разворачивает и управляет существующими корпоративными и облачными приложениями в любой облачной или контейнерной инфраструктуре, включая VMware vSphere , OpenStack , OVH , AWS , Microsoft Azure и многие другие.

Он обеспечивает «на лету» контейнеризацию корпоративных приложений, включая Oracle Database Cluster, SAP и другие. Таким образом, DCHQ преобразует не облачные нативные приложения в полностью переносимые приложения, которые могут использовать преимущества облачного масштабирования, избыточности хранилища и, самое главное, гибкости развертывания.

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

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

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

DCHQ Обзор

9033846_orig

Особенности платформы DCHQ

5798487_orig

Рабочий процесс DCHQ

2065640_orig

Автоматизированное управление постоянным хранилищем для приложений Docker с использованием DCHQ и EMC REX-Ray

Проект с открытым исходным кодом EMC, REX-Ray , предоставляет независимое от поставщика постоянное хранилище для контейнеров Docker. Это позволяет разработчикам и администраторам баз данных выполнять задачи управления хранилищем через стандартный интерфейс командной строки. Проект поддерживает поставщиков услуг хранения, включая AWS EC2 (EBS), OpenStack (Cinder), EMC Isilon, EMC ScaleIO, EMC VMAX, EMC XtremIO, Google Compute Engine (GCE) и VirtualBox.

Проект REX-Ray направлен на решение проблем управления хранилищем баз данных контейнеров, но не предоставляет вариантов автоматизации, масштабируемости и высокой доступности, необходимых для управления базами данных контейнеров на производстве.

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

Новое предложение позволяет пользователям:

  • Запуск высокодоступных и масштабируемых баз данных в контейнерах с поддержкой кластеризации с несколькими узлами, резервного копирования, репликации и автоматического восстановления баз данных.
  • Используйте готовые шаблоны контейнерных баз данных для кластеризованных MySQL, MariaDB, PostgreSQL, Oracle XE, Mongo и Cassandra .
  • Создавайте настраиваемые задачи управления хранилищем с помощью подключаемых модулей DCHQ, которые можно запускать на разных этапах жизненного цикла развертывания приложения.
  • Разверните приложение со всеми необходимыми службами хранения на любой виртуальной машине или сервере без поддержки, работающем в общедоступных облаках или частных центрах обработки данных.

3 простых шага, чтобы настроить кластер Docker

Прежде чем начать, вам нужно получить доступ к DCHQ:

Шаг 1 — Создайте облачного провайдера

Во-первых, пользователь может зарегистрировать облачного провайдера для любой из 18 облачных платформ и платформ виртуализации, поддерживаемых DCHQ. В этом блоге рассматривается автоматизированное предоставление ресурсов в AWS. Зарегистрировать облачного провайдера можно, перейдя к облачным провайдерам и затем нажав кнопку + , чтобы выбрать Amazon EC2 . Единственные обязательные поля:

  • Ключ доступа AWS
  • Секретный ключ AWS

Необязательные поля позволяют вам применять детализированные элементы управления доступом и связывать этого поставщика с политикой квот.

  • Зарегистрированные пользователи — это пользователи, которым разрешено использовать этот облачный провайдер для обеспечения инфраструктуры. Зарегистрированные пользователи не имеют разрешения на управление или удаление этого облачного провайдера и не смогут просматривать какие-либо учетные данные.
  • Правильные чертежи — это шаблоны Machine Compose, которые можно использовать с этим облачным провайдером. Например, если администратор клиента хочет ограничить пользователей предоставлением компьютеров 4 ГБ в сертифицированных операционных системах, пользователи не смогут использовать этого облачного провайдера для подготовки любого другого компьютера.
  • Ограничение виртуальной машины — это максимальное количество виртуальных машин, которое можно использовать с этим облачным провайдером.
  • Политики квот — это предварительно определенные политики для установки квот на количество виртуальных машин или их стоимость. Можно выбрать несколько политик квот, чтобы настроить элементы управления для каждого пользователя или группы пользователей.

1589822_orig

Шаг 2. Создание кластера для AWS с использованием оверлейной сети Weave

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

Кластер имеет расширенные параметры, такие как:

  • Аренда — пользователь может указать, когда истекает срок действия приложений, развернутых на серверах в этом кластере, чтобы DCHQ мог автоматически уничтожить эти приложения.
  • Политика размещения — пользователь может выбрать из ряда политик размещения, таких как политика на основе близости, циклический перебор или политика по умолчанию, которая является политикой размещения на основе емкости, которая будет размещать рабочую нагрузку Docker на хосте, который имеет достаточные вычислительные ресурсы. ,
  • Сеть — пользователь может выбрать либо сеть Docker, либо Weave в качестве программно-определяемой сети, чтобы упростить взаимодействие между контейнерами между несколькими хостами.
  • Квота — пользователь может указать, соответствует ли этот кластер профилям квот, назначенным пользователям и группам. Например, в DCHQ.io всем пользователям назначается квота 8 ГБ памяти.
  • Политика автоматического масштабирования — пользователь может определить политику автоматического масштабирования для автоматического добавления серверов, если в кластере не хватает вычислительных ресурсов для удовлетворения потребностей разработчика в новых развертываниях приложений на основе контейнеров.
  • Granular Access Controls — администратор клиента может определить элементы управления доступом к кластеру, чтобы определить, кто может развертывать на нем приложения Docker через уполномоченных пользователей . Например, разработчик может зарегистрировать свой локальный компьютер и пометить его как частный. Администратор клиента, с другой стороны, может совместно использовать кластер с определенной группой пользователей или со всеми пользователями арендатора. Кроме того, владелец кластера может указать, какие шаблоны приложений могут быть развернуты в этом кластере с помощью « Зарезервированных чертежей» . Если кластер будет использоваться в вышестоящих средах, то на нем могут быть развернуты только определенные шаблоны приложений (или «чертежи»).

4711687_orig

Шаг 3. Предоставление новых экземпляров AWS в кластер

Пользователь может предоставить экземпляры AWS во вновь созданном кластере, определив простой шаблон компоновки машины на основе YAML, который можно запросить из библиотеки самообслуживания.

( Рекомендуется ) Перед созданием шаблона Machine Compose пользователь может безопасно сохранить закрытый ключ (или файл PEM) в хранилище учетных данных. Это можно сделать, перейдя к облачным провайдерам и затем нажав кнопку + , чтобы выбрать учетные данные . Необходимо указать имя пользователя и пароль . После сохранения этого элемента учетных данных нажмите « Изменить» для нового сохраненного элемента, чтобы скопировать вновь созданный идентификатор для этого элемента учетных данных.

7726563_orig

Пользователь может создать шаблон Machine Compose для AWS, перейдя в App & Machine и затем нажав кнопку + , чтобы выбрать Docker Machine .

Вот шаблон для запроса 3 экземпляров AWS t2.medium в регионе us-west-1.

6306605_orig

Поддерживаемые параметры для шаблона Machine Compose приведены ниже:

  • описание : описание проекта / шаблона
  • подсеть : конкретное значение провайдера облака (например, идентификатор подсети для AWS)
  • instanceType : Mandatory — специфическое значение провайдера облака (например, general1-4)
  • регион : обязательный — специфическое значение поставщика облачных вычислений (например, IAD)
  • image : Обязательный — полный идентификатор / имя изображения (например, IAD / 5ed162cc-b4eb-4371-b24a-a0ae73376c73 или имя шаблона vSphere VM)
  • aws_root_size : обязательно — размер диска, который нужно подключить к экземпляру, в ГБ
  • aws_root_encrypted : логическое значение для того, шифровать ли корневой диск или нет
  • aws_root_delete_on_termination : логическое значение для удаления корневого диска при завершении экземпляра
  • aws_device_name : путь или каталог для устройства
  • aws_tags : значения пары ключей, которые можно передать при подготовке экземпляра
  • username : это имя пользователя, используемое для подключения к серверу
  • пароль : это может ссылаться на закрытый ключ, хранящийся в хранилище учетных данных. Вам понадобится идентификатор элемента учетных данных, который хранится на странице «Управление»> «Поставщики облаков». Вот приемлемый формат: «{{credentials | 2c91802a520736224015209a6393098322}}»
  • сеть : Необязательно — специфическое значение поставщика облака (например, по умолчанию)
  • securityGroup : конкретное значение поставщика облака (например, по умолчанию)
  • keyPair : конкретное значение провайдера облака (например, имя личного ключа)
  • openPorts : необязательно — значения портов через запятую
  • count : общее количество виртуальных машин, по умолчанию 1.

В дополнение к этим поддерживаемым параметрам вы также заметите, что этот шаблон ссылается на «плагин». Плагин может быть вызван следующим образом:

1
2
3
  plugins:
- !plugin
id: <plugin-id>

Плагин можно создать, перейдя в « Управление» > « Плагины» и нажав кнопку « . Плагин — это простой скрипт, который может быть запущен как на предоставляемом сервере, так и в контейнере Docker. Серверные плагины могут использоваться для любого количества требований конфигурации:

  • Установка кукольных модулей, рецептов шеф-повара, Ansible Playbook и т. Д.
  • Извлечение сертификата CA, необходимого для частного реестра Docker, из безопасного сегмента S3, а затем сохранение его в нужном каталоге (например, /etc/docker/certs.d/<domain-name>:5000/ca.crt)

Шаблон Machine Compose имеет дополнительные дополнительные параметры.

  • Профили затрат — это профили затрат, которые можно создать в разделе « Управление» > « Профили затрат» . Вы можете определить стоимость за ресурс на почасовой / еженедельной / ежемесячной основе. К одному шаблону можно прикрепить несколько профилей затрат — например, различные профили затрат для типа экземпляра, используемого хранилища EBS и т. Д.
  • Зарегистрированные пользователи — это пользователи, которым разрешено использовать этот шаблон для подготовки экземпляров AWS. Зарегистрированные пользователи не имеют разрешения на управление или удаление этого шаблона и могут только использовать его.

8622881_orig

После сохранения шаблона Docker Machine пользователь может запросить этот компьютер из библиотеки самообслуживания. Пользователь может нажать « Настроить», а затем выбрать облачного провайдера и кластер, которые будут использоваться для предоставления экземпляров (ов) AWS.

Поскольку Weave был выбран в качестве оверлейной сети, кластер Weave будет автоматически настроен для 3 экземпляров AWS, предоставляемых с использованием DCHQ.

7289065_orig

После подготовки экземпляров AWS пользователь может отслеживать ключевые статистические данные, такие как ЦП, память, использование диска, извлечение изображений и запуск контейнеров. Это можно сделать, перейдя в « Машины» и выбрав « Мониторинг» в раскрывающемся меню « Управление» .

Терминал в браузере на подготовленном компьютере также доступен. Доступ к нему можно получить, перейдя в « Машины» и выбрав « Терминал» в раскрывающемся меню «Управление».

1601671_orig

387102_orig

Развертывание корпоративного Java-приложения с использованием многоузлового кластера PostgreSQL, настроенного для репликации «главный-подчиненный» в кластере AWS с управлением постоянным хранилищем с помощью REX-Ray

Теперь, когда кластер AWS настроен, вы можете запустить любое приложение Docker на только что созданном сервере. Это можно сделать, перейдя в Библиотеку и затем нажав Настроить на любом из опубликованных шаблонов приложений. Затем вы можете выбрать кластер и нажать кнопку « Выполнить» .

Ознакомьтесь с нашими опубликованными шаблонами приложений Docker, включая многоуровневые стеки Java, стеки LAMP, LAOP и LAPP, Node.js, Rails, Python, набор реплик Mongo, кластер Couchbase, MEAN.JS, WordPress, Drupal и многие другие.

Создание шаблона приложения

Docker Compose — это шаблон YAML для определения многоуровневых или распределенных приложений с несколькими образами, которые могут работать на любом хосте Linux с поддержкой Docker, работающем где угодно.

После входа в DCHQ (либо размещенную версию DCHQ.io, либо локальную версию) пользователь может перейти к App & Machine и нажать кнопку + , чтобы создать новый шаблон Docker Compose .

Вот пример шаблона, который содержит следующие компоненты:
Apache HTTP Server — для обратного прокси и балансировки нагрузки
Tomcat — сервер приложений, на котором выполняется приложение Java
PostgreSQL Master — это основная база данных PostgreSQL
PostgreSQL Slave — это подчиненная база данных PostgreSQL

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
HTTP-LB:
  image: httpd:latest
  publish_all: true
  mem_min: 50m
  host: host1
  plugins:
    - !plugin
      id: uazUi
      restart: true
      lifecycle: on_create, post_scale_out:AppServer, post_scale_in:AppServer
      arguments:
        # Use container_private_ip if you're using Docker networking
        #- BalancerMembers=BalancerMember http://{{AppServer | container_private_ip}}:8080
        # Use container_hostname if you're using Weave networking
        - BalancerMembers=BalancerMember http://{{AppServer | container_hostname}}:8080
AppServer:
  image: tomcat:8.0.21-jre8
  mem_min: 600m
  host: host1
  cluster_size: 1
  environment:
    - database_driverClassName=org.postgresql.Driver
    # Use this configuration with Docker networking
    #- database_url=jdbc:postgresql://{{postgres_master|container_private_ip}}:5432/{{postgres_master|DB_NAME}}
    # Use this configuration with Weave
    - database_url=jdbc:postgresql://{{postgres_master|container_hostname}}:5432/{{postgres_master|DB_NAME}}
    - database_username={{postgres_master|DB_USER}}
    - database_password={{postgres_master|DB_PASS}}
  plugins:
    - !plugin
      id: oncXN
      restart: true
      arguments:
        - file_url=https://github.com/dchqinc/dchq-docker-java-example/raw/master/dbconnect.war
        - dir=/usr/local/tomcat/webapps/ROOT.war
        - delete_dir=/usr/local/tomcat/webapps/ROOT
postgres_master:
  restart: always
  host: host2
  #ports:
  #  - 5432:5432
  image: dchq/postgres:latest
  environment:
    - DEBUG=false
    - DB_USER=root
    - DB_PASS={{alphanumeric | 8}}
    - DB_NAME=names
    - DB_UNACCENT=false
    - REPLICATION_MODE=master
    - REPLICATION_USER=replicator
    - REPLICATION_PASS={{alphanumeric | 8}}
  volumes:
    - "/var/lib/rexray/volumes/dchq-postgres-master/data:/var/lib/postgresql"
  plugins:
    - !plugin
     # Only mounts volume
     #id: CmA35
     # Create and mount volume
     id: 8CF1C
     lifecycle: exec_on_machine pre_create
     arguments:
       - VOLUME_NAME=dchq-postgres-master
       - VOLUME_SIZE=5
    #  Nightly snapshot
    #- !plugin
    #  id: dE4qG
    #  lifecycle: exec_on_machine cron(0 1 1 * * ?)
    #  arguments:
    #   - VOLUME_NAME=dchq-postgres-master
postgres_slave:
  restart: always
  host: host3
  #ports:
  #  - 5432:5432
  image: dchq/postgres:latest
  environment:
    - DEBUG=false
    - REPLICATION_MODE=slave
    # Use this configuration with Docker networking
    #- REPLICATION_HOST={{postgres_master | container_private_ip}}
    # Use this configuration with Weave
    - REPLICATION_HOST={{postgres_master | container_hostname}}
    - REPLICATION_USER={{postgres_master | REPLICATION_USER}}
    - REPLICATION_PASS={{postgres_master | REPLICATION_PASS}}
    - REPLICATION_PORT=5432
  volumes:
    - "/var/lib/rexray/volumes/dchq-postgres-slave/data:/var/lib/postgresql"
  plugins:
    - !plugin
     # Only mounts volume
     #id: CmA35
     # Create and mount volume
     id: 8CF1C
     lifecycle: exec_on_machine pre_create
     arguments:
       - VOLUME_NAME=dchq-postgres-slave
       - VOLUME_SIZE=5
    #  Nightly snapshot
    #- !plugin
    #  id: dE4qG
    #  lifecycle: exec_on_machine cron(0 1 1 * * ?)
    #  arguments:
    #   - VOLUME_NAME=dchq-postgres-master

Использование привязок переменных среды для захвата зависимостей сложных приложений

Пользователь может создавать привязки переменных окружения между изображениями, делая ссылку на переменную окружения другого изображения. В этом случае мы сделали несколько привязок, включая database_url = jdbc: postgresql: //
{{postgres_master | container_hostname}}: 5432 / {{postgres_master | DB_NAME}} — в котором внутренний IP-адрес контейнера базы данных определяется динамически во время запроса и используется, чтобы Tomcat мог установить соединение с базой данных.

Вот список поддерживаемых значений переменных среды:

  • {{буквенно-цифровой | 8}} — создает случайную 8-символьную буквенно-цифровую строку. Это наиболее полезно для создания случайных паролей.
  • {{Имя изображения | ip}} — позволяет ввести IP-адрес хоста контейнера в качестве значения для переменной среды. Это наиболее полезно для разрешения уровня промежуточного программного обеспечения устанавливать соединение с базой данных.
  • {{Имя изображения | имя_контейнера}} или {{Имя изображения | container_ip}} — позволяет ввести имя контейнера в качестве значения для переменной среды. Это наиболее полезно для разрешения уровня промежуточного программного обеспечения устанавливать безопасное соединение с базой данных (без предоставления порта базы данных).
  • {{Имя изображения | container_private_ip}} — позволяет ввести внутренний IP-адрес контейнера в качестве значения для переменной среды. Это наиболее полезно для разрешения уровня промежуточного программного обеспечения устанавливать безопасное соединение с базой данных (без предоставления порта базы данных).
  • {{Имя изображения | port_Port Number}} — позволяет ввести номер порта контейнера в качестве значения для переменной среды. Это наиболее полезно для разрешения уровня промежуточного программного обеспечения устанавливать соединение с базой данных. В этом случае указанный номер порта должен быть внутренним номером порта, то есть не внешним портом, который выделен для контейнера. Например, {{PostgreSQL | port_5432}} будет преобразован в фактический внешний порт, который позволит промежуточному программному обеспечению установить соединение с базой данных.
  • {{Имя изображения | Имя переменной среды}} — позволяет ввести значение переменной окружения изображения в переменную окружения другого изображения. Варианты использования здесь бесконечны — так как большинство многоуровневых приложений будут иметь зависимости между изображениями.

Использование плагинов для автоматизации управления хранилищем с использованием REX-Ray и параметра хоста для развертывания многоузлового кластера PostgreSQL

Параметр host позволяет указать хост, который вы хотите использовать для развертывания контейнера. Это возможно, если вы выбрали Weave в качестве сетевого слоя при создании кластеров . Таким образом, вы можете обеспечить высокую доступность кластеров серверов приложений на разных хостах (или в разных регионах) и соблюдать правила соответствия, чтобы база данных работала, например, на отдельном хосте. Вот значения, поддерживаемые для параметра хоста:

  • host1, host2, host3 и т. д. — случайным образом выбирает хост в дата-центре (или кластере) для развертывания контейнера
  • IP-адрес 1, IP-адрес 2 и т. Д. — позволяет пользователю указать фактические IP-адреса для использования при развертывании контейнера
  • Имя хоста 1, Имя хоста 2 и т. Д. — позволяет пользователю указать фактические имена хостов, которые будут использоваться для развертывания контейнеров
  • Подстановочные знаки (например, «db- » или «app-srv- ») — для указания подстановочных знаков для использования в имени хоста

В этом случае контейнеры postgres_master и postgres_slave будут работать на двух отдельных хостах — как указано значениями host2 и host3.

DCHQ также предоставляет бесконечно гибкую инфраструктуру плагинов, которую можно вызывать при 20+ показателях жизненного цикла приложения, чтобы обеспечить обнаружение службы и автоматическое обновление приложения.

В этом случае плагины используются для автоматизации задач управления хранилищем для кластера базы данных. Эти подключаемые модули вызывают REX-Ray для создания, монтирования и создания снимков томов AWS EBS, которые сопоставлены как с главным, так и с ведомым контейнерами PostgreSQL. Вы можете скачать DCHQ On-Premise, чтобы получить доступ к этим готовым модулям .

В этом шаблоне есть три плагина, которые вызывают REX-Ray для автоматизации управления хранилищем.

  • id: CmA35 — этот плагин закомментирован, но может не комментироваться, если пользователь хочет просто смонтировать существующий том EBS в контейнер базы данных. Это полезно для восстановления баз данных из снимков или для использования данных в тестировании.
  • id: 8CF1C — этот плагин активен и используется для создания и монтирования тома EBS в контейнер базы данных. Вы заметите, что аргументы плагина позволяют вам указывать имя и размер тома, абстрагируя пользователя от сложности команд консоли.
  • id: dE4qG — этот плагин можно использовать для регулярных снимков тома EBS, используя простое выражение cron для планирования этих снимков.


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

  • on_create — выполняет плагин при создании контейнера
  • on_startзапускает плагин после запуска контейнера
  • on_stop — выполняет плагин до остановки контейнера
  • on_destroy — выполняет плагин перед уничтожением контейнера
  • post_create — выполняет плагин после того, как контейнер создан и запущен
  • post_start [: Node] — запускает плагин после запуска другого контейнера
  • post_stop [: Node]запускает плагин после остановки другого контейнера
  • post_destroy [: Node]запускает плагин после уничтожения другого контейнера
  • post_scale_out [: Node]запускает плагин после масштабирования другого кластера
  • post_scale_in [: Node]запускает плагин после масштабирования другого кластера
  • exec_on_machineзапускает плагин на базовой машине (хосте)
  • pre_create — выполняет плагин перед запуском контейнера

Развертывание приложения Java с кластером PostgreSQL на AWS

Это можно сделать, перейдя в Библиотеку и затем нажав Настроить на любом из опубликованных шаблонов приложений. Затем вы можете выбрать кластер и нажать кнопку « Выполнить».

545066_orig

Доступ к развернутому приложению

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

Чтобы получить доступ к приложению, пользователь может просто щелкнуть по открытому порту Apache HTTP Server.

Вы заметите, что PostgreSQL Master и PostgreSQL Slave работают на отдельных экземплярах AWS. Эти случаи могли быть в разных регионах, чтобы обеспечить высокую доступность. Сеть наложения Weave позволяет этим контейнерам обмениваться данными, не открывая порт 5432 на хосте.

Развернутое приложение представляет собой простое приложение каталога имен. Вы можете сохранить пару имен для тестирования.

3903996_orig

3826541_orig

Убедитесь, что репликация PostgreSQL работает

Теперь, когда мы сохранили пару имен в нашем Java-приложении, мы можем проверить, правильно ли реплицировались эти имена в подчиненном контейнере PostgreSQL.

Вот команды, используемые для выполнения этой проверки на хосте, на котором выполняется контейнер postgres_slave_ajtpuy.

01
02
03
04
05
06
07
08
09
10
11
12
13
## Execute these commands on the host running the postgres_slave container
 
## Enter the postgres_slave container
docker exec -it [postgres_slave_container_name] bash
 
## Access the names database using psql
psql names
 
## List the tables
\dt;
 
## Select the data from the "namedirectory" table
select * from "NameDirectory";

6351192_orig

Убедитесь, что тома EBS созданы на AWS

Войдите в консоль AWS и убедитесь, что два отдельных тома EBS были созданы и подключены к PostgreSQL Master и к подчиненным контейнерам PostgreSQL.

5689227_orig

Контролировать производительность контейнеров

Когда приложение запущено и запущено, пользователи могут отслеживать ЦП, память и ввод-вывод запущенных контейнеров, чтобы получать оповещения, когда эти показатели превышают заранее установленный порог. DCHQ также отслеживает базовые экземпляры AWS, на которых запущено приложение, — собирая такие показатели, как ЦП. Память и использование диска.

Пользователь может выполнять исторический анализ мониторинга и соотносить проблемы с обновлениями контейнеров или создавать развертывания. Это можно сделать, нажав на ссылку Статистика . Пользовательский диапазон дат может быть выбран для исторического просмотра процессора, памяти и ввода / вывода.

7295871_orig

Масштабировать приложение

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

Чтобы масштабировать кластер серверов Tomcat от 1 до 2, пользователь может щелкнуть меню « Действия» запущенного приложения и затем выбрать « Масштабировать» . Затем пользователь может указать новый размер кластера и нажать « Запустить сейчас» .

По мере уменьшения масштаба будет использоваться среда Service Discovery для обновления балансировщика нагрузки. На сервере Apache HTTP будет автоматически запущен плагин для обновления файла httpd.conf, чтобы он знал о новом добавленном сервере приложений. Это потому, что мы указали post_scale_out: AppServer в качестве события жизненного цикла для этого плагина.

Временная шкала приложения доступна для отслеживания каждого изменения, внесенного в приложение для аудита и диагностики. Доступ к нему можно получить из расширяемого меню внизу страницы работающего приложения. В этом случае платформа Service Discovery автоматически запускала подключаемый модуль Apache HTTP Server сразу после масштабирования кластера сервера приложений.

576358_orig

3927512_orig

Доступ к терминалу в браузере для контейнеров

Значок командной строки должен быть доступен рядом с именами контейнеров на странице Live Apps. Это позволяет пользователям входить в контейнер с использованием безопасного протокола связи через очередь сообщений агента. Администратор клиента может определить белый список команд, чтобы пользователи не вносили никаких вредных изменений в работающие контейнеры.

Например, для контейнера httpd мы использовали командную строку, чтобы убедиться, что новый контейнер IP был добавлен автоматически после завершения масштабирования.

7229243_orig

5201685_orig

Скачать DCHQ On-Premise сейчас