Azure DC/OSでKafkaを動かしてみる

DC/OS Universe から Kafka パッケージをインストール

DC/OSにはUniverseって仕組みがあって、パッケージをDC/OS上にインストールできるみたいなの。

f:id:bufferings:20161217205328p:plain

Kafkaがあったので試しにポチポチ押してインストールしてみた。

f:id:bufferings:20161217205402p:plain

そしたらKafkaが起動し始めるんだけど

f:id:bufferings:20161217205530p:plain

リソースが足りないっぽくてインストールが完了しないや。ってなって、これをしたのだ↓

bufferings.hatenablog.com

無事動いたっぽい。(∩´∀`)∩ワーイ。

f:id:bufferings:20161217205710p:plain

動作確認をしたいなー

と思って、ドキュメントを見てたら、CLIからやってる。

docs.mesosphere.com

まぁ、続きはCLIでやるか。と思って

$ dcos kafka
'kafka' is not a dcos command.

(´・ω・`)ショボ

あれー。これコマンドからインストールしないと使えないのかなー?って思ってhelpをウロウロ見てみてたら

$ dcos package
Command not recognized

Usage:
    dcos package --config-schema
    dcos package --help
    dcos package --info
    dcos package describe [--app --cli --config]
                          [--render]
                          [--package-versions]
                          [--options=<file>]
                          [--package-version=<package-version>]
                          <package-name>
    dcos package install [--cli | [--app --app-id=<app-id>]]
                         [--package-version=<package-version>]
                         [--options=<file>]
                         [--yes]
                         <package-name>
    dcos package list [--json --app-id=<app-id> <package-name>]
    dcos package search [--json <query>]
    dcos package repo add [--index=<index>] <repo-name> <repo-url>
    dcos package repo remove <repo-name>
    dcos package repo list [--json]
    dcos package uninstall [--cli | [--app --app-id=<app-id> --all]]
                           <package-name>
    dcos package update

dcos package install のオプションに --cli ってある。これ試してみるか。

$ dcos package install --cli kafka
Installing CLI subcommand for package [kafka] version [1.1.16-0.10.0.0]
New command available: dcos kafka

キタ-(∩´∀`)∩

動作確認するぞー

topic作って

$ dcos kafka topic create topic1
{
  "message": "Output: Created topic \"topic1\".\n"
}

情報を見といて

$ dcos kafka connection
{
  "address": [
    "10.32.0.7:9630",
    "10.32.0.8:9754",
    "10.32.0.6:9801"
  ],
  "zookeeper": "master.mesos:2181/dcos-service-kafka",
  "dns": [
    "broker-0.kafka.mesos:9630",
    "broker-1.kafka.mesos:9754",
    "broker-2.kafka.mesos:9801"
  ],
  "vip": "broker.kafka.l4lb.thisdcos.directory:9092"

マスターノードに入って

$ MASTER_FQDN=sandboxmgmt.japanwest.cloudapp.azure.com
$ sudo ssh azureuser@${MASTER_FQDN} -p 2200

mesosphereが作ってくれてるkafka-clientを実行してメッセージをtopic1に送信

azureuser@dcos-master:~$ sudo docker run -it mesosphere/kafka-client
root@b2be11c1af94:/bin# echo "Hello, World." | ./kafka-console-producer.sh \
  --broker-list 10.32.0.7:9630, 10.32.0.8:9754, 10.32.0.6:9801 --topic topic1

からの受信

root@b2be11c1af94:/bin# ./kafka-console-consumer.sh \
  --zookeeper master.mesos:2181/dcos-service-kafka \
  --topic topic1 --from-beginning
Hello, World.

(๑•̀ㅂ•́)و✧

今回は、とりあえずどうなるのかなー?って思って、デフォルトのままやったので、メイン1つと、ブローカー3つの4つのタスクを動かしたけど、家で使って遊ぶくらいだったらシンプルな構成にしといたらいいかな。

https://docs.mesosphere.com/1.8/usage/service-guides/kafka/install-and-customize/#scrollNav-3

{
    "brokers": {
        "count": 1,
        "mem": 512,
        "disk": 1000
    }
}

ちゃんと使うなら、どんな風に永続化されるのかとか、色々気になるところはいっぱいあるんだけど、ま、今は作って楽しむ方でいいかな。あと、GUI使うより、CLI使ったほうが楽だな。