У меня есть приложение под управлением Laravel 6.1. Есть клиенты, которые подключаются к нему через веб-сокеты laravel и слушают события. У меня есть внешняя служба, которая отправляет почтовые запросы на этот сервер, который затем вызывает событие, и клиенты websocket видят его. Я нахожусь на стадии разработки, и он еще не развернут, это то, что я сейчас исследую. Я использую Docker, поэтому есть контейнер nginx, контейнер php и контейнер Mysql (хотя в производстве контейнеры будут использовать RDS)
Это отлично работает при разработке, но планируется развернуть в ECS с Elastic Beanstalk, поскольку он позволяет использовать несколько контейнеров для каждого экземпляра EC2. Я планировал автоматическое масштабирование этих экземпляров с помощью балансировщика нагрузки, поэтому мой вопрос как сделать так, чтобы входящие события появлялись и были видны на всех серверах? Например, почтовый запрос может попасть в один экземпляр, и клиенты, подключенные к этому экземпляру, увидят, что событие было инициировано, но клиенты, подключенные к другому экземпляру, не увидят возникшее событие. Это точно? Я предполагаю, что события должны быть отправлены в какую-то «очередь», которая отслеживается всеми экземплярами, но не знаю, как это реализовать с помощью Laravel или есть более простой и быстрый способ.
Используйте AWS SNS для уведомлений, чтобы их могли отслеживать все экземпляры