amazon elasticacheのはじめ方
TRANSCRIPT
![Page 1: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/1.jpg)
![Page 2: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/2.jpg)
ms μs
![Page 3: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/3.jpg)
Memcached
![Page 4: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/4.jpg)
NoSQL
![Page 5: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/5.jpg)
NoSQL SQL
![Page 6: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/6.jpg)
![Page 7: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/7.jpg)
![Page 8: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/8.jpg)
Power, HVAC, net
Rack & stack
Server maintenance
OS patches
DB s/w patches
Database backups
Scaling
High availability
DB s/w installs
OS installation
you
App optimization
![Page 9: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/9.jpg)
Power, HVAC, net
Rack & stack
Server maintenance
OS patches
DB s/w patches
Database backups
Scaling
High availability
DB s/w installs
OS installation
you
App optimization
![Page 10: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/10.jpg)
Power, HVAC, net
Rack & stack
Server maintenance
OS patches
DB s/w patches
Database backups
Scaling
High availability
DB s/w installs
OS installation
you
App optimization
![Page 11: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/11.jpg)
OS patches
DB s/w patches
Database backups
Scaling
High availability
DB s/w installs
you
App optimization
Power, HVAC, net
Rack & stack
Server maintenance
OS installation
![Page 12: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/12.jpg)
Power, HVAC, net
Rack & stack
Server maintenance
OS patches
DB s/w patches
Database backups
App optimization
High availability
DB s/w installs
OS installation
you
Scaling
![Page 13: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/13.jpg)
http://redis.io/commands
strings, lists, hashes, sets, sorted sets, bitmaps, HyperLogLogs
ACID対応のトランザクション
Snapshots か append-only log
![Page 14: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/14.jpg)
![Page 15: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/15.jpg)
起動
![Page 16: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/16.jpg)
これ以外のサブネット、セキュリティおよびパラメータグループの設定は既に行っているとします...
Choose:
• Version
• Port
• Parameter group
• Multi-AZ & replication*
• Cluster name
• Node type
• # of Nodes (or replicas)
• S3 backup location*
Choose:
• Subnet group
• Availability Zones
• Security group
• Enable backups*
• Maintenance window
• SNS topic
*redis オプション
Select Engine:
![Page 17: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/17.jpg)
aws elasticache create-cache-cluster ¥
--cache-cluster-id mycache ¥
--engine redis ¥
--cache-node-type cache.m3.medium ¥
--num-cache-nodes 1
"Resources" : {
"CacheCluster" : {
"Type": "AWS::ElastiCache::CacheCluster",
"Properties": {
"CacheNodeType" : { "Ref" : "CacheNodeType" },
"CacheSecurityGroupNames" : [ { "Ref" : "CacheSecurityGroup" } ],
"Engine" : "memcached",
"NumCacheNodes" : { "Ref" : "NumberOfCacheNodes" }
}
}
![Page 18: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/18.jpg)
mycache-002.hnou5c.0001.usw2.cache.amazonaws.com:6379 (redis)
mycache.hnou5c.0002.usw2.cache.amazonaws.com:11211 (memcached)
mycache.hnou5c.cfg.usw2.cache.amazonaws.com:11211
mycacherepgroup.hnou5c.ng.0001.usw2.cache.amazonaws.com:6379
![Page 19: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/19.jpg)
Availability Zone #1 Availability Zone #2
“Primary Endpoint” を使用します
‘replica’ endpoints を使用します*‘primary’ も使用可能
Auto-Failover レプリ遅延のみでレ
プリカ昇格
DNSの変更なし
![Page 20: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/20.jpg)
クラスタへの接続
![Page 21: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/21.jpg)
Language Library
Ruby Redis-rb, Redis objects
Python Redis-py
Node.js node-redis
C#/.NET ServiceStack.Redis
PHP phpredis
Java Jedis
$telnet {primary-endpoint} 6379
>HSET hash mykey "mydata”
:1
>HGET hash mykey
$6
mydata
#from redis.io download:
$redis-cli -h {primary-endpoint}
redis-cliをRedis単体と同様にサポート
+ command history
+ latency test
+ backups
+ その他もろもろ
![Page 22: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/22.jpg)
// Java Example – requires http://aws.amazon.com/sdk-for-java
AmazonElastiCache ec = new AmazonElastiCacheClient();
String replicationGroupName = "mycache"; // change to your Redis Replication Group Name
String metadataURL = "http://169.254.169.254/latest/meta-data/placement/availability-zone";
String myAZ = new Scanner(new URL(metadataURL).openStream(), "UTF-8").useDelimiter("¥¥A").next();
ec.setRegion(Region.getRegion(Regions.US_WEST_2));
DescribeReplicationGroupsRequest rgrequest = new DescribeReplicationGroupsRequest()
.withReplicationGroupId(replicationGroupName);
DescribeReplicationGroupsResult rgresult = ec.describeReplicationGroups(rgrequest);
for (ReplicationGroup rg : rgresult.getReplicationGroups()) {
for (NodeGroup ng : rg.getNodeGroups()) {
for (NodeGroupMember ngm : ng.getNodeGroupMembers()) {
if (ngm.getCurrentRole().equals("replica")
&& ngm.getPreferredAvailabilityZone().equalsIgnoreCase(myAZ)) {
System.out.println(ngm.getReadEndpoint().getAddress() + ":" + ngm.getReadEndpoint().getPort());
}
}
}
}
AZ確認
ElastiCache
API 呼び出し
![Page 23: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/23.jpg)
telnetは運用や、情報取得には便利ですが、基本的にはアプリケーションからはクライアントライブラリを使用して接続します
Language Library
Ruby Dalli, Dalli:ElastiCache
Python Memcache Ring, django-elasticache
Node.js node-memcached
C#/.NET ElastiCache Auto Discovery Client
PHP ElastiCache Auto Discovery Client
Java ElastiCache Auto Discovery Client
(based on spymemcached)
$telnet {cfg-endpoint} 11211
>config get cluster
$telnet {node1} 11211
>set mykey 0 60 6
>mydata
STORED
>get mykey
VALUE mykey 0 6
mydata
END
![Page 24: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/24.jpg)
![Page 25: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/25.jpg)
あくまでも自動検知情報をEndpointで検知するだけである点
CacheCluster
Configuration Endpointxxx.cfg.apne1.cache.amazonaws.com
xxx.0001.apne1.cache.amazonaws.com
xxx.0002.apne1.cache.amazonaws.com
App
通常のクライアントライブラリ
App
Auto Discovery クライアントライブラリ
• 確認コマンド・Memchached 1.4.14以上>Config get cluster
・Memchached 1.4.14未満
>get AmazonElastiCache:cluster
![Page 26: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/26.jpg)
# PHP
$server_endpoint = "mycache.z2vq55.cfg.usw2.cache.amazonaws.com";
$server_port = 11211;
$cache = new Memcached();
$cache->setOption(
Memcached::OPT_CLIENT_MODE, Memcached::DYNAMIC_CLIENT_MODE);
# Set config endpoint as only server
$cache->addServer($server_endpoint, $server_port);
# Lib auto-locates nodes
$cache->set("key", "value");
Configuration
Endpointは常に使用
![Page 27: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/27.jpg)
メモリ &モニタリング
![Page 28: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/28.jpg)
>stats cachedump 1 100
ITEM mykey3 [4 b; 1414372065 s]
>stats slabs
STAT 1:used_chunks 1
>get mykey3
END
>stats cachedump 1 100
END
>stats slabs
STAT 1:used_chunks 0
Example
![Page 29: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/29.jpg)
Source:http://blog.elijaa.org/index.php?pages/phpMemcachedAdmin-Download
Alarms
![Page 30: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/30.jpg)
![Page 31: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/31.jpg)
– 用量
![Page 32: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/32.jpg)
セキュリティ
![Page 33: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/33.jpg)
• ElastiCacheそのものは、認証や暗号化も基本機能では持っていない
• VPCのプライベートサブネットでElastiCacheクラスターを起動する
• ElastiCacheノードへのアクセスを制御するため適切なセキュリティグループを適用する
![Page 34: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/34.jpg)
コスト
![Page 35: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/35.jpg)
• オンデマンド キャッシュノード– 初期費用無し、時間単位の従量課金モデル
• リザーブド キャッシュノード– 予約金を支払うことで時間当たり価格を割引(最大
70%節減)
• バックアップストレージ– Redis向け機能
– 各クラスタに対して1つのSnapshotは無料
• AZ間データ転送量– ElastiCache間の通信は課金対象外
– EC2とElastiCache間でAZを超える場合0.01 USD/GB が課金
時間あたりの料金(東京リージョン)
※2016年3月29日現在
Standard Cache Nodes - Current Generation
cache.t2.micro $0.026
cache.t2.small $0.052
cache.t2.medium $0.104
cache.m3.medium $0.120
cache.m3.large $0.240
cache.m3.xlarge $0.485
cache.m3.2xlarge $0.965
Memory Optimized Cache Nodes - Current Generation
cache.r3.large $0.273
cache.r3.xlarge $0.546
cache.r3.2xlarge $1.092
cache.r3.4xlarge $2.184
cache.r3.8xlarge $4.368
![Page 36: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/36.jpg)
• 同スペックでのEC2とElastiCacheでのTCOの比較– Multi-AZ構成時の通信料を削減可
– 運用コスト• バックアップ
• Multi-AZ Failover構成
• Clluster構成(Node Auto Discovery, Replication環境)
• バージョンアップ/スケールアップ
オンデマンド価格(月額換算) 重度リザーブド価格(月額換算)
インスタンスタイプ EC2 ElastiCache 差額 EC2 ElastiCache 差額t2.small $ 29 $ 38 $ 9 $ 21 $ 28 $ 7r3.large $ 146 $ 199 $ 53 $ 95 $ 130 $ 35
![Page 37: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/37.jpg)
Redis運用時の注意点
![Page 38: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/38.jpg)
の前に・・・
![Page 39: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/39.jpg)
• Amazonが独自に拡張したRedis• 2015/9/28にリリース済!• ElasitiCacheのRedis 2.8.22 以上• 改善点
• Swapの効率化• 同期の効率化
![Page 40: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/40.jpg)
• Redisにおける運用注意点• Redis バックアップ時のSwap• Primary-Replica 同期
• 実行時間の長いコマンド• ElastiCacheのRedisにおける運用注意点
• DNS キャッシュ
![Page 41: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/41.jpg)
copy-on-write
![Page 43: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/43.jpg)
• Amazon Redisでは BGSAVE コマンドをMemory使用率が高い状況でも使えるように改善• Memory使用率が抑える事が可能
![Page 44: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/44.jpg)
![Page 45: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/45.jpg)
![Page 46: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/46.jpg)
Master ReplicasAmazon Redisでは改善(軽減)
![Page 47: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/47.jpg)
• 高負荷時のPrimary-Replica 同期時 – 初期同期時には書き込みを制限する (Update の同期は継続して行います)
• Replica 初期化 – フェイルオーバー実行時にPSYNC と 完全同期の適切な方を選択する様になった
• DISK Less構成時の primary-replica 同期速度の向上
![Page 49: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/49.jpg)
New!
“Primary Endpoint” を使用します
‘replica’ endpoints を使用します*‘primary’ も使用可能
![Page 50: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/50.jpg)
![Page 51: Amazon ElastiCacheのはじめ方](https://reader034.vdocuments.mx/reader034/viewer/2022050613/588204391a28abf05e8b542d/html5/thumbnails/51.jpg)