Memo

メモ > サーバ > サービス: 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
;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を起動
セッションを扱う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/

Advertisement