はじめに

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

    • PaaSを利用する (Oracle Event Hub Cloud Service)

 

    IaaSでComputeノード上に構築する

後者の場合、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)
listeners=PLAINTEXT://10.0.1.3:9092
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)

参考

    • チュートリアル : Oracle Cloud Infrastructure を使ってみよう

 

    Confluent – Installation – RPM packages via yum
bannerAds