メモ > サーバ > サービス: 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を起動。