Как сделать свой балансер
Для производственных рабочих нагрузок рекомендуется использовать подсистему балансировки нагрузки ценовой категории "Стандартный". Дополнительные сведения о доступных ценовых категориях см. в статье Номера SKU для Azure Load Balancer.
Создание виртуальной сети
С помощью этого раздела вы создадите виртуальную сеть и подсеть.
В поле поиска в верхней части портала введите виртуальные сети. В результатах поиска выберите Виртуальные сети.
В разделе Виртуальные сети выберите + Создать.
В подменю Создать виртуальную сеть введите или выберите следующую информацию на вкладке Основные сведения:
Откройте вкладку IP-адрес или нажмите кнопку Далее: IP-адреса внизу страницы.
На вкладке IP-адреса укажите следующие сведения:
В разделе Имя подсети выберите по умолчанию.
В окне Изменение подсети введите следующие сведения:
Щелкните Сохранить.
Перейдите на вкладку Безопасность .
В разделе BastionHost выберите Включить. Введите такие сведения:
Перейдите на вкладку Просмотр и создание или нажмите кнопку Просмотр и создание.
Создание шлюза NAT
В этом разделе вы создадите шлюз NAT для исходящего доступа к Интернету со стороны ресурсов в виртуальной сети.
В поле поиска в верхней части портала введите сетевой шлюз NAT. В результатах поиска выберите NAT-шлюзы.
На странице Шлюзы NAT выберите + Создать.
В разделе Создание шлюза NAT введите или выберите следующие значения.
Откройте вкладку Исходящий IP-адрес или нажмите кнопку Далее: исходящий IP-адрес внизу страницы.
На вкладке Исходящий IP-адрес выберите Создание общедоступного IP-адреса рядом с пунктом Общедоступные IP-адреса.
В окне Добавление общедоступного IP-адреса в поле Имя введите myNATGatewayIP.
Щелкните ОК.
Откройте вкладку Подсеть или нажмите кнопку Далее: подсеть внизу страницы.
На странице Виртуальная сеть на вкладке Подсеть выберите myVNet.
В поле Имя подсети выберите myBackendSubnet.
Нажмите синюю кнопку Просмотр и создание внизу страницы или перейдите на вкладку Просмотр и создание.
Создание подсистемы балансировки нагрузки
В этом разделе показано, как создать избыточную между зонами подсистему балансировки нагрузки, которая распределяет нагрузку между виртуальными машинами. При избыточности в пределах зоны в одной или нескольких зонах доступности может произойти сбой, и путь к данным выдерживает его, пока одна зона в регионе остается работоспособной.
Во время создания подсистемы балансировки нагрузки вы настроите следующие параметры:
- Интерфейсный IP-адрес
- Серверный пул
- Правила балансировки нагрузки для входящего трафика
В поле поиска в верхней части портала введите Подсистема балансировки нагрузки. В результатах поиска выберите Подсистема балансировки нагрузки.
На странице Подсистема балансировки нагрузки щелкните Создать.
На странице Создание подсистемы балансировки нагрузки на вкладке Основные сведения укажите следующее.
В нижней части страницы выберите Далее: интерфейсная IP-конфигурация.
В разделе Интерфейсная IP-конфигурация выберите + Добавить интерфейсный протокол IP.
В поле Имя введите LoadBalancerFrontend.
Выберите IPv4 или IPv6 в качестве версии протокола IP.
IPv6 с предпочтительным вариантом маршрутизации или балансировкой нагрузки между регионами (глобальный уровень) сейчас не поддерживается.
Выберите значение IP-адрес для параметра Тип IP-адреса.
Дополнительные сведения о префиксах IP-адресов см. в статье Префикс общедоступного IP-адреса Azure.
В разделе Открытый IP-адрес выберите Создать.
В окне Добавление общедоступного IP-адреса в поле Имя введите myPublicIP.
Выберите Избыточный между зонами в поле Зона доступности.
В регионах с Зонами доступности можно выбрать вариант без зоны (параметр по умолчанию), определенную зону или избыточный между зонами. При выборе учитывайте специальные требования к отказоустойчивости домена. Для регионов без зон доступности это поле не отображается. Дополнительные сведения о зонах доступности см. .
Для параметра Предпочтение маршрутизации оставьте значение по умолчанию Сеть Майкрософт.
Щелкните ОК.
Выберите Добавить.
Внизу страницы выберите Далее: серверные пулы.
На вкладке Серверные пулы нажмите + Добавить серверный пул.
В разделе Добавление серверного пула в поле Имя введите myBackendPool.
В разделе Виртуальные сети выберите myVNET.
Выберите значение Сетевая карта или IP-адрес в поле Конфигурация внутреннего пула.
Выберите IPv4 или IPv6 в поле Версия IP-адреса.
Выберите Добавить.
Внизу страницы выберите Далее: правила для входящего трафика.
На вкладке Правила для входящего трафика в разделе Правило балансировки нагрузки выберите + Добавить правило балансировки нагрузки.
В разделе Добавление правила балансировки нагрузки введите следующую информацию или выберите указанные ниже варианты.
Выберите Добавить.
В нижней части страницы нажмите синюю кнопку Просмотр + создание.
В этом примере мы создали шлюз NAT для предоставления исходящего доступа к Интернету. Вкладка правил для исходящего трафика в конфигурации пропускается, так как она не требуется для шлюза NAT. Дополнительные сведения о шлюзе NAT Azure см. в разделе Что такое NAT виртуальной сети Azure? Дополнительные сведения об исходящих подключениях в Azure см. по этой ссылке.
Создание виртуальных машин
В этом разделе показано, как создать три виртуальные машины (myVM1, myVM2 и myVM3) в трех разных зонах (зона 1, зона 2 и зона 3).
Эти виртуальные машины добавляются во внутренний пул подсистемы балансировки нагрузки, которую вы создали ранее.
В поле поиска в верхней части портала введите Виртуальная машина. В результатах поиска выберите Виртуальные машины.
На странице Виртуальные машины выберите + Создать Виртуальная машина.
В разделе Создание виртуальной машины на вкладке Основные сведения укажите следующее.
Выберите вкладку Сети или Next: Disks (Далее: диски), а затем Next: Networking (Далее: сеть).
На вкладке "Сеть" укажите следующее.
Выберите Review + create (Просмотреть и создать).
Проверьте параметры, а затем нажмите кнопку Создать.
Выполните шаги 1–7, чтобы создать еще две виртуальные машины с приведенными ниже значениями. Все остальные параметры совпадают с параметрами виртуальной машины myVM1.
Azure предоставляет IP-адрес исходящего трафика по умолчанию для виртуальных машин Azure, которым не назначен общедоступный IP-адрес или которые находятся в серверном пуле внутреннего Azure Load Balancer цен. категории "Базовый". Механизм IP-адреса исходящего трафика по умолчанию предоставляет исходящий IP-адрес, который нельзя настроить.
Дополнительные сведения об исходящем доступе по умолчанию см. в статье Исходящий доступ по умолчанию в Azure.
IP-адрес исходящего трафика по умолчанию отключается, когда виртуальной машине назначается общедоступный IP-адрес или виртуальная машина помещается в серверный пул Azure Load Balancer цен. категории "Стандартный" с правилами для исходящего трафика или без них. Если ресурс шлюза виртуальной сети Azure NAT назначен подсети виртуальной машины, IP-адрес исходящего трафика по умолчанию отключен.
В виртуальных машинах, созданных с помощью масштабируемых наборов виртуальных машин в режиме гибкой оркестрации, исходящий доступ по умолчанию не предусмотрен.
Для производственных рабочих нагрузок рекомендуется использовать подсистему балансировки нагрузки ценовой категории "Стандартный". Дополнительные сведения о доступных ценовых категориях см. в статье Номера SKU для Azure Load Balancer.
Создание виртуальной сети
С помощью этого раздела вы создадите виртуальную сеть и подсеть.
В поле поиска в верхней части портала введите виртуальные сети. В результатах поиска выберите Виртуальные сети.
В разделе Виртуальные сети выберите + Создать.
В подменю Создать виртуальную сеть введите или выберите следующую информацию на вкладке Основные сведения:
Откройте вкладку IP-адрес или нажмите кнопку Далее: IP-адреса внизу страницы.
На вкладке IP-адреса укажите следующие сведения:
В разделе Имя подсети выберите по умолчанию.
В окне Изменение подсети введите следующие сведения:
Щелкните Сохранить.
Перейдите на вкладку Безопасность .
В разделе BastionHost выберите Включить. Введите такие сведения:
Перейдите на вкладку Просмотр и создание или нажмите кнопку Просмотр и создание.
Создание виртуальных машин
С помощью инструкций из этого раздела вы создадите три виртуальных машины (myVM1, myVM2 и myVM3).
Эти три виртуальные машины будут добавлены в группу доступности с именем myAvailabilitySet.
В поле поиска в верхней части портала введите Виртуальная машина. В результатах поиска выберите Виртуальные машины.
На странице Виртуальные машины выберите + Создать Виртуальная машина.
В разделе Создание виртуальной машины на вкладке Основные сведения укажите следующее.
Выберите вкладку Сети или Next: Disks (Далее: диски), а затем Next: Networking (Далее: сеть).
На вкладке "Сеть" укажите следующее.
Выберите вкладку Управление или Далее Управление.
На вкладке Управление укажите следующее.
Выберите Review + create (Просмотреть и создать).
Проверьте параметры, а затем нажмите кнопку Создать.
Выполните шаги 1–9, чтобы создать еще две виртуальные машины с приведенными ниже значениями. Все остальные параметры совпадают с параметрами виртуальной машины myVM1.
Azure предоставляет IP-адрес исходящего трафика по умолчанию для виртуальных машин Azure, которым не назначен общедоступный IP-адрес или которые находятся в серверном пуле внутреннего Azure Load Balancer цен. категории "Базовый". Механизм IP-адреса исходящего трафика по умолчанию предоставляет исходящий IP-адрес, который нельзя настроить.
Дополнительные сведения об исходящем доступе по умолчанию см. в статье Исходящий доступ по умолчанию в Azure.
IP-адрес исходящего трафика по умолчанию отключается, когда виртуальной машине назначается общедоступный IP-адрес или виртуальная машина помещается в серверный пул Azure Load Balancer цен. категории "Стандартный" с правилами для исходящего трафика или без них. Если ресурс шлюза виртуальной сети Azure NAT назначен подсети виртуальной машины, IP-адрес исходящего трафика по умолчанию отключен.
В виртуальных машинах, созданных с помощью масштабируемых наборов виртуальных машин в режиме гибкой оркестрации, исходящий доступ по умолчанию не предусмотрен.
Создание подсистемы балансировки нагрузки
В этом разделе показано, как создать подсистему балансировки нагрузки, которая распределяет нагрузку между виртуальными машинами.
Во время создания подсистемы балансировки нагрузки вы настроите следующие параметры.
- Интерфейсный IP-адрес
- Серверный пул
- Правила балансировки нагрузки для входящего трафика
В поле поиска в верхней части портала введите Подсистема балансировки нагрузки. В результатах поиска выберите Подсистема балансировки нагрузки.
На странице Подсистема балансировки нагрузки выберите + Создать.
На странице Создание подсистемы балансировки нагрузки на вкладке Основные сведения укажите следующее.
В нижней части страницы выберите Далее: интерфейсная IP-конфигурация.
В разделе Интерфейсная IP-конфигурация выберите + Добавить интерфейсный протокол IP.
В поле Имя введите LoadBalancerFrontend.
Выберите IPv4 или IPv6 в качестве версии протокола IP.
Выберите вариант Создать новый в разделе Общедоступный IP-адрес.
В окне Добавление общедоступного IP-адреса в поле Имя введите myPublicIP.
Для параметра Назначение выберите Статическое.
Щелкните ОК.
Выберите Добавить.
Внизу страницы выберите Далее: серверные пулы.
На вкладке Серверные пулы нажмите + Добавить серверный пул.
В разделе Добавление серверного пула в поле Имя введите myBackendPool.
В разделе Виртуальные сети выберите myVNET.
В разделе Сопоставлено с выберите Виртуальные машины.
Выберите IPv4 или IPv6 в поле Версия IP.
В разделе Виртуальные машины нажмите синюю кнопку + Добавить.
В разделе Добавление виртуальных машин во внутренний пул установите флажки рядом с myVM1, myVM2 и myVM3.
Выберите Добавить.
Выберите + Добавить в поле Добавить серверный пул.
Внизу страницы выберите Далее: правила для входящего трафика.
На вкладке Правила для входящего трафика в разделе Правило балансировки нагрузки выберите + Добавить правило балансировки нагрузки.
В разделе Добавление правила балансировки нагрузки введите следующую информацию или выберите указанные ниже варианты.
Выберите Добавить.
В нижней части страницы нажмите синюю кнопку Просмотр + создание.
Установка служб IIS
В поле поиска в верхней части портала введите Виртуальная машина. В результатах поиска выберите Виртуальные машины.
Выберите myVM1.
На странице Обзор выберите Подключиться и Бастион.
Выберите Использовать бастион.
Введите имя пользователя и пароль, введенные в процессе создания виртуальной машины.
Выберите Подключиться.
На рабочем столе сервера перейдите к Средства администрирования Windows Windows PowerShell.
В окне PowerShell выполните команды, чтобы:
- установить сервер IIS;
- удалить файл iisstart.htm по умолчанию;
- добавить новый файл iisstart.htm, в котором отображается имя виртуальной машины.
Закройте сеанс Бастиона с myVM1.
Повторите шаги 1–8, чтобы установить IIS и добавить обновленный файл iisstart.htm на myVM2 и myVM3.
Тестирование подсистемы балансировки нагрузки
В поле поиска в верхней части страницы введите Подсистема балансировки нагрузки. В результатах поиска выберите Подсистема балансировки нагрузки.
Найдите общедоступный IP-адрес подсистемы балансировки нагрузки, который указан на странице Обзор в разделе Общедоступный IP-адрес.
Скопируйте общедоступный IP-адрес и вставьте его в адресную строку браузера. В браузере отобразится страница пользовательской виртуальной машины веб-сервера IIS.
Очистка ресурсов
Ставшие ненужными группу ресурсов, подсистему балансировки нагрузки и все связанные ресурсы можно удалить. Для этого выберите группу ресурсов CreatePubLBQS-rg, которая содержит все эти ресурсы, и щелкните Удалить.
Дальнейшие действия
В этом кратком руководстве вы:
- создать Azure Load Balancer ценовой категории "Стандартный" или "Базовый";
- подключить три виртуальных машины к подсистеме балансировки нагрузки;
- протестировать подсистему балансировки нагрузки.
Чтобы узнать больше об Azure Load Balancer, ознакомьтесь со следующей статьей:
Начните работу с Azure Load Balancer, создав с помощью портала Azure общедоступную подсистему балансировки нагрузки и три виртуальные машины.
Начать работу с Elastic Load Balancing можно несколькими способами. Application Load Balancer, Network Load Balancer или Gateway Load Balancer можно настроить с помощью API, интерфейсов командной строки (CLI) AWS или в консоли управления AWS.
При использовании Elastic Load Balancing с Auto Scaling можно создавать высокодоступные отказоустойчивые приложения, которые будут автоматически масштабировать ресурсы как в сторону увеличения, так и в сторону уменьшения в зависимости от колебаний спроса.
Следуйте шагам, представленным в разделе Начало работы с помощью консоли управления AWS, или ознакомьтесь с дополнительными ресурсами ниже, чтобы начать работу прямо сейчас.
Начало работы с помощью консоли управления AWS
Давайте начнем работу с создания балансировщика нагрузки с помощью мастера Elastic Load Balancing в консоли управления AWS, используя интерактивный веб‑интерфейс.
Основы балансировки нагрузки
Балансировка нагрузки — это метод распределения рабочих нагрузок по нескольким вычислительным ресурсам, таким как компьютеры, сетевые ссылки или диски. Он направлен на улучшение использования ресурсов, максимизацию пропускной способности, улучшение времени отклика и обеспечение отказоустойчивости. В этой статье мы поговорим конкретно о типах балансировки нагрузки, поддерживаемых nginx. Однако другие приложения (например, серверы баз данных) также могут использовать балансировку нагрузки.
Балансировщики нагрузки обычно классифицируются как аппаратные и программные. Первые, являются специализированным оборудованием и несут специализированные интегральные схемы (ASIC), которые очень эффективно маршрутизируют трафик. С другой стороны, программные балансировщики нагрузки, такие как nginx или HAproxy, выполняют балансировку нагрузки в программном обеспечении.
В большинстве дистрибутивов Linux файл конфигурации nginx находится в /etc/nginx/nginx.conf . Однако в Debian/Ubuntu этот файл разделен на два разных: /etc/nginx/nginx.conf для основной конфигурации и /etc/nginx/sites-enabled/default для отдельных веб-сайтов, которые вы размещаете. Если вы используете Debian/Ubuntu, вы должны добавить upstream блоки в первый, а блок location во второй.
Балансировка нагрузки веб-приложений
Nginx также поддерживает пару прокси для нескольких других протоколов с такими директивами, как FastCGI и uWSGI с директивами fastcgi_pass и uwsgi_pass. Скажем, например, что на каждом внутреннем сервере на порту 9000 работает демон PHP-FPM, и вы хотите передавать запросы к ним через прокси. Вот как будет выглядеть конфигурация:
Стратегии балансировки нагрузки
У nginx есть несколько стратегий выбора сервера для отправки запросов. По умолчанию он использует алгоритм циклического перебора для определения сервера, на который должен быть отправлен запрос. Однако доступны и другие стратегии, которые вы можете включить вручную. Стратегия least_conn выбирает сервер, который обрабатывает наименьшее количество соединений. С другой стороны, стратегия ip_hash выбирает серверы на основе результата запуска хэш-функции на IP. Это означает, что запросы с одного и того же IP-адреса попадают на один и тот же сервер.
Чтобы использовать стратегию, отличную от принятой по умолчанию, просто укажите ее имя в upstream блоке:
Как вы можете сказать, мы используем стратегию циклического перебора в этом примере. С приоритетами, которые мы показали в примере выше, каждые 4 из 7 запросов будут отправляться на первый сервер, 2 из них на второй и 1 на третий. (Как мы упоминали ранее, приоритет по умолчанию равен 1, поэтому мы оставили его в приведенном выше примере.)
Расширенные настройки
В приведенном ниже примере мы установили max_fails 3, а fail_timeout 20 секундам для первого сервера:
Кроме того, вы можете пометить определенный сервер, который будет обрабатываться по-разному. Если вы выполняете обслуживание на одном из внутренних серверов, вы можете пометить его как down . Запросы, которые будут обрабатываться этим сервером, теперь отправляются на следующий сервер в группе. Вы также можете пометить определенный сервер в качестве backup сервера. Запросы будут переданы ему, когда все остальные серверы будут недоступны. Пример этих двух директив показан ниже:
Некоторые общие проблемы
Балансировка нагрузки nginx транспортного уровня
Как мы упоминали ранее, nginx также может выполнять балансировку нагрузки на транспортном уровне. Синтаксис немного отличается от того, который мы видели ранее. В частности, как upstream и server разделы содержатся внутри stream блока.
Чтобы использовать эту функцию, вы должны скомпилировать nginx с ключом --with-stream . В Debian и Ubuntu версия nginx в репозиториях уже скомпилирована с этим флагом, поэтому вы можете использовать ее напрямую.
Предположим, у вас есть несколько DNS-серверов, и вы хотите использовать nginx в качестве балансировщика нагрузки. Вам просто нужно поместить это в файл конфигурации:
Балансировка нагрузки с TCP довольно похожа.
Здесь также применяются стратегии балансировки нагрузки и другие параметры конфигурации, которые мы описали ранее.
Заключение
Nginx предоставляет мощные возможности балансировки нагрузки с широким спектром опций. Если вы хотите узнать больше, обязательно ознакомьтесь с официальной документацией .
Как я и обещал когда-то, посмотрим теперь, как создать и настроить в гугловом облаке балансировщик нагрузки уже для внешнего траффика. External load balancer (ELB), то есть. Не кнопочками и формочками, а через файлы конфигурации и Deployment Manager, чтобы всё по-взрослому. Ведь хотя external балансировщик и будет похож на internal load balancer, это всё-таки совсем другой зверь:
Если вы помните, то internal load balancer выглядел примерно вот так:
Вместе это выглядит примерно вот так:
Да, в общем случае нам нужно будет добавить ещё пару вспомогательных ресурсов. Во-первых, нужно настроить файрвол для health check траффика. Во-вторых, возможно, придётся явно задать внешний IP адрес, если вдруг захочется использовать уже существующий или просто дать ему имя как ресурсу.
Как обычно, мы рассмотрим все компоненты один за одним, и начнём с конца списка: с управляемой группы инстансов (managed instance group) и её шаблона.
Управляемая группа инстансов (виртуальных машин) и её шаблон
В конфигурации шаблона инстанса нет абсолютно ничего интересного. Обычная заготовка Ubuntu сервера с установленным на нём Apache. Хотя в виртуальной машине и задана внешняя айпишка, строго говоря, для ELB она не нужна. Но так как для выхода в интернет такая айпишка уже понадобится, а наш apt-get, устанавливающий Apache сервер, туда обязательно полезет, пришлось её оставить. Можно было бы конечно настроить какой-нибудь NAT Gateway, либо создать образ инстанса с уже предустановленным софтом, но ай.
Кстати, в этот раз управляемая группа инстансов (managed instance group, MIG) стала региональной, что очень полезно для high-availability. Мы скажем группе создать сразу две виртуальные машины, та автоматически раскидает их по разным зонам одного региона, и теперь внезапно мы и отказ одной из зон сможем пережить, и будет среди кого балансировать входящий траффик. Всё по-взрослому.
Бэкенд сервис
MIG — группа инстансов — в каком-то смысле образует сервис, так что почему бы не объявить его явно. К тому же, если в будущем у нас появится ещё один MIG, например, в другом регионе, но раздающий тот же контент, можно будет добавить его в этот же сервис и таким образом сделать последний глобальным.
Так как сервис ссылается на health check, которого ещё нет, то создадим-ка мы и его. Ну и ещё правило для файрвола, чтобы траффик пропустили.
URL Map
А вот теперь что-то совсем новенькое. URL Map работает как роутер для траффика из ELB. Мы можем завести несколько бэкенд сервисов, каждый со своей логикой, а затем настроить URL Map перенаправлять траффик к тому либо другому сервису в зависимости от URL. Это очень круто, потому что API сервисы могут висеть на одних инстансах, медийный контент — на других, а ELB будет общий.
Но сервис у нас всего один, так что мы просто положим его в defaultService параметр и пойдём гулять дальше.
sslCertificate — это всего лишь ещё один тип ресурса, поддерживаемый Deployment Manager’ом. Я сгененировал сертификат, положил его в YAML, и отправил вместе с ресурсом прямо в бесконечное гугловое облако. Две минуты работы.
Глобальный forwarding rule и внешняя айпишка
Наконец, точка входа в наш ELB — глобальный forwarding rule.
Если бы мы остановились на этом месте, гугл бы автоматически задал автосгенерированый внешний айпи, и история бы закончилась. Но так как я хочу, чтобы все ресурсы были явными, то добавим-ка ещё две строки для уже явного, но всё ещё автосгенерированного внешнего IP адреса.
И наконец…
Но в конце-концов этот момент наступит. Health checks позеленеют:
Менеджер группы инстансов отрапортует, что все сервера живы-здоровы:
И наступит вселенская благодать:
Мораль
Но всё-таки конфигурация ELB это такая штука, которую нужно создать раз, и дальше копипастить, копипастить, и ещё раз копипастить. Во второй раз я с нуля эту штуку не напишу. И вам не советую. Ну разве что для учёбы.
Вам также может понравиться
Краткое введение в helm
Взгляд пещерного человека на современный фронт-энд
Полезная штука. Интересно, сколько это стоит?
Первые 5 forwarding rule стоят что-то около 18 баксов в месяц за штуку. SSLCertificate, URL Map, сервисы и прокси, вроде, не стоят ничего. Дальше стоить уже будут инстансы, и там можно разгуляться. Один f1-micro (vcpu, 0.6 GB) в месяц идёт бесплатно, но самая дешёвая нормальная машинка будет стоить вроде 32 бакса в месяц. + Диски, тоже зависит от размера. Но теоретически самый дешёвый ELB на одной f1-micro машине можно собрать именно за 18 баксов. Просто непонятно, среди чего именно он будет балансировать траффик 🙂
То есть в принципе, на те 300 баксов кредита на год что они предлагают, можно развернуться и все протестить. Интересно, а потом, если втянешься в это дело, цена не вырастет на порядок?
Не, цены у них стандартные, что в бесплатные 300 баксов, что после них. + если ресурсы используются предсказуемо: если виртуальная машина непрерывно работала целый месяц, то даже идут скидки за постоянное использование (sustained use discounts), которые я совсем забыл учесть, когда думал, стоит ли переезжать в Digital Ocean на гугл. Ну и квоты в настройках проекта можно проставить, мол, если я потратил больше чем сотню, тормози всё.
Насколько я помню, AWS тоже даёт кредит денег на год, и тоже можно играться. Microsoft немного жмоты, там вроде всего на месяц, но я знаю кучу случаев, когда MS давали какой-нить промо сертификат на 10-100k на год на использование в Azure. Типа для продвижения в массы.
Тут главное ни в гугле, ни в любом другом облаке не засветить свои ключи от сервисных аккаунтов и тем более не закоммитить их на гитхабе. Народ репозитории сканит регулярно, мгновенно просекают такие ключи, создают при их помощи биткойн фермы, а в конце месяца приходит счёт на средних размеров новую Тойоту. Но в таких случаях часто можно договориться со службой поддержки, мол, то были злоумышленники, и счета прощают.
Читайте также: