ようへいの日々精進XP

よかろうもん

ELB と RabbitMQ クラスタ化で sensu-server もクラスタ化する試み(2)

はじめに

  • 前回、気になったポイントの検証と整理

気になったポイント

  • sensu-server の設定で RabbitMQ の接続先を ELB に指定した場合ってどうなるの?
  • Redisクラスタ化する必要もある?

なにはともあれやってみた。

sensu-server の設定で RabbitMQ の接続先を ELB に指定した場合ってどうなるの?

構成図

f:id:inokara:20140329110844p:plain

設定

sensu-serverconfig.json を以下のように修正。

{
  "rabbitmq": {
    "host": "internal-rabbit-123456789.ap-northeast-1.elb.amazonaws.com",
    "port": 5672,
    "user": "sensu",
    "password": "xxxxx",
    "vhost": "/sensu"
  },

rabbitmq の接続先を ELB に向けるだけ。

結果

  • 前回の記事のように双方の Dashboard は普通に拝める
  • 但し、片方で Dashboard でステータス変えても、もう片方での変化は無し
  • 予想通り

Redis もクラスタ化する必要もある?

Dashboard の同期が取れない(おそらく監視データの同期も取れてない)ので Redisレプリケーションを設定してクラスタ化が必要かなと思ってやってみた。

構成図

f:id:inokara:20140329114351p:plain

Redis のレプリケーション

スレーブとなるホストの redis.conf を以下のように設定する。

--- redis.conf.bk       2014-03-29 11:23:27.250256990 +0900
+++ redis.conf  2014-03-29 11:24:03.549980114 +0900
@@ -194,7 +194,7 @@
 # so for example it is possible to configure the slave to save the DB with a
 # different interval, or to listen to another port, and so on.
 #
-# slaveof <masterip> <masterport>
+slaveof ${マスターの IP} 6379

 # If the master is password protected (using the "requirepass" configuration

マスターとなるホストの redis.conf を以下のように修正する。

--- redis.conf.bk       2014-03-29 11:19:58.491360811 +0900
+++ redis.conf  2014-03-29 11:27:30.468336727 +0900
@@ -62,7 +62,7 @@
 #
 # bind 192.168.1.100 10.0.0.1
 # bind 127.0.0.1
-bind 127.0.0.1
+bind 0.0.0.0

簡単。設定後は redis を再起動する。

スレーブとなるホストの sensu の設定修正

redis サーバーの接続先を修正する。

--- config.json.bk      2014-03-29 11:25:03.061526162 +0900
+++ config.json 2014-03-29 11:25:17.189418389 +0900
@@ -7,7 +7,7 @@
     "vhost": "/sensu"
   },
   "redis": {
-    "host": "localhost",
+    "host": "${マスターの IP}",
     "port": 6379
   },
   "api": {

sensu-server を再起動する。

結果

  • sensu-dashboard の設定反映が双方のダッシュボードで確認することが出来た
  • Redis 自身のデータをちゃんと確認する必要があるが監視データに関しても同期は取られているようだ

現時点での結論

以下のような構成が良いかなー。

f:id:inokara:20140329123825p:plain

メモ

  • ELBRabbitMQ クラスタ化で sensu-serverクラスタ化は出来そう
  • 頻繁なスケールアウトを考慮するなら RabbitMQsensu-serverRedis のホストはそれぞれ別のホストがスケールアウトし易い
  • さらに sensuコンポーネントapidashboard 等)もホストを分けても良いかも