Мы развертываем приложение с помощью эластичного beanstalk AWS с автомасштабированием за балансировщиком нагрузки. В настоящее время мы используем балансировщик нагрузки приложений.
Мы хотели бы иметь возможность направлять некоторых пользователей/запросы к определенному экземпляру за балансировщиком нагрузки, в идеале по URL-адресу. Например, если HTTP-запрос должен был прийти для URL-адреса http://our_app_domain/something/123, он должен быть перенаправлен на экземпляр 123, тогда как http://our_app_domain/something/456 должен быть направлен на экземпляр 456. POST или другой http-заголовок также мог бы работать, если бы это было проще. Или это может даже включать что-то, сделанное на стороне клиента с использованием Javascript.
Для нас важно, что это может быть любой экземпляр из множества автомасштабируемых. Поток, который мы имеем в виду, заключается в том, что пользователь переходит к экземпляру, этот экземпляр дает ему ссылку где-то, а затем, если кто-то еще посещает эту ссылку, он попадает в тот же экземпляр.
Возможно ли что-то подобное?
Я нашел несколько предложений, чтобы найти идентификатор экземпляра конкретного экземпляра здесь: Как найти экземпляр ec2, который обрабатывает мой запрос, переадресованный Elastic Load Balancer
И это также упоминает файл cookie, который ELB использует для поддержания закрепления сеанса — может ли быть способ перезаписать файл cookie, чтобы ELB направлял маршрут к другому экземпляру?
Еще одна вещь, которую я обнаружил, это целевые группы. Мы могли бы создать множество целевых групп с одним экземпляром в каждой, и тогда то, что мы хотим сделать, должно сработать, я считаю. Но проблема в том, что мы хотим, чтобы это работало с автомасштабированием, и я не думаю, что есть способ автомасштабирования целевых групп (только экземпляры внутри целевых групп), верно?
Одним из вариантов может быть то, что экземпляры сами сообщают балансировщику нагрузки, хотят ли они принять соединение, но я не знаю, сработает ли это. Например.если экземпляр 456 при получении запроса с URL-адресом, например, 123, возвращает некоторый временный код ошибки HTTP, а затем автомасштабирование перенаправляет его на другой экземпляр, пока в конечном итоге не направит его на 123?
Любой другой способ сделать это, конечно, тоже подойдет! Большое спасибо!