Виртуальные Машины

Виртуальные машины

Остался последний момент. На практических занятиях вы будете учиться работать с различными сервисами Yandex.Cloud. Почти все из них будут доступны сразу. Но два сервиса — группы безопасности и LockBox — пока находятся на стадии Preview, то есть для их использования надо обратиться в техподдержку Yandex.Cloud и попросить открыть к ним доступ. Лучше сделать это заранее, потому что заявка может рассматриваться до 10 дней.

Чтобы обратиться в техподдержку, перейдите по ссылке и в разделе Свяжитесь с нами нажмите на плашку Сообщение. Не забудьте добавить в тему сообщения хэштег #практикум. Само письмо может выглядеть примерно так: “Здравствуйте! Я прохожу профессию “Инженер облачных сервисов” на Яндекс.Практикуме. Просьба открыть для меня доступ к группам безопасности и LockBox для выполнения практических работ”.

  • Создать акк в Клауде

Serial port

ssh -t -p 9600 -o IdentitiesOnly=yes -i <private_key_path> <vm_id>.<username>@serialssh.cloud.yandex.net

Метаданные

Получайте метаданные изнутри ВМ с помощью сервиса метаданных (он доступен из любой ВМ по адресу http://169.254.169.254) и используйте их для настройки машины или софта на ней

Создаём снимок с диска второй виртуальной машины

Целостность данных

В первую очередь обеспечьте целостность данных. Для этого подсоединитесь к ВМ по SSH. Чтобы записать кеш операционной системы на диск, выполните команду sync
 (иначе изменения файлов, хранящиеся в оперативной памяти, будут потеряны). Затем, чтобы заморозить файловую систему, выполните команду fsfreeze -f <точка монтирования>. Чтобы узнать нужный файл устройства диска, подключитесь к ВМ по SSH и выполните команду df -h для вывода полного списка устройств и точек их монтирования

Создание публичных образов

Чтобы пользователи Yandex.Cloud могли создавать ВМ и диски с помощью вашего образа — сделайте его публичным, т. е. доступным для всех

Доступ в интернет

Чтобы ВМ полноценно заработала, организуйте доступ в интернет. Есть три способа:

  1. Назначить машине публичный IP-адрес.

  2. Включить NAT для подсети.

  3. Установить NAT-сервер и создать соответствующий маршрут.

    С точки зрения безопасности лучше выбрать способ 2 или 3, чтобы на сервер не было прямого доступа из интернета. Но в таком случае придётся установить бастион-хост: отдельный сервер, задача которого — противостоять атакам извне. В нашем примере для простоты присвоим серверу публичный адрес. Для этого при создании ВМ выберите автоматический способ назначения IP-адреса.

Группы безопасности

Виды правил

  • Для входящего трафика. Определяют диапазоны адресов и портов или другие группы безопасности, откуда ВМ могут принимать трафик.
  • Для исходящего трафика. Определяют диапазоны адресов и портов или другие группы безопасности, куда ВМ могут отправлять трафик.

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

IP-адреса и диапазоны адресов

Группы безопасности не блокируют отправку трафика на адреса сервисов, необходимых для работы ВМ и виртуальной сети. Это:

  • Адрес сервера метаданных — 169.254.169.254.
  • Адрес DNS-сервера — второй по порядку внутренний IP-адрес (обычно x.x.x.2) в каждой подсети.

Чтобы сетевой балансировщик мог проверять состояние подключённых к нему ресурсов, разрешите передачу трафика между диапазонами адресов 198.18.235.0/24 и 198.18.248.0/24 и целевыми ресурсами

Балансировка нагрузки

Чтобы настроить сетевую балансировку в Yandex Network Load Balancer, разберёмся с двумя базовыми понятиями.

Первое — это целевая группа, т. е. набор серверов или других облачных ресурсов, по которым распределятся запросы пользователей. Целевая группа выглядит как список внутренних IP-адресов и подсетей, к которым эти IP-адреса относятся

Второе базовое понятие — обработчик. Это приложение принимает соединения от пользователей, распределяет их между IP-адресами целевой группы, а затем передаёт обратный трафик клиентам

Кроме того, вы можете задать несколько обработчиков. Это пригодится, если запущенный на ВМ сервис предполагает использование нескольких портов сразу. К примеру, вы хостите над Git надстройку наподобие GitLab. Значит, одновременно должны быть доступны и веб-интерфейс, и сервер Git, работающие на разных портах

Организуйте двухуровневую архитектуру с балансировщиками на четвертом (транспортном) уровне OSI и седьмом уровне приложения (например, HTTP). Балансировщик четвертого уровня будет принимать трафик и передавать его целевой группе балансировщиков седьмого уровня, а те распределят трафик по ВМ с приложениями. В качестве балансировщиков седьмого уровня вы можете использовать ВМ, на которые установили софт (например, nginx).

Группы виртуальных машин

Управлять большим количеством виртуальных машин (ВМ) вручную непросто. Всегда есть риск, что вы не отследите программный сбой или пиковую нагрузку, из-за чего сервис — к неудовольствию пользователей — ляжет.

Чтобы избежать таких неприятностей, настройте управление группами ВМ* (или инстанс-группами). Сгруппируйте однотипные ВМ, которые могут находиться в разных зонах доступности, а затем определите, по каким правилам система работает с группами.

Автоматическое масштабирование

Вот как это работает:

  1. Создайте группу ВМ.
  2. Укажите, какие метрики системе отслеживать, чтобы вовремя добавлять или убирать ВМ. Обычно это нагрузка CPU: при загруженном на 100% процессоре сервис попросту перестаёт отзываться на действия посетителей. Вы можете использовать и свои метрики (например, время ответа сервиса).
  3. Укажите целевое значение метрики. Например, загрузка CPU — в среднем не больше 50%.

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

Но если после каждого всплеска и спада нагрузки создавать и удалять ВМ — это тоже приведёт к расходу ресурсов. Поэтому количество ВМ регулируется при помощи нескольких переменных:

  • Период стабилизации. После увеличения количества машин в группе ВМ не удаляются сразу и сохраняются заданное время, даже если среднее значение метрики стало заметно ниже её целевого значения. В этом случае при повторном всплеске нагрузки уже будет доступна хотя бы одна дополнительная ВМ, которая перехватит часть запросов.
  • Период прогрева. Запуск ВМ иногда приводит к аномально высокой нагрузке. Период прогрева позволяет игнорировать её заданное время.
  • Период усреднения. Instance Groups использует усреднённые значения всех метрик и игнорирует резкие скачки нагрузки CPU за некоторую единицу времени. Вне периодов стабилизации и прогрева Instance Groups несколько раз в минуту измеряет нагрузку CPU на каждой ВМ и усредняет значения за время, указанное как период усреднения. Затем выполняет дополнительное усреднение по зонам доступности. Если по результатам расчёта нужно создать ещё одну ВМ — Instance Groups запустит этот процесс и начнёт рассчитывать среднюю нагрузку заново.

Вы также можете установить в Yandex Monitoring пользовательские метрики. Например, среднее время ответа сервиса. Укажите имя метрики и её целевое значение. Если оно будет превышено, Instance Groups создаст дополнительные машины для распределения нагрузки.

Code/Yandex Cloud Практикум/Serverless/Untitled.png

Untitled

Untitled