web-dev-qa-db-ja.com

Redis:Amazon EC2とElasticache

Redisサーバーを自分でホストしたい。 EC2とElasticacheを比較しました。そして、EC2の不利な点を知りたいです。

EC2の小さなインスタンスは、ELasticacheの小さなインスタンスと同じくらいの費用がかかりますが、RAMが400 mb以上必要です。なぜElasticacheを使用し、ec2 tiny isntanceで独自のRedisサーバーをセットアップしないのですか?

49
nohayeye

私は怠け者なので、EC2ではなくElasticcacheを選択して、Redisインスタンスを管理する運用面のいくつかを回避できるようにします。 EC2上のRedisでは、ホストとRedisインスタンスのスケーリング、更新、監視、およびメンテナンスを担当します。 Redisの運用面をうまく処理できれば、問題にはなりません。多くの人々が、Redisインスタンスを実行する運用面のコストを検討しています。 Redisに精通していない限り、Elasticacheを検討します。私はそれを使ってきましたが、これまでのところかなり満足しています。

現在、ElasticacheでサポートされていないRedisのカスタム構成が必要な場合、EC2は理にかなっています。

また、̶場合必要に接続するためにRedisのインスタンスから外部ザAWS環境、̶̶E̶l̶a̶s̶t̶i̶c̶a̶c̶h̶e̶であろうことが、A問題あなた̶c̶a̶n̶'̶t̶使用THE Redisの-CLIに接続するA Redisのインスタンスということであるランニング̶E̶l̶a̶s̶t̶i̶c̶a̶c̶h̶e̶から̶o̶u̶t̶s̶i̶d̶e̶.̶

UpdateAWS外部からのElastiCacheリソースへのアクセス

最後に、もしあなたがRedisの最前線にいることを計画しているなら、自分で走らせる方が理にかなっています。ただし、操作ビット、監視、パッチ適用などを所有します。

38

tl; dr:Elasticacheは、redisの単一インスタンスの使用を強制しますが、これは最適ではありません。

ロングバージョン:

これは古い投稿(この記事を書いている時点で2年)であることがわかりましたが、ここに表示されていない点に注意することが重要だと思います。

Elasticacheでは、redisのデプロイはAmazonによって管理されます。これは、redisを実行することを選択することに固執していることを意味します。

Redisは、読み取り/書き込みに単一の実行スレッドを使用します。これにより、ロックなしの一貫性が保証されます。ロックとラッチを管理しないことは、パフォーマンスの点で重要な資産です。ただし、残念な結果は EC2に複数のvCPUがある場合、それらは未使用になります です。これは、複数のvCPUを持つすべてのelasticacheインスタンスの場合です。

デフォルトのelasticacheインスタンスのサイズはcache.r3.large、これには2つのコアがあります。

Amazon's Elasticache setup menu with defaults populated.

実際、複数のvCPUを使用したインスタンスサイズがいくつかあります。この問題が顕在化する多くの機会。

enter image description here

アマゾンはすでにこの問題を認識しているようですが、彼らは少しそれを軽視しているようです。

enter image description here

これがこの質問に特に関連する部分は、EC2で(独自の展開を管理しているため)実装できることです multi-tenancy 。これは、異なるポートでリッスンしているredisプロセスのインスタンスが多数あることを意味します。レコードのキーのハッシュに基づいて、アプリケーションで読み書きするポートを選択することにより、すべてのvCPUを活用できます。

補足として。マルチコアマシンでのredis elasticacheの展開は、インスタンスサイズでのmemcached elasticacheの展開と比べて常にパフォーマンスが低いはずです。マルチテナンシーでは、redisが勝者になる傾向があります。

更新:

Amazonは、redisインスタンスCPU、EngineCPUUtilizationに個別のメトリックを提供するようになりました。見掛け倒しの乗算でCPUを計算する必要はなくなりましたが、マルチテナンシーはまだ実装されていません。

37
KeatsKelleher

もう1つのポイントは、Elasticacheが動的であり、使用するメモリを動的に増減できることです。また、パフォーマンスインデックスが緑の場合は、キャッシュを閉じることもできます($$を節約できます)。

5
Shachaf.Gortler

Elasticacheの長所と短所:

長所
-AWSマネージドサービス。そのため、管理のオーバーヘッドなしにアプリケーションでRedisを使用するだけです(AWSに任せてください)
-インメモリデータベースに適した柔軟なインスタンスタイプ。
-ノードに問題がある場合、AWSがそれを処理します(フェールオーバー、ノードの交換、メンテナンスなど)
-HIPAA準拠のサービス。
-Redisのみ-> BGSAVEを許可できないメモリの問題がある場合、独自のバックアップ実装があります。
-定期的にスナップショットの作成を許可できます。
-水平および垂直の両方で簡単にスケーラブルです(クラスターモードを有効にすると、最大250個のシャードを持つことができます)。
-構成エンドポイントは変更されないため、フェイルオーバーの場合にアプリケーションで何も変更する必要はありません(ノードエンドポイントを使用していない場合)

短所
-サービスはAWS Managedであるため、OSレベルのアクセスを取得できないため、(パラメーターグループを介した)パフォーマンスの最適化の範囲はほとんどありません。
-x1などのインスタンスタイプは多くありません。
-利用可能なカスタマイズはあまりありません。たとえば、一度作成したパスワード(Redis AUTH)は変更できません。
-定期的なメンテナンスが必要な場合がありますが、これは生産の重要な時間と一致する可能性があるため、心配する必要があります。
-すべてのメンテナンスイベントが通知を受け取るわけではないため、不要な障害が発生します。
-起動には多くの時間が必要です(ノードの種類とノードの数によって異なります)。
-高価になることがあります。

カスタムEC2インストールの長所と短所:

長所
-最適化とカスタマイズの自由度
-自分の時間でのメンテナンス
-任意のリソースを使用

短所
-メンテナンス、スケーリング、障害およびバックアップからの回復などのためのカスタムロジックが必要です。
-運用オーバーヘッドの増加。

リストは長いですが、これらは大きな違いをカバーするはずです。

1
S Square