Автомасштабирование , также пишется как автоматическое масштабирование или автомасштабирование , а иногда также называется автоматическим масштабированием , — это метод, используемый в облачных вычислениях , который динамически регулирует объем вычислительных ресурсов в серверной ферме — обычно измеряемый количеством активных серверов — автоматически в зависимости от нагрузки на ферму. Например, количество серверов, работающих за веб-приложением, может быть автоматически увеличено или уменьшено в зависимости от количества активных пользователей на сайте. Поскольку такие показатели могут существенно меняться в течение дня, а серверы являются ограниченным ресурсом, запуск которого стоит денег даже в режиме простоя, часто возникает стимул запускать «достаточное количество» серверов для поддержки текущей нагрузки, при этом сохраняя возможность поддерживать внезапные и большие всплески активности. Автомасштабирование полезно для таких нужд, поскольку оно может уменьшить количество активных серверов при низкой активности и запустить новые серверы при высокой активности. Автомасштабирование тесно связано с идеей балансировки нагрузки и основывается на ней . [1] [2]
Автоматическое масштабирование обеспечивает следующие преимущества:
Автомасштабирование отличается от фиксированного ежедневного, еженедельного или ежегодного цикла использования сервера тем, что оно реагирует на фактические шаблоны использования и, таким образом, снижает потенциальный недостаток слишком малого или слишком большого количества серверов для нагрузки трафика. Например, если трафик обычно ниже в полночь, то статическое решение масштабирования может запланировать некоторые серверы на сон ночью, но это может привести к простою в ночь, когда люди чаще пользуются Интернетом (например, из-за вирусного новостного события). Автомасштабирование, с другой стороны, может лучше справляться с неожиданными всплесками трафика. [3] [7]
В списке ниже мы используем терминологию, используемую Amazon Web Services (AWS). [8] Однако указаны альтернативные названия, и терминология, специфичная для названий сервисов Amazon, для названий не используется.
Имя (используется в AWS, [8], если не указано иное) | Значение | Альтернативные названия (используются в Google Cloud Platform, [9] Microsoft Azure, [10] или других платформах) |
---|---|---|
Пример | Отдельный сервер или машина, входящая в группу машин, подлежащих автоматическому масштабированию. | |
Группа автомасштабирования | Коллекция экземпляров, подлежащих автоматическому масштабированию, вместе со всеми связанными политиками и информацией о состоянии | Управляемая группа экземпляров (Google Cloud Platform) |
Размер | Количество экземпляров, входящих в группу автомасштабирования в данный момент | |
Желаемая вместимость (или желаемый размер) | Количество экземпляров, которые группа автомасштабирования должна иметь в любой момент времени. Если размер меньше желаемого размера, группа автомасштабирования попытается запустить (предоставить и присоединить) новые экземпляры. Если размер больше желаемого размера, группа автомасштабирования попытается удалить (отсоединить и прекратить) экземпляры | |
Минимальный размер | Число случаев, ниже которых желаемая мощность не должна опускаться | |
Максимальный размер | Число случаев, выше которых желаемая мощность не может превышаться | |
Метрическая | Измерение (такое как использование ЦП, использование памяти, использование сети), связанное с группой автомасштабирования, для которого регулярно генерируется временной ряд точек данных. Пороговые значения для метрик могут использоваться для установки политик автомасштабирования. Метрики могут быть основаны на совокупностях метрик для экземпляров группы автомасштабирования или на балансировщиках нагрузки, связанных с группой автомасштабирования | |
Политика масштабирования (или политика автомасштабирования) | Политика, которая определяет изменение желаемой емкости группы автомасштабирования (или иногда ее минимального и максимального размера) в ответ на превышение метриками определенных пороговых значений. Политики масштабирования могут иметь связанные периоды охлаждения, которые не позволяют дополнительным действиям масштабирования выполняться сразу после определенного действия масштабирования. Изменения желаемой емкости могут быть инкрементными (увеличиваться или уменьшаться на определенное число) или могут указывать новое значение желаемой емкости. Политики, которые увеличивают желаемую емкость, называются политиками «масштабирования в сторону» или «масштабирования вверх», а политики, которые уменьшают желаемую емкость, называются политиками «масштабирования в сторону» или «масштабирования вниз» | |
Проверка здоровья | Способ для группы автомасштабирования определить, функционируют ли экземпляры, присоединенные к ней, должным образом. Проверка работоспособности может основываться на том, существует ли экземпляр и доступен ли он, или на том, зарегистрирован ли экземпляр и находится ли он в рабочем состоянии с соответствующим балансировщиком нагрузки | |
Конфигурация запуска | Описание параметров и скриптов, используемых при запуске нового экземпляра. Сюда входит тип экземпляра, варианты покупки (например, спот или по требованию в случае AWS), возможные зоны доступности для запуска, образ машины и скрипты для запуска при запуске | Шаблон экземпляра (Google Cloud Platform) |
Ручное масштабирование | Масштабирование, выполняемое вручную | |
Плановое масштабирование | Политика масштабирования, которая выполняется в определенное время, например, время дня, недели, месяца или года. Подробнее см. в разделе #Scheduled scaling |
Amazon Web Services запустили сервис Amazon Elastic Compute Cloud (EC2) в августе 2006 года, который позволил разработчикам программно создавать и завершать работу экземпляров (машин). [11] [12] На момент первоначального запуска AWS не предлагал автоматического масштабирования, но возможность программного создания и завершения работы экземпляров давала разработчикам гибкость в написании собственного кода для автоматического масштабирования.
Стороннее программное обеспечение для автоматического масштабирования для AWS начало появляться примерно в апреле 2008 года. Среди них были инструменты Scalr [13] и RightScale. RightScale использовала Animoto, которая смогла обработать трафик Facebook, приняв автоматическое масштабирование. [14] [15]
18 мая 2009 года Amazon запустила собственную функцию автоматического масштабирования вместе с Elastic Load Balancing как часть Amazon Elastic Compute Cloud . [16] Теперь автоматическое масштабирование является неотъемлемым компонентом предложения Amazon EC2. [2] [17] [18] Автоматическое масштабирование в Amazon Web Services выполняется через веб-браузер или инструмент командной строки. [19] В мае 2016 года автоматическое масштабирование также было предложено в AWS ECS Service. [20]
Поставщик видео по запросу Netflix задокументировал использование автоматического масштабирования с Amazon Web Services для удовлетворения своих крайне изменчивых потребностей потребителей. Они обнаружили, что агрессивное масштабирование вверх и отложенное и осторожное масштабирование вниз лучше всего отвечают их целям бесперебойной работы и отзывчивости. [7]
В статье для TechCrunch Зев Ладерман, соучредитель и генеральный директор Newvem, сервиса, помогающего оптимизировать облачную инфраструктуру AWS, рекомендовал стартапам использовать автоматическое масштабирование, чтобы поддерживать низкие затраты на Amazon Web Services. [4]
Различные руководства по передовой практике использования AWS предлагают использовать функцию автомасштабирования даже в случаях, когда нагрузка не является переменной. Это связано с тем, что автомасштабирование предлагает два других преимущества: автоматическая замена любых экземпляров, которые становятся неработоспособными по любой причине (например, сбой оборудования, сбой сети или ошибка приложения), и автоматическая замена спотовых экземпляров, которые прерываются по причинам цены или емкости, что делает более целесообразным использование спотовых экземпляров для производственных целей. [6] [21] [22] Внутренние передовые практики Netflix требуют, чтобы каждый экземпляр находился в группе автомасштабирования, и его обезьяна соответствия завершает любой экземпляр, не входящий в группу автомасштабирования, чтобы обеспечить соблюдение этой передовой практики. [23]
27 июня 2013 года компания Microsoft объявила о добавлении поддержки автоматического масштабирования в свою платформу облачных вычислений Windows Azure . [24] [25] [26] Документация по этой функции доступна в сети разработчиков Microsoft . [10] [27]
Oracle Cloud Platform позволяет экземплярам сервера автоматически масштабировать кластер, определяя правило автоматического масштабирования. [28] Эти правила основаны на использовании ЦП и/или памяти и определяют, когда следует добавлять или удалять узлы.
17 ноября 2014 года Google Compute Engine анонсировала публичную бета-версию своей функции автоматического масштабирования для использования в приложениях Google Cloud Platform . [29] [30] [31] [32] По состоянию на март 2015 года инструмент автоматического масштабирования все еще находится в стадии бета-тестирования. [9]
В сообщении в блоге в августе 2014 года инженер Facebook сообщил, что компания начала использовать автомасштабирование, чтобы снизить свои расходы на электроэнергию. Сообщение в блоге сообщило о 27%-ном снижении потребления энергии в часы с низким трафиком (около полуночи) и 10-15%-ном снижении потребления энергии в течение типичного 24-часового цикла. [3] [33]
Kubernetes Horizontal Pod Autoscaler автоматически масштабирует количество модулей в контроллере репликации, развертывании или наборе реплик на основе наблюдаемой загрузки ЦП (или, при поддержке бета-версии, на основе некоторых других метрик, предоставляемых приложением) [34]
Автомасштабирование по умолчанию использует реактивный подход к принятию решений для масштабирования трафика: масштабирование происходит только в ответ на изменения метрик в реальном времени. В некоторых случаях, особенно когда изменения происходят очень быстро, этот реактивный подход к масштабированию недостаточен. Два других типа подходов к принятию решений автомасштабирования описаны ниже.
Это подход к автомасштабированию, при котором вносятся изменения в минимальный размер, максимальный размер или желаемую емкость группы автомасштабирования в определенное время суток. Плановое масштабирование полезно, например, если известно увеличение или уменьшение нагрузки трафика в определенное время суток, но изменение слишком внезапное для реактивного подхода, основанного на автомасштабировании, чтобы отреагировать достаточно быстро. Группы автомасштабирования AWS поддерживают плановое масштабирование. [35]
Этот подход к автомасштабированию использует предиктивную аналитику . Идея состоит в том, чтобы объединить последние тенденции использования с историческими данными об использовании, а также другими видами данных для прогнозирования использования в будущем и автомасштабирования на основе этих прогнозов.
Для частей своей инфраструктуры и определенных рабочих нагрузок Netflix обнаружил, что Scryer, их предиктивный аналитический движок, дал лучшие результаты, чем реактивный подход Amazon к автомасштабированию. В частности, он был лучше для: [36] [33]
20 ноября 2018 года AWS объявила, что предиктивное масштабирование будет доступно как часть ее предложения по автоматическому масштабированию. [37]