メモ > サーバ > サービス: AWS > ElastiCache (Memcached)
■ElastiCache (Memcached)
※可用性の観点で、MemcachedよりもRedisの方がが優れているとされている
基本的にはRedisを使っておけば良さそう
Redisに関しては「ElastiCache (Redis)」を参照
Amazon ElastiCacheとは?RedisとMemcachedの違いとは | SunnyCloud
https://www.sunnycloud.jp/column/20210428-01/
ElastiCacheはMemcachedとRedisのどっちを選ぶ? | DevelopersIO
https://dev.classmethod.jp/articles/which-choice-redis-memcached/
本当は怖いMemcached - Qiita
https://qiita.com/taruhachi/items/a844bf373623991873ff
それでもMemcachedを使いたいあなたに - Qiita
https://qiita.com/taruhachi/items/b4c938dce1646aeb7204
以下はMemcachedを試したときのメモだが、初期に1度試しただけなので現状とは差異が大きいかもしれない
ElastiCache → Get Started Now もしくは ElastiCache → Launch Cache Cluster からインスタンスを作成
Step 1:Select Engine
Memcached を選択
Step 2:Specify Cluster Details
Cluster Name: cacheinstance
Node Type: cache.m3.medium
Number of Nodes: 1
Step 3:Configure Advanced Settings
マルチAZに対応させる場合、Availability Zone(s) を Spread Nodes Across Zones にする
必要に応じて、あらかじめ設定しておいた Security Group を選択
Step 4:Review
内容を確認して、問題なければ Launch
WebサーバからMemcachedにアクセスするための設定を行っておく
ElastiCacheのエンドポイントが以下の場合、
xxxxx.cache.amazonaws.com:11211
例えばWebサーバのPHPを以下のようにすればElastiCacheでセッション管理ができる
# yum install memcached php-pecl-memcache
# vi /etc/php.ini
セッションを扱うPHPプログラムを作成し、動作確認をする
PHPアプリケーションのセッション管理にAWS ElastiCacheを使う
http://dev.classmethod.jp/cloud/aws/php-session-elasticache/
phpのセッションをmemcachedに変える | CoDE4U
http://blog.code4u.org/archives/422
phpのsessionを複数のmemcacheサーバに保存するお話 - Qiita
https://qiita.com/motoki-ok@github/items/a6459c6efaa0ac2a417a
PHPでクラスタ構成のmemcachedサーバを利用するときに気をつけること - Road To Nowhere
http://kazumaryu.hatenablog.com/entry/20130125/1359044488
※ElastiCacheはレプリケーションに対応していないので、複数のAZをまたいでいるときはPHPのセッションとしては使えない
ElastiCacheが複数のAZをまたいでいるとき、レプリケーションが働かずにセッションがバラバラになることがある
Redisはレプリケーションに対応しているみたいだけど、PHP用の定番ライブラリがない
なので、異なるAZに別々にElastiCacheを配置し、その両方にキャッシュするようにPHPに設定する
php.iniでキャッシュ先を複数設定しておけば、利用先が先頭から順に決定される
もし先頭のElastiCacheがダウンしても、次のElastiCacheが使われる。という仕組みで対処
(セッションが切れる可能性はあるが、大きな問題にはならなさそう)
2014年7月にマルチAZ配置に対応したようだが、それは「レプリケーションが働かずにセッションがバラバラになる」の状態みたい?
かっぱのほげふが | ElastiCache for memcached の分散処理をどうするか悩む
http://hogehuga.inokara.com/2014/04/26/elasticache-benchmark.html
【ElastiCache】memcachedのMulti-AZ配置(ゾーンをまたいだノード分散配置)が来ました!!!
http://dev.classmethod.jp/cloud/aws/elasticache-multi-az-memcached/
ElasticCache典型的な利用構成 | TechCrowd
https://www.techcrowd.jp/elasticcache/configurations/
;session.save_handler = files … コメントアウト(先頭に ; を付加)
;session.save_path = "/var/lib/php/session" … コメントアウト(先頭に ; を付加)
# vi /etc/php.d/memcache.ini … phpの設定ファイルを編集
session.save_handler=memcache … コメントアウトを外す(先頭の ; を削除)
session.save_path="tcp://localhost:11211?*******" … コメントアウトを外す(先頭の ; を削除 / ?以下は不要)
session.save_path="tcp://xxxxx.cache.amazonaws.com:11211" … ElastiCacheエンドポイントの設定例
# service httpd restart … httpdを再起動
# service memcached start … memcacheを起動