Есть ли способ сделать резервную копию развертывания сервера Liberty в Bluemix?

Я развертываю упакованный сервер Liberty в Bluemix, который содержит мое приложение.

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

Другими словами, каков наилучший или рекомендуемый способ обновления веб-приложения, работающего на сервере Liberty в Bluemix. Нужно ли просто сохранять резервную копию ZIP-файла, который я отправил в Bluemix, и восстанавливать его, если что-то пойдет не так? Или Bluemix предоставляет возможности управления резервным копированием и восстановлением?


person RandalAnders    schedule 10.04.2015    source источник
comment
Вы говорите, что у вас есть свобода в комплекте с вашим приложением?   -  person Jeff Sloyer    schedule 10.04.2015


Ответы (3)


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

Статья Cloud Foundry Использование развертывания Blue-Green для сокращения времени простоя и риска кратко объясняет шаги развертывания (поскольку Bluemix основан на Cloud Foundry, шаги аналогичны шагам Пример: использование команды cf map-route в цитируемой ранее документации Bluemix).

person RandalAnders    schedule 10.04.2015
comment
Сине-зеленые развертывания — лучший подход - person Ryan Baxter; 11.04.2015

Я согласен с рекомендацией Райана использовать сине-зеленый подход, хотя этот термин может быть незнаком тем, кто плохо знаком с развертыванием облачных серверов. Мартин Фаулер резюмирует проблему, которую он решает в BlueGreenDeployment:

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

Решение этой проблемы является одним из основных преимуществ PaaS.

Тем не менее, для исторического контекста стоит отметить, что эта сине-зеленая стратегия не нова для облачных вычислений. Позвольте мне подробно остановиться на одном из «старых» способов решения этой проблемы:

Предположим, у меня есть веб-сайт, размещенный на выделенном сервере myexample.com. IP-адрес моего общедоступного сервера («синий») будет представлен в записи DNS «@» или в виде псевдонима CNAME; другой сервер («зеленый») будет размещать более новую версию приложения. Чтобы публично протестировать новое приложение, не влияя на действующую производственную среду, я просто обновляю /etc/hosts, чтобы сопоставить доменное имя верхнего уровня с IP-адресом зеленого сервера. Например:

129.42.208.183 www.myexample.com myexample.com

Как только я удалю локальные записи DNS и закрою все браузеры, все запросы будут направлены в зеленую предварительную среду. Убедившись, что все работает должным образом, я обновляю запись DNS для живой среды (в данном случае myexample.com). Предполагая, что DNS имеет достаточно короткое значение TTL, например 300 секунд, я обновляю значение записи A, если на Значение записи IP или CNAME, если используется псевдоним, и изменение будет распространено на DNS-серверы в течение нескольких минут. Чтобы подтвердить распространение новых значений DNS, я комментирую вышеупомянутое изменение /etc/hosts, очищаю локальные записи DNS, а затем запускаю traceroute. Предполагая, что он правильно разрешается локально, я выполняю последнюю двойную проверку, все ли в порядке в остальном мире с помощью бесплатной онлайн-проверки DNS (например, whatsmydns.net).

Вышеприведенное предполагает обновление общедоступного сервера содержимого (например, сервер Apache, подключающийся к базе данных или серверу приложений); переход от предварительной версии к рабочей более сложен, если обновление применяется к центральной базе данных или аналогичному серверу транзакционных данных. Если это не слишком мешает посетителям сайта, я отключаю вход в систему и прекращаю все активные сеансы, фактически делая сайт доступным только для чтения. Затем я приступаю к обновлению внутреннего сервера почти так же, как описано ранее, т. е. переключаю предварительную зеленую переднюю часть для ссылки на репликацию в предварительной зеленой внутренней части, тестирую, затем, когда все проверено, переключаю зеленую переднюю часть на синий и снова включите вход. Вуаля.

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

Вместо этого вы создаете два приложения: одно активное («синее»), а другое — предварительное («зеленое»). Вместо того, чтобы изменять записи DNS вашего сайта и ждать, пока обновление распространится по всему миру, вы можете обновить свое тестовое приложение (cf push Green добавляет новый код в ваше тестовое приложение), протестировать его с собственным URL-адресом (Green.ng.mybluemix.net), и как только вы убедитесь, что оно готово к работе, добавьте приложение в таблицу маршрутизации (cf map-route Green ng.mybluemix.net -n Blue), после чего оба приложения, «синее» и «зеленое», будут получать входящие запросы. Затем вы можете перевести предыдущую версию приложения в автономный режим, отключив ее (cf unmap-route Blue ng.mybluemix.net -n Blue).

Посетители сайта не будут сталкиваться с перебоями в обслуживании, и в отличие от «старого» способа, который я описал ранее, группе развертывания (а) не придется грызть ногти, ожидая распространения записей DNS по всему миру, прежде чем узнать, не работает ли что-то и (b) может немедленно вернуться к предыдущей известной рабочей рабочей версии, если после развертывания будет обнаружена серьезная проблема.

person Dan Kehn    schedule 13.04.2015

Вы должны использовать какую-то систему управления версиями, такую ​​как Git или SVN. Bluemix хорошо интегрирован с IBM DevOps Services (IDS), которые могут использовать git или внешний Github для управления вашим проектом. Когда вы открываете панель инструментов вашего приложения, вы должны увидеть ссылку в правом верхнем углу с надписью «ДОБАВИТЬ GIT». Это автоматически создаст репозиторий git для вашего проекта в IDS.

Используя инструмент SCM, вы можете относительно легко управлять версиями своего кода. IDS предоставляет вам возможность развертывания непосредственно в Bluemix в рамках конвейера сборки.

После того, как ваш код будет управляться, как указано выше, вы можете подумать о зеленых/синих развертываниях и т. д., как рекомендовано выше.

person christo4ferris    schedule 14.04.2015