注目キーワード

Sentinelが苦手でもよし!Redisの運用ならばAmazon ElastiCacheを絶対使うべき!

IT

Sentinelが苦手でもよし!Redisの運用ならばAmazon ElastiCacheを絶対使うべき!

 

実運用を見据えたRedisの導入ならばAmazon ElastiCacheが簡単なのでオススメといえます。

 

 

サーバーのコマンド操作に慣れてなくてもAWSの管理画面を操作するだけで、Redisのインストール、さらに、クラスタリング、レプリケーション、死活監視などの設定までできてしまいます

 

 

このブログでは、Amazon ElastiCacheを使ったRedisの導入方法、導入後の動作チェック方法を解説します。

 

 

Amazon ElastiCacheの導入背景

私は、ゲーム開発のエンジニアをしている。

普段はUnityでゲームアプリを開発しているが、サーバーサイドのPGを担当しています。

さらに、インフラ担当者が居なくなってしまったため、インフラ側(主に、本番サーバーの管理、障害対応)の対応もする機会も増えてきました。

 

 

DBの負荷対策でRedisを導入を検討することになりました。しかし、運用を見据えたRedisの導入は、インフラ担当者でないエンジニアにとっては難しいものでした。

 

 

Redisを一つのサーバーで動作させるだけならば、設定ファイルを書いて起動するだけなので簡単です。しかし、実際の運用を考えるとレプリケーション(マスター、スレーブの設定)、死活監視/通知、フェイルオーバーなどの検討も必要になるため難易度が急に上がります。

 

私は、Redisのドキュメント、Redis Sentinelの英語ドキュメントを読んでみたが、理解できませんでした。時間に追われていると、集中できず、余計に理解が困難になります。

 

 

そんなときに教えてもらったのが、Amazon ElastiCacheです。

 

 

Amazon ElastiCacheのメリット、デメリット

 

 

メリット

・サーバー1台1台にRedisインストール、設定をしなくてよい。

・レプリケーション、死活監視する場合は、複数台のサーバーにRedis(Sentinel含む)をインストールする必要があるが、その必要がない。

・設定作業、モニタリング、障害復旧、バックアップも管理画面の操作だけでできる。

・管理画面でCPU使用率、メモリーなどグラフで見ることができて運用が楽です。

 

Amazon ElastiCacheの管理画面

 

 

デメリット:

・月額の料金がかかる

 

 

Amazon ElastiCacheでRedisを設定する

Amazon ElastiCacheを使ってRedisの導入をしてみます。

 

Amazon ElastiCacheの管理画面でElastiCacheを選択する

 

 

 

サブネットグループの作成をする

サブネットグループを作るには、事前にVPCの設定が必要になります。

「VPC ID」を選択して項目が一つの出てこないときは、VPCを最低一つ作る必要があります。

 

 

 

「Amazon ElastiCache クラスターの作成」を作成する。

画面左横で「Redis」を選択したあと「作成」ボタンをクリックします。

 

「作成」ボタンを押して画面の指示に従って入力していきます。

その際、注意すべき箇所を記載します。

 

  • 「サブネットグループ」は、「サブネットグループの作成」で作成したものを選択します。
  • 自動フェイルオーバーを使う場合はマルチAZにチェックします。
  • その場合、「アベイラビリティーゾーン」はプライマリとレプリカは別々のゾーンにします。

  • プライマリのゾーンで障害が起きると、レプリカも道連れになり動かなくなってしまうため、予め分けておく必要があります。

 

 

すべての項目を入力後、「作成」ボタンをクリックします。

入力に間違えがなければ、Redis環境が作成されます。環境作成が終わるまで15分〜30分ほどの時間がかかります。

 

 

本当にRedisが使えるか確認する

 

redis-cliを使ってRedisにアクセスできるか確認する

 

redis-cliをインストールしたサーバー、もしくはPCにてredis-cliコマンドでredisにアクセスできるか確認します。

 

$ ./redis-cli  -h hogehoge.host(ホスト名を書く)
$ redis hogehoge.host:6379> info

その結果、以下の様に出力されれば成功です

# Server
redis_version:5.0.0
redis_git_sha1:0

以下、省略

 

上記のコマンドを打っても反応しない場合は、設定を間違えていることがほとんどです。

特に、「サブネットグループ」「参加しているVPC」が正しいかチェックしてみます。

 

PR:Redisについて詳しく知りたいならば「Redis入門 インメモリKVSによる高速データ管理」

 

php redisadminを使ってみる

 

redis-cliがない場合は、もしくは「redis-cli 」の操作に難がある場合、

php redisadminを使ってRedisが使えるか確認してみても良いでしょう。

 

こちらはPHPおよびRedisプラグインを入れる必要があるが、redis-cliを使わなくてよいです。

 

尚、redisadminの導入方法についてはここでは扱いません。

 

php redisadminについて

https://github.com/erikdubbelboer/phpRedisAdmin

 

 

 

まとめ

いかがでしょうか?

サーバーの負荷対策にRedisを導入するのは良いですが、本番環境で運用させるのは、複数のサーバを注視していないといけないため意外に大変です。

 

運用の手間を減らすという意味でもAmazon ElastiCacheの導入を検討してみてはいかがでしょうか?

手間を減らすことができ、空いた時間を他のことに使うことができます。