そもそも ElasticCache for Redis
という呼び方が合っているのか解らないかわはらです。どうも。
はじめに
sensu
をAWS
で運用しようとした場合にsensu
が利用する各種ツールをAWS
の各サービスで置き換えられないかと思ったので試す- まずは(というかこれしかないかw)
Redis
をElasticCache for Redis
に置き換えてみた Redis
をElasticCache for Redis
に置き換えることでsensu
のコアコンポーネント(sensu-server
やsensu-api
)のスケールと切り分けてスケールアウトを計画出来るのが嬉しい...かもしれない
まず結論から
- とりあえず動いてるけど...というレベル
- redis-commander を使って GUI で見ることで
sensu
からRedis
ってこんな使い方されてんだなーという収穫はあった
設定
ElasticCache for Redis のセットアップ
VPC
内でElasticCache
を利用したいのでCache Subnet Groups
で VPC のSubnet
設定するLaunch Cache Cluster Wizard
を利用してノード(キャッシュインスタンス)作成を開始する- ポイントは
Engine
でRedis
を選択することと 1. で作成したVPC
サブネットを選択する Launch Cache Cluster
をクリックしてインスタンスを起動する- インスタンスが起動するまで暫し待つ
sensu 側の設定
sensu-server
の Redis
ホストの設定を ElasticCache
の ENDPOINT
に置き換えるだけ。
--- config.json.original 2014-03-30 13:53:58.110841065 +0900 +++ config.json 2014-03-30 13:54:10.974513172 +0900 @@ -7,7 +7,7 @@ "vhost": "/sensu" }, "redis": { - "host": "localhost", + "host": "sensu-test.abcdefg.0001.use1.cache.amazonaws.com", "port": 6379 }, "api": {
修正したら sensu-server
と sensu-api
を再起動する。ElasticCache for Redis
にうまく接続出来ない場合には sensu-server
も sensu-api
も起動しない。もし、起動しない場合には ElasticCache for Redis
への接続を確認する。
せっかくなので redis-commander で可視化
Redis
にもコマンドラインは用意されているが世の中には便利なツールもあるもので redis-commander という Node.js
で実装された Web
ベースのツールを使えば GUI
から Redis
上のデータにアクセスことが出来る。
セットアップ
起動
以下のようなコマンドで実行する。
redis-commander --redis-host sensu-test.xxxxx.0001.use1.cache.amazonaws.com &
redis-commander
はホストの 8081
ポートを利用するので SecurityGroup
で事前にポートを開放する設定を行うのをお忘れなく...。
画面
ブラウザからアクセスすると以下のように表示される。
ほうほう、とりあえず sensu
からアクセスは出来ている。
redis-commander で見る Redis の使われ方
とりあえず見えるようになったので Redis
が sensu
からどんな風に使われているかを見てみた。(各 key
を見てみる)
client
以下のように監視対象が保存されている。
タイプは string
となっている。
clients
以下のように監視対象のクライアントリストが保存されている。
タイプは set
となっている。
exection
おそらくチェックを行った時間をタイムスタンプで記録されている。
タイプは string
となっている。
history
チェックの結果が 0 / 1 / 2 のそれぞれのフラグで記録される。
タイプは list
となっている。
lock
何に使ってるんだろう...lock:master
ってなんや?
ソースコードの中から lock:master
を追っていくと setup_master_monitor
と request_master_election
というメソッドに辿りついた。さらに setup_master_monitor
を追うと bootstrap
というメソッドから呼ばれていることが解る。どうやら sensu-server が起動する際にセットするフラグのようだ。
また lock:master
がセットされるとインスタンス変数の @is_master
が真となりその後の処理の条件分岐で利用されている。
タイプは無難な string
となっている。
stash
stash
は特殊はキーで sensu-dashboard
で Client
や Check
に対して Silence
等の設定を行った場合にのみ生成される。
以下のように sc02
に対して Silence
を設定した場合に...
以下のように stash
に Value
がセットされる。
タイプは string
となっている。
stashes
stashes
は stashe
の一覧。
タイプは set
となっている。
まとまってないまとめ
sensu
のRedis
をElasticCache for Redis
に置き換えることは出来そう- 但し、複数の
sensu-server
からつないだ場合にはどうなるのかは引き続き調査