Edited at

Oracle Cloud Infrastructure環境でKafkaを動かしてみる


はじめに

Oracle Cloud Infrastructure上でKafkaを使用するには、いくつかの選択肢があります。

後者の場合、Terraformスクリプトで事前定義済みの構成を簡単にdeploy する方法があります。が、今回は使用できるCloudリソース(VM数)の都合で、1台のCompute Node上に手動インストールしたものを利用しました。


環境


  • Oracle Cloud Infrastructure 上 の Computeインスタンス (VM Instance)

  • OS: CentOS 7

  • Private IPアドレス:10.0.1.3 とする


    • Oracle Cloud Infrastructure 環境で Computeインスタンスを作成すると、VCN(仮想ネットワーク)内で使用するPrivate IPアドレスと、グローバルにアクセス可能なPublic IPアドレスが付与されます




インストール内容


  • Confluent社が配布するディストリビューション(Confluent Platform)のOSS版


    • confluent-platform-oss-2.11



  • rootユーザで rpmインストール

  • Kafkaの起動停止は confluentユーザで行う


インストール

rootで実行

# rpm --import http://packages.confluent.io/rpm/3.2/archive.key

# cat /etc/yum.repos.d/confluent.repo
[Confluent.dist]
name=Confluent repository (dist)
baseurl=http://packages.confluent.io/rpm/3.2/7
gpgcheck=1
gpgkey=http://packages.confluent.io/rpm/3.2/archive.key
enabled=1

[Confluent]
name=Confluent repository
baseurl=http://packages.confluent.io/rpm/3.2
gpgcheck=1
gpgkey=http://packages.confluent.io/rpm/3.2/archive.key
enabled=1

# yum clean all
# yum install confluent-platform-oss-2.11


ユーザとディレクトリの作成

# mkdir /var/lib/zookeeper

# mkdir /var/lib/kafka <== 今回はすでに存在していた
# chmod a+w /var/lib/zookeeper (乱暴だが一旦コレで)
# chmod a+w /var/lib/kafka (同上)
# adduser confluent
# passwd confluent


設定ファイルの編集(rootで)

OCI上の別のComputeと通信できるよう、IPアドレスを設定する。(オリジナルの設定ファイルではlocalhostでのみ通信可能)

それぞれ設定ファイルを編集。以下のエントリを探してlocalhost指定ではなくPrivate IPアドレスを指定するよう変更する。


  • 後でKafka Connectを動かすので、ここではKafka Connect用の設定ファイルも一緒に編集している。(/etc/kafka/connect-distributed.properties)


/etc/kafka/server.properties

listeners=PLAINTEXT://10.0.1.3:9092



/etc/kafka/connect-distributed.properties

bootstrap.servers=10.0.1.3:9092



起動

confluentユーザで実施。zookeeper, kafka server, kafka connectorを順に起動。


  • 後でKafka Connectを動かすので、ここでは schema-registry と Kafka Connect(connect-distributed) も一緒に起動している。

$ /usr/bin/zookeeper-server-start /etc/kafka/zookeeper.properties

$ /usr/bin/kafka-server-start /etc/kafka/server.properties
$ /usr/bin/schema-registry-start /etc/schema-registry/schema-registry.properties
$ connect-distributed /etc/kafka/connect-distributed.properties


Kafkaを動かしてみる

TOPICの作成 (TOPIC名:mytest1とする)

$ kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic mytest1

Consumerの起動

$ kafka-console-consumer --bootstrap-server 10.0.1.3:9092 --topic mytest1

Producerの起動

$ kafka-console-producer --broker-list 10.0.1.3:9092 --topic mytest1

Producer側のコンソールに何か入力すると、Consumer側のコンソールに同じ文字列が表示される。

ここでは、「hello world!」と入力。

consumer側(起動したコンソール):

$ kafka-console-consumer --bootstrap-server 10.0.1.3:9092 --topic mytest1

hello world! <-- Producer側から投入したメッセージが表示される


(Optional): VNCのインストール

作業効率化目的でVNCをインストールし起動

# yum groupinstall "Server with GUI"

# yum install vnc-server 

$ vncserver :1


(Optional): PORTの開放とFirewall設定

リモートマシンからのTOPICへの投入ができるよう設定する。具体的には、Oracle CloudのVCN(仮想ネットワーク)のPORT開放と、VMインスタンスのFirewall設定を行う。

設定方法はこちら

※PORT 9092と5901に読み替えて実施。(Kafka:9092, VNC:5901)


参考