###前提・実現したいこと
AWS + ALB + EC2を使って冗長化構成のWebサービスを開発中です。
###発生している問題・エラーメッセージ
sessionDriverとしてLaravel ElastiCache(Memcached)を使っているのですが、一定確率でsessionが切れたり(約2分の1の確率)TokenMismatchExceptionが発生してしまいます。
config/cache.php
php
1 'memcached' => [ 2 'driver' => 'memcached', 3 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), 4 'sasl' => [ 5 env('MEMCACHED_USERNAME'), 6 env('MEMCACHED_PASSWORD'), 7 ], 8 'options' => [ 9 // Memcached::OPT_CONNECT_TIMEOUT => 2000, 10 ], 11 'servers' => [ 12 [ 13 'host' => env('MEMCACHED_HOST', '127.0.0.1'), 14 'port' => env('MEMCACHED_PORT', 11211), 15 'weight' => 100, 16 ], 17 ], 18 ],
各環境変数には下記の値が入っています。
MEMCACHED_HOST: dev-session.888888.cfg.apne1.cache.amazonaws.com
MEMCACHED_PORT: 11211
発生している問題は こちら と同様だと思われます。
###試したこと
- elasticache-laravel というミドルウェアを試してみましたが結果は変わりませんでした。
ちなみに Memcached ではなく Redisを使っても同様の問題が発生します。
RedisはclusterモードをONにしてMultiAZ構成でノードは3台で試しました。
Redisの際は redis-cli -c
での検証時は問題なくデータの出し入れが出来たのでクライアント側(laravel側)に問題があると推測しています。
###補足情報(言語/FW/ツール等のバージョンなど)
- PHP(7.1.5)
- nginx(1.10.2)
- ロードバランサー(ALBに)
- Laravel(5.4.21)
- Laravel ElastiCache(Memcached 1.4.34 ノード2台でMultiAZ)
他に必要な情報があれば追記いたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/07 15:56