複数サーバーでセッション管理するためにRedisからMariaDB Cluster(MySQL)に変更
前の記事で複数サーバー構成にした。nginxの設定では「ip_hash」を使いIPアドレスをキーにした負荷分散にしたけど、モバイルアプリからのアクセスは頻繁にセッションが切れる現象に遭遇。
環境: CentOS 6.6 x64, Node.js v0.11.14, MariaDB 10.0.14
今までアプリのセッションは各サーバーごとにRedisで管理していた。セッション管理するサーバーを用意して各アプリサーバーが参照するようにすれば出来る。
Redisでセッションを一元管理する場合のポイント
- bind(/etc/redis.conf)は制限せずにファイヤーウォールで制限する
- Redis Clusterもあるけど、まだ開発段階みたい
。。。と調べたけど、このサービスはMariaDB Galera Clusterでクラスター構築したので、セッション管理もこっちを使うことにした。
connect-mysqlを使えば解決。poolも使えるので便利。
connect-mysql-sessionの方が人気みたいだけど、内部でseqelizeというO/Rマッパーを使っている。node-mysqlを使ってほしいので除外。
MariaDB ClusterがサポートしているのはInnoDBかXtraDBストレージエンジンだけでMemoryは使えないので注意。
< Related Posts >