ようへいの日々精進XP

よかろうもん

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

自称 sensu 芸人見習いのかっぱです。おはようございます。

はじめに

  • こちらで頂いた質問を早速試した
  • まずは試しただけ

構成

以下のようなイメージ図

f:id:inokara:20140329100020p:plain

Cacoo サイコー。


設定アレコレ

sensu のインストール

尚、以下は既に sensusensu が稼働する為に必要な設定一式が入っており、上記図中の sensu-server01 の sensu-server を起動しているという状態から設定を進めた。

RabbitMQ のクラスタ

RabbitMQ を後から立ちあげたホスト上で以下のコマンドを実行。

sudo su -
su - rabbitmq
rabbitmqctl cluster_status
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@${先に起動した RabbitMQ ホストのホスト名}
rabbitmqctl start_app

更に以下のように HA のポリシーを設定。

su - rabbitmq
/usr/lib/rabbitmq/bin/rabbitmqctl set_policy all '^.*' '{"ha-mode": "all"}'

ELB の設定

一部抜粋。

            "ListenerDescriptions": [
                {
                    "Listener": {
                        "InstancePort": 5671,
                        "LoadBalancerPort": 5671,
                        "Protocol": "TCP",
                        "InstanceProtocol": "TCP"
                    },
                    "PolicyNames": []
                },
                {
                    "Listener": {
                        "InstancePort": 5672,
                        "LoadBalancerPort": 5672,
                        "Protocol": "TCP",
                        "InstanceProtocol": "TCP"
                    },
                    "PolicyNames": []
                }
            ],

マルチゾーンに関しては上記の図の通り現時点では非採用(特に理由は無いけど)。

sensu-client の RabbitMQ の設定

sensu のクライアント側の RabbitMQ に関しては以下のように設定。

{
  "rabbitmq": {
    "ssl": {
      "private_key_file": "/etc/sensu/ssl/key.pem",
      "cert_chain_file": "/etc/sensu/ssl/cert.pem"
    },
    "host": "internal-rabbit-123456789.ap-northeast-1.elb.amazonaws.com",
    "port": 5671,
    "user": "sensu",
    "password": "your_password",
    "vhost": "/sensu"
  }
}

ポイント(と言うほどでもないけど)は host の設定を ELB のエンドポイント URL に設定していること(くらい)。

sensu-client の起動

sudo /etc/init.d/sensu-client start

一瞬で sensu-server01 に以下のようにクライアントが登録される。

f:id:inokara:20140329095812p:plain

sensu-server 弐号機の起動

上図の sensu-server02 を起動する。

sudo /etc/init.d/sensu-server start

こちらも一瞬で...

f:id:inokara:20140329095632p:plain

クライアントを確認することが出来る...ふむふむ。ここで色々な妄想と疑問が...。


引き続き

出来そうな事としては...

  • AutoScaling とタッグを組んで sensu-server の負荷に応じて自動増減
  • Multi Zone なクラスタ

気になった点としては....

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

ということでシリーズ化決定。