Как управлять сервисными отношениями в Амулете на мелкомодульном уровне единицы?

Мой сервисный рецепт: сервер БД <-> Сервер приложений <-> веб-Прокси Реверса.

Мои требования отношения:

  • 1 единица сервера БД связала 1 (определенную) единицу Сервера приложений
  • 1 единица веб-Прокси Реверса связана со всеми Серверами приложений

Данный ниже последовательность команд Амулета, которые произойдут в моем случае

Ожидаемые Шаги (исправьте меня, если я неправ):

Фаза - установка

  1. Разверните дб
  2. Разверните сервер приложений
  3. Разверните веб-прокси реверса
  4. Добавьте Сервер приложений отношения к дб
  5. Добавьте веб-Прокси Реверса отношения к Серверу приложений

Фаза - масштабирование

  1. Добавьте дб единицы
  2. Добавьте Сервер приложений единицы (проблемный шаг): О нет! Мне не нужно автоматическое поведение на основе установки Provides/Required в метаданных очарования. Я хочу указать Сервер приложений к отношению дб на уровне единицы здесь.

Идеально, я хочу, чтобы рычаги отношения-xxx стреляли только в новую единицу дБ. Может быть подобен механизм передачи параметров добавлять-единицы одному предложенному для, развертываются?

Мои мысли для работы вокруг, учитывая текущие функции как следуют:

  • Один путь к условному выражению, выполняются в обратных вызовах. Проверьте, если уже связано с удаленным блоком и проигнорируйте поступление relation-added/Changed, перезванивают. Было бы грязно. Когда перезапуск сервисов может быть ошибочной причиной последовательности запуска для каждой пары единицы приложения дб, должен тщательно управляться, или неправильный сервис приложения будет говорить с неправильным сервисом дб. Я уже использую Амулет в качестве серверной службы со сценарием Python, управляющим амулетом cli.
  • Иначе то, что у меня есть определенный код, который характерен для сервера приложений / пара дб. Во многом как команда набора для сообщения развертывают фазу, я могу использовать его для установленных значений к определенной сервисной добавлять-единице сообщения экземпляров?

  • Другая опция является зависимым сервисом с контейнерным объемом - но я хочу дб как отдельный экземпляр машины не на экземпляре машины сервера приложений..

Что касается веб-прокси, я ожидаю, что рычаги будут запущены, таким образом, прокси сможет добавить новый сервер приложений как бэкенд. Текущее поведение Амулета идеально.

Я - ожидание оптимального способа пойти об этом.Заранее спасибо..

3
задан 24 July 2012 в 20:05

1 ответ

Мне кажется, вы хотите, чтобы два сервера приложений были уникально связаны с уникальными серверами баз данных. Это будет означать, что это действительно две отдельные службы. Тогда это может иметь смысл:

juju deploy mysql app1-db
juju deploy app app1
juju deploy mysql app2-db
juju deploy app app2
juju add-relation app1-db app1
juju add-relation app2-db app2

Это сделает так, что app1 и app2 будут независимы (даже если они имеют одинаковое очарование), что, я думаю, то, что вы хотите. Если вы хотите, чтобы они оба были сбалансированы по нагрузке из одного и того же haproxy:

juju deploy haproxy app-reverse-proxy
juju add-relation app1 app-reverse-proxy
juju add-relation app2 app-reverse-proxy

Обратите внимание, что более старые версии haproxy не могли справиться с этим (до 23-й версии charm).

Вот ошибка, которая отслеживала исправление:

https://bugs.launchpad.net/charms/+source/haproxy/+bug/1029078

0
ответ дан 24 July 2012 в 20:05

Другие вопросы по тегам:

Похожие вопросы: