Моя настройка выглядит следующим образом:
У меня есть интерфейс, написанный на Vue.js, API в Laravel 5.6 и инфраструктура на AWS. Все работает в док-контейнерах. У нас есть 4 контейнера API и балансировщик нагрузки между Frontend и API. Аутентификация работает с Laravel Passport v5 и токенами на предъявителя.
В основном все работает нормально, и аутентификация прошла успешно.
Но когда мы развертываем новую версию API, возникает следующая ситуация:
2 экземпляра API имеют версию 1, а 2 других экземпляра API имеют версию 2.
Это предназначено, потому что мы хотим иметь непрерывное развертывание без простоев. Через некоторое время 2 экземпляра v1 также заменяются новыми экземплярами v2. Все экземпляры используют одну и ту же базу данных.
К сожалению, в течение этого временного окна аутентификация больше не работает. Похоже, что Frontend делает несколько запросов к API с правильным новым токеном. Балансировщик нагрузки распределяет некоторые запросы к экземплярам v1, а некоторые к v2 isntances. Запросы к экземплярам v2 выполнены успешно, к экземплярам v1 - нет (401 не авторизован).
Мой вопрос: как паспорт проверяет токен на предъявителя? Почему экземпляр v1 не может проверить токен, который был создан экземпляром v2, и наоборот? Что я могу наблюдать за различиями между экземплярами и паспортом влияния, даже если все они используют одну и ту же базу данных?