Docker上でKafkaを動かす(1)
前回Sparkを入れてみたが、前段のデータのキューの部分を実現したくなった。
事情により今回からCentOS7の仮想マシン上に構築している。
1.まずはDockerを入れる。
# yum -y install docker-io
2.Docker上でCentos7のイメージを起動する。
コンテナが起動したら自動で設定されるDNSを設定する # vim /etc/sysconfig/docker other_args="-dns 8.8.8.8" コンテナをダウンロードして起動する。 # docker pull centos:centos7 # docker run -i -t centos:centos7 /bin/bash
3.DockerコンテナZookeeperとKafkaを入れる
以降はDockerコンテナ上での操作。
3-1.Dockerコンテナ上にzookeeperをインストール
# yum install -y wget
とここで以下のようなエラーがでた。
Error: database disk image is malformed
どうも yum cleanをする必要があるらしい。
# yum clean all
仕切りなおしてZookeeperを入れる
# wget http://mirror.reverse.net/pub/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz # tar xvzf zookeeper-3.4.8.tar.gz # mv zookeeper-3.4.8 /usr/local/lib/zookeeper
3-2.Dockerコンテナ上にKafkaをインストール
Scalaを入れる
#rpm -ivh http://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.rpm
続いてKafkaをインストール
# wget http://ftp.tsukuba.wide.ad.jp/software/apache/kafka/0.10.0.0/kafka_2.11-0.10.0.0.tgz # tar xvzf kafka_2.11-0.10.0.0.tgz # mv kafka_2.11-0.10.0.0 /usr/local/lib/kafka
ここでいったんホスト側からコンテナをイメージ化しておく
# docker commit container_id kafka
4.起動
まずはコンテナを起動する。
# docker run -i -t kafka /bin/bash
Zookeeperを起動。
# cd /usr/local/lib # kafka/bin/zookeeper-server-start.sh -daemon kafka/config/zookeeper.properties &
Kafkaを起動
# kafka/bin/kafka-server-start.sh -daemon kafka/config/server.properties &
起動しているか確認する。
# ps aux | grep zookeeper # ps aux | grep kafka
トピックを作成する。トピック名はmytopicにする。トピックを確認する。
# kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic mytopic # kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181 mytopic
トピックに対してメッセージ送信
# kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic mytopic Test Message. (Ctrl-C)
トピックからメッセージを受信
# kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic mytopic --from-beginning Test Message. (Ctrl-C)
メッセージ自体の格納場所を確認。
# cat /tmp/kafka-logs/mytopic-0/00000000000000000000.log
Test Message.
とりあえずこんな感じ。
次は複数のBrokerでどういった振る舞いになるか確認して見る。