0

practicum

Практическая работа. Обновление приложения

26.04.2022

На практической работе с утилитой yc мы уже рассматривали обновление операционной системы для группы виртуальных машин (ВМ). Любые приложения, установленные на ВМ, обновляются по тем же правилам. Давайте рассмотрим этот процесс ещё раз.

Первый вариант обновления

  1. Если вы работаете в веб-интерфейсе, измените шаблон ВМ и выберите образ с ОС Ubuntu 20.04. Убедитесь, что параметры политики развёртывания такие: группу нельзя расширять, а уменьшать можно только на одну ВМ.
image

Политика развёртывания группы виртуальных машин (вариант 1)Если вы работаете в командной строке, в спецификации specification.yaml измените image_id (например, с fd8fosbegvnhj5haiuoq на fd87uq4tagjupcnm376a) и запустите обновление группы:

yc compute instance-group update --name my-group --file specification.yaml 
  1. В группе ВМ перейдите в раздел Список ВМ и проследите, как меняются статусы машин.
  2. Сначала вы увидите статус Running outdated. Это означает, что машины работают со старой версией приложения.
  3. Затем одна из машин начинает обновляться: для неё закрывается трафик (Closing traffic), она останавливается (Stopping instance), обновляется (Updating instance), затем трафик снова открывается (Opening traffic), и наконец статус меняется на Running actual: обновление выполнено.
  4. Затем то же самое последовательно выполняется для остальных машин в группе.

Порядок обновления зависит от политики развёртывания. Мы запретили увеличивать размер группы и указали, что одновременно неработоспособной может быть только одна машина. Именно так и произошло обновление: машины по одной выводились из строя, обновлялись и запускались снова.

Второй вариант обновления

  1. Теперь давайте изменим настройки политики развёртывания.

Если вы работаете в веб-интерфейсе, измените шаблон ВМ и выберите образ с Ubuntu и nginx, созданный ранее и помещённый в Container Registry.Измените параметры развёртывания. Теперь группу можно расширять на одну ВМ, а уменьшать нельзя:

image

Политика развёртывания группы виртуальных машин (вариант 2)Если вы работаете в командной строке, в спецификации specification.yaml измените image_id (например, снова с fd87uq4tagjupcnm376a на fd8fosbegvnhj5haiuoq). Параметры обновления измените так:

deploy_policy:
    max_unavailable: 0
    max_expansion: 1 

Запустите обновление группы.

  1. В группе ВМ перейдите в раздел Список ВМ и проследите, как меняются статусы машин.
  2. Сначала вы увидите статус Running outdated. Затем создаётся новая машина (Creating instance), для неё открывается трафик (Opening traffic), статус машины меняется на Running actual, при этом одна из «устаревших» ВМ выводится из строя (Closing traffic и Stopping instance).
  3. Затем то же самое последовательно выполняется для остальных машин в группе.

Свежие комментарии

Подписка

Лучшие статьи


Fatal error: Uncaught Error: Call to a member function have_posts() on null in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php:380 Stack trace: #0 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/widget.php(257): fox56_blog_grid(NULL, Array) #1 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/register.php(33): include('/home/host18670...') #2 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/class-wp-widget.php(394): Wi_Widget_Latest_Posts->widget(Array, Array) #3 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/widgets.php(837): WP_Widget->display_callback(Array, Array) #4 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(417): dynamic_sidebar('sidebar') #5 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(136): fox56_single_sidebar() #6 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(7): fox56_single_inner() #7 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/single.php(23): fox56_single() #8 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/template-loader.php(106): include('/home/host18670...') #9 /home/host1867038/the-devops.ru/htdocs/www/wp-blog-header.php(19): require_once('/home/host18670...') #10 /home/host1867038/the-devops.ru/htdocs/www/index.php(17): require('/home/host18670...') #11 {main} thrown in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php on line 380