Mais conteúdo relacionado Semelhante a 20120117 13 meister-elasti_cache-public (20) Mais de Amazon Web Services Japan (20) 20120117 13 meister-elasti_cache-public3. Amazon ElastiCache概要
インメモリキャッシュサービス
memcached1.4.5互換
Management Console/CLI/APIから数分で設定・起動
複数のインスタンスタイプを選択可能
CloudWatch, SNSとの統合
各種メトリクスによる状態監視
クラスタの状態変更通知 ( via SNS)
ACL
アクセス元EC2のセキュリティグループと紐付け
4. ElastiCache アーキテクチャ
キーワード
キャッシュセキュリティグループ
キャッシュクラスター
キャッシュノード
キャッシュエンジン
キャッシュパラメータグループ
6. メモリキャッシングとは
目的
アプリを高速化する手法の一つ
消えても良いデータを格納してDBアクセス・負荷を低減
メモリにキャッシュしたデータを再利用することで高速化・負荷低減
用途
クエリ結果を再利用 (DBサーバの負荷低減、高速化)
揮発性の高いデータを格納 (セッション情報管理)
複雑な計算結果を再利用 (APPサーバの負荷軽減)
13. Webアプリとメモリキャッシュ(セッション)
典型的な構成 1 (ファイル)
PHPなど
Appサーバが増えた際は、Stickey 等で制御 or NFS等で共有
LBに依存
ファイルI/Oが懸念
典型的な構成 2( APPサーバ内メモリ)
Java(Servletコンテナ等)
Appサーバが増えた際は、セッションレプリケーション等
LBやServletコンテナに依存
レプリケーションの負荷が懸念
典型的な構成 3 (DB)
DBサーバの負荷・性能が懸念
15. メモリキャッシュの留意事項
システムの性質を考える
一般的なWebシステムは、参照:更新≒9:1
更新クエリの割合が大きいシステムでは効果薄
キャッシュミス時のペナルティ対策(定期更新等)
キャッシュ喪失時の対策も織り込む
• ログインし直し、DB負荷増、等への対策
キャッシュするデータの性質を考えてキャッシュする
有効期限の短いデータは不向き
参照頻度の低いデータは、メモリ効率が悪い
トランザクション・コヒーレンシを考える
一貫性が必要なデータは、慎重に設計・実装する
DBより古いキャッシュを使わない工夫
17. Memcachedとは
インメモリ key-value ストアキャッシュサーバ
2003年にDanga Interactiveが開発(BSDライセンス)
ブログサービス「Live Journal」の負荷対策用に作られたもの
多くのサイトで採用 (YouTube, Wikipedia, mixi, etc. )
特徴
KVSのデファクトスタンダードプロトコル
• 非XMLのシンプルな構造
• Telnetでも操作可能
主要機能のみのシンプルな機能
• アクセス制御などのセキュリティ機能無し
• マスタノード、シャーディング、レプリケーションなどの機構無し
データ削除は明示的、期限、LRUの3方式
22. Memcachedのクラスタ化(Consistent Hashing)
Consistent Hashingを使う
ketama ライブラリ(libketama)が有名
PHPなら、Libketama+memcachedで
Ruby用クライアントライブラリは1.6以降で対応
その他、各種実装あり
参考
Consistent hashing - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Consistent_hashing
memcachedを知り尽くす:第4回 memcachedの分散アルゴリズ
ム|gihyo.jp … 技術評論社
http://gihyo.jp/dev/feature/01/memcached/0004?page=3
23. Memcachedのクラスタ化 まとめ
現実的なクラスタを組むために
ノード数が変化することを想定してConsistent Hashingを使う
障害の影響を低減させるため適切なスケールアウトを行う
障害発生頻度と影響とのトレードオフを考慮してノード数を決める
障害の発生頻度 memcached
memcached
memcached
障害の影響 memcached
memcached
memcached
25. Amazon ElastiCache概要(再掲)
インストール、構築不要の memcachedクラスタ
Management Console/CLI/APIから数分で起動
各種インスタンスタイプを選択可能
サポートしているプロトコル
Memcached 1.4.5互換
CloudWatch, SNSとの統合
各種メトリクスによる状態監視
クラスタの状態変更通知 ( via SNS)
ACL
フロントエンドのEC2のセキュリティグループからのみリクエストを受
けつける
27. Memcachedとの共通点
プロトコル
Memcached 1.4.5 互換
Telnetアクセスも同様
クライアントライブラリ,tool等
Memcached1.4.5用のツール・ライブラリ
サーバプロセス
主要な設定パラメータ
主要な統計情報
ノウハウ・Tips
クラスタ・分散キャッシュ・冗長化などの手法・ツール類
アプリケーションの設計・アルゴリズム
監視すべきポイント
28. Memcachedとの相違点
導入
ノード用のOSインストール不要
memecachedインストール不要
複数memcachedのコンフィグファイル配布・同期不要
Management Console/CLI/APIから数分で起動・ノード追加
運用
監視の作り込み不要
ノードリカバリ、パッチ適用が自動
Firewallの用意、詳細設定不要
AWS独自の用語・概念
セキュリティ関連
クラスタ関連
29. ElastiCacheのメリット
初期構築・運用の手間低減
ノード構築、memecachedインストール、コンフィグ同期、監視作り
込みなどの手間からの開放
監視、リカバリ、パッチ適用、ノード追加作業
AWSならではの特徴
初期費用無料
従量課金
スケールアップ、スケールアウトが容易
AWSサービスとの統合
EC2のセキュリティグループとの連携
各種ノードタイプを選択可能(スケールアップ)
30. 料金
インスタンスタイプ API名 ECU I/O メモリ 料金
スタンダード スモール cache.m1.small 1 std 1.3GB $0.11
スタンダード ラージ cache.m1.large 4 high 7.1GB $0.45
スタンダード エクストララージ cache.m1.xlarge 8 high 14.6GB $0.90
ハイメモリ エクストララージ cache.m2.xlarge 6.5 high 16.7GB $0.67
ハイメモリ ダブルエクストララージ cache.m2.2xlarge 13 high 33.8GB $1.34
ハイメモリ クアドラプルエクストララージ cache.m2.4xlarge 26 high 68GB $2.68
ハイCPU エクストララージ cache.c1.xlarge 26 high 6.6GB $0.90
同一 Availability Zone内の EC2⇒ElastiCache は無料
Availability Zoneをまたぐ場合は、別途データ転送料 ($0.01/GB)
https://aws.amazon.com/jp/elasticache/#pricing
31. (参考)ギガバイト単価
インスタンスタイプ API名 料金($/h) メモリ(GB) GB単価($/GB)
スタンダード スモール cache.m1.small 0.11 1.3 0.08462
スタンダード ラージ cache.m1.large 0.45 7.1 0.06338
スタンダード エクストララージ cache.m1.xlarge 0.9 14.6 0.06164
ハイメモリ エクストララージ cache.m2.xlarge 0.67 16.7 0.04012
ハイメモリ ダブルエクストララージ cache.m2.2xlarge 1.34 33.8 0.03964
ハイメモリ クアドラプルエクストララージ cache.m2.4xlarge 2.68 68 0.03941
ハイCPU エクストララージ cache.c1.xlarge 0.9 6.6 0.13636
https://aws.amazon.com/jp/elasticache/#pricing
34. 構築手順:Management Consoleで作成
1
2
Management Consoleの ElastiCache
タブにて、Lauch Cache Cluster
Wizardを選択
3
基本パラメータを設定
• キャッシュクラスタ名
• キャッシュノードタイプ
• ノード数
• 待ち受けポート番号
• ゾーン
35. 構築手順:Management Consoleで作成
4
キャッシュクラスタ用のSecurity
Group、Parameter Groupを設定して
起動
しばらくするとキャッシュクラスタ
が起動し、Management Consoleに
表示される
36. 構築手順:Security Groupの紐付け
5 Cache Security Groupsメニューを選択
アクセス元EC2インスタンスのSecurity
Group名、AWSアカウントID(12桁)を指定
して、セキュリティグループを紐付ける
6
この手順を忘れると、EC2インスタンスからアクセス出来ません
38. 構築手順 : Telnet接続確認
$ telnet example..aa.001.apne1.cache.amazon.aws.com 11211
Trying 10.xx.xx.xx...
Connected to example.aa.001.apne1.cache.amazon.aws.com.
Escape character is '^]'.
stats telnetでendpointの1つに接続
STAT pid 1
STAT version 1.4.5
---snip--- 【stats】コマンド
STAT reclaimed 0 ノードの状態確認
END
set key1 0 0 4 【set】コマンド
test データの格納
STORED 例) key: key1, value:test
get key1
【get】コマンド
VALUE key1 0 4
格納されたデータの取得
test
例) key: key1
END
quit 【quit】コマンド
Connection closed by foreign host. 切断
41. 利用手順:EC2側の環境構築
必要なライブラリのインストール(Amazon Linuxの例)
$ sudo yum –y install subversion php-devl php-pear gcc make libmemcached
libmemcached-devel php-pecl-memcached
Ketamaの取得からインストールまで
$ svn co svn://svn.audioscrobbler.net/misc/ketama/
$ cd ketama/libketama
$ make
$ sudo make install
$ sudo ldconfig
AWS SDK for PHPインストール、セットアップ
http://aws.amazon.com/articles/4261
42. 利用手順:EC2側の環境構築
PHP(CLI)で接続
$ php test.php
key:106:40:43 is stored to example.mayg1j.0001.apne1.cache.amazonaws.com val=1 code=0
key:206:40:43 is stored to example.mayg1j.0001.apne1.cache.amazonaws.com val=1 code=0
47. 構成について
Q. アベイラビリティゾーンをまたいだクラスタは作れるか?
A. No. アベイラビリティゾーンごとにクラスタを作る必要あり。
Q. 負荷やメモリ利用量に応じて自動でノード追加可能か?
A. 未対応。ただし、CloudWatchや自前で監視の仕組みを入れ
て、条件に応じてAPIやCLIで動的にノード追加することは可能
ただし、アプリケーションがノード数変更を考慮している事が前提
Q. ノードのパラメータ設定内容は?
A. ノードタイプごとに最適値が設定済み
APIでのみ変更可能。
50. 追加情報
Amazon ElastiCache
https://aws.amazon.com/jp/elasticache/
Blog
http://aws.typepad.com/aws_japan/2011/08/amazon-
elasticache-distributed-in-memory-caching.html
FAQ
http://aws.amazon.com/jp/elasticache/faqs/
料金
http://aws.amazon.com/jp/elasticache/pricing/
Memcached
http://memcached.org/
http://ja.wikipedia.org/wiki/Memcached
51. AWSプレミアムサポート
アーキテクチャ設計に関するガイダンス、ベストプラクティス
も日本語でご案内できます
aws.amazon.com/jp/premiumsupport/
ブロンズ シルバー ゴールド プラチナ
初回応答時間 12時間 4時間 1時間 15分
サポート連絡先 1人 2人 3人 無制限
24/365対応 なし なし あり あり
TEL可能 不可 不可 可能 可能
専任スタッフ なし なし なし あり
特別サポート なし なし なし あり
AWS利用総額の
AWS利用総額の
$0~$10K: 10%
AWS利用総額の 10%
料金 $49
5%
$10K~$80K: 7%
$80K~: 5%
(最低$15K)
(最低$400)
Copyright © 2012 Amazon Web Services