DIY

とりあえずやってみるのメモ。技術的なメモもありますが、独り言もあります。

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でどういった振る舞いになるか確認して見る。