Я хочу настроить автомасштабирование в AWS. Я не хочу использовать Elastic Load Balancer.
Автоматический вызов в Amazon создает экземпляры EC2 незаметно в периоды пиковых нагрузок для поддержания производительности и автоматически снижается в периоды затухания спроса для минимизации затрат.
Поскольку эти экземпляры EC2 создаются автоматически, их имена хостов неизвестны NGINX.
Я знаю и уже настроил апстрим в nginx до 10 экземпляров EC2.
Я хочу иметь возможность автоматически добавлять / обновлять / удалять имена серверов в моей исходной конфигурации nginx, когда автоматическое масштабирование добавляет / обновляет / удаляет экземпляры EC2.
nginx
amazon-ec2
amazon-web-services
autoscaling
Луис Лобо Боробия
источник
источник
Ответы:
Это может быть достигнуто с помощью Amazon SDK (я почти закончу с ним, переместу его на github), используя сервисы SNS, EC2 и Autoscaling.
Я выполнил следующие шаги для достижения этой цели:
Пожалуйста, найдите скрипт здесь https://github.com/singhupendra/aws-autoscale
источник
Спасибо @talonx, я провел некоторое исследование, Amazon Autoscale имеет API для запроса текущего статуса автомасштабирующей группы и перечисляет ее членов. Он возвращает идентификатор экземпляра ( http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/api_requests.html#query-example ), затем вы можете использовать инструменты описания, чтобы получить имя сервера ( http: // docs .aws.amazon.com / AWSEC2 / latest / CommandLineReference / ApiReference-cmd-DescribeInstances.html ) и, наконец, воссоздать исходный включаемый файл. Я мог чувствовать уведомления Autoscaling, чтобы запустить процесс, который выполняет эти задачи.
Я все еще не реализовал это, но это путь.
Можно также использовать Autocaling с SNS http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/ASGettingNotifications.html
источник
Я еще не реализовал это сам, но я изучаю возможность быстрой реконфигурации NGiNX Plus . Я думаю, что либо AMI, либо управление конфигурацией (Puppet, Salt и т. Д.), Которое устанавливает экземпляр группы автоматического масштабирования, может достичь API переконфигурирования NGiNX (возможно, через внутреннее доменное имя Route53, поэтому никакой фиксированный IP-адрес не будет необходимо использовать), и добавьте себя в вышестоящий кластер для обратного прокси. После этого встроенная проверка работоспособности NGiNX заменит этот [добавленный] экземпляр и отбросит его на случай, если он станет недоступным. Это кажется самым чистым решением, и нет никакой задержки в добавлении экземпляра, и почти нет задержки в его отбрасывании, поскольку в NGiNX Plus имеется внешняя проверка работоспособности.
При таком подходе не требуется настраивать систему автоматического обнаружения (Consul, Serf и т. Д.), Которая для небольших установок часто кажется слишком сложной как с точки зрения настройки / администрирования, так и с точки зрения требуемых экземпляров EC2. Консул, например, требует, чтобы минимум три экземпляра были стабильными. Возможно, Serf может работать на самих экземплярах ASG, но все еще есть издержки на его обслуживание, и если ASG уменьшится до одного или двух экземпляров, вы потеряете кворум.
Наконец, это может быть объединено с автоматическим уведомлением об изменениях группы автоматического масштабирования, возможно, на серверах NGiNX, которые используются для балансировки нагрузки. Слушатель, запускаемый таким уведомлением (это может быть то, на что также ссылался Upendra), может затем мгновенно добавить новый экземпляр в NGiNX через API модификации «на лету». Помимо стоимости NGiNX Plus, возникает вопрос: зачем вообще использовать Elastic Load Balancer с его многочисленными проблемами?
Редактирование 2015-12-07: ngx_openresty «ы балансир-на-Lua ( см это GitHub нить ) предлагает другое возможное решение с открытым исходным кодом для горячего добавления / удаления серверов из группы Nginx вверх по течению. Я еще не экспериментировал с этим сам, но хотел бы добавить здесь упоминание для всех, кто наткнулся на этот пост.
источник