#amazon-web-services #aws-fargate #aws-load-balancer #aws-elb
Вопрос:
У меня есть служба, развернутая на Fargate, которая автоматически масштабируется, и подключенный к Интернету балансировщик нагрузки, направляющий трафик на эту службу.
Служба использует кэш в памяти для получения быстрых ответов, и, следовательно, автоматическое масштабирование запускается, когда мы начинаем испытывать нехватку памяти. Содержимое, которое нам нужно из кэша, зависит от запроса.
Если ситуация запуска с одним запущенным экземпляром сервиса выглядит следующим образом
_______ ________________
| ELB | Request for project A -> | Service with |
|_____| Request for project B -> |__cache________|
и служба автоматически масштабируется до 2 экземпляров, я хотел бы в итоге
_______ ______________________________
| ELB | Request for project A -> | Instance 1 of Service with |
|_____| |__cache_____________________|
______________________________
Request for project B -> | Instance 2 of Service with |
|__cache_____________________|
Таким образом, Instance 1
службы могут использовать весь свой кэш в памяти для ресурсов, связанных с проектом A, а Instance 2
службы — кэш в памяти для ресурсов, связанных с проектом B.
Если бы оба экземпляра получали набор запросов для проектов A и B, их кэш был бы слишком мал, и им постоянно приходилось бы выгружать содержимое из кэша и загружать новое содержимое, сводя на нет всю цель, по которой мы в первую очередь запустили автоматическое масштабирование.
Самое близкое, что я нашел, — это использование липких сеансов, но я не думаю, что это решит мою проблему, поскольку первый запрос, который создает файл cookie, может попасть не в ту службу. Также не помогло бы, если бы запросы поступали до автоматического масштабирования сервиса.
Комментарии:
1. Такие вещи обрабатываются несколькими целевыми группами. Поскольку у вас есть два разных сервиса, вам необходимо настроить целевые группы.
2. @Marcin Возможно, из вопроса было неясно, но это тот же сервис. Запущено всего несколько экземпляров (отредактируем и уточним). Ваш совет все еще применим в этом случае?
3. Если это тот же сервис, вы не можете этого сделать. Весь смысл службы ECS заключается в том, чтобы иметь идентичные и взаимозаменяемые задачи. Если вам нужно как-то различать задачи в одном сервисе, у вас должно быть два сервиса.
4. Что сказал Марчин. Теперь это разные сервисы. Не вводите подобное локальное состояние, поскольку вы фактически исключили масштабирование.