複数サーバーでセッション管理するために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も使えるので便利。 nlf/connect-mysql | GitHub connect-mysql-session の方が人気みたいだけど、内部で seqelize という O/Rマッパー を使っている。node-mysqlを使ってほしいので除外。 MariaDB ClusterがサポートしているのはInnoDBかXtraDBストレージエンジンだけでMemoryは使えないので注意。 < Related Posts > MariaDB Galera Clusterをインストールしてデータベースをクラスター化 CentOS6 + nginx + PHP5.4 + MariaDB10 + WordPress + node.jsの環境を構築する手順をまとめ RedisをInstallして、Node.js + RedisでSession管理