Самое простое - использовать стандартные сессии PHP, только настроить хранение в redis, или чём-то подобном.
https://gist.github.com/Alexfilus/0c55972103f28699...
Вот пример. Единственное ограничение - хранилище сессий должно умещаться на одном сервере. Вы говорите что есть перспективы того что сайт перестанет умещаться на 1 сервере, но что именно перестанет справляться с нагрузкой? Обычно этого не PHP, и не Redis, а основная РСУБД.
Есть ещё вариант sticky sessions, но это уже костыль.
Классический JWT хорош всем, кроме того что это накладные расходы на шифровку - дефировку подписей, и невозможно сделать кнопку типа "Разлогинь меня на всех устройствах". То есть даже если юзер подозревает что у него украли пароль, или JWT токен, он не сможет разлогинить злоумышленника, даже сменив свой пароль. Только ждать пока срок действия токена кончится.
Часто рекомендуют вариант с access_token и refresh_token. Это довольно надёжно, и можно управлять их хранением, но по сути, те же sticky sessions.
В общем, лучше всего сделать микросервис авторизации, на базе сессий, и пока этот микросервис способен жить на одном сервере, его не трогать. А такая простая штука должна выдерживать тысячи запросов в секунду на 1 ядро.