利用kafka自帶的zookeeper搭建kafka集羣

搭建kafka集羣是需要zookeeper的,可是kafka自身就已經帶了一個zookeeper,所以不需要額外搭建zookeeper的集羣,只需要將kafka自帶的zookeeper配置成一個集羣就可以。

目錄
1、kafka的下載和安裝
2、配置zookeeper
3、配置kafka
4、啓動zookeeper集羣
5、啓動kafka集羣

1、kafka的下載和安裝

本次安裝採用的kafka版本是2.3.0。

首先,下載安裝包。
從kafka的官方網站上找到相應的下載鏈接之後,用wget下載(wget https://archive.apache.org/dist/kafka/2.3.0/kafka_2.12-2.3.0.tgz),之後得到一個安裝包kafka_2.12-2.3.0.tgz。

其次,安裝。
預計將kafka安裝在/usr/local/目錄下,所以將下載的安裝包解壓到/usr/local/目錄下(tar -xzf kafka_2.12-2.3.0.tgz -C /usr/local),解壓後得到一個名爲kafka_2.12-2.3.0的文件夾,這就是kafka的安裝目錄了,爲了進入方便給安裝目錄做一個軟連接ln -s kafka_2.12-2.3.0 kafka,這樣以後cd kafka的時候,實際上就是進入了kafka安裝目錄kafka_2.12-2.3.0中。

第三,安裝集羣規劃。
預計安裝一個3節點的集羣,3個節點的ip如下:

172.17.2.136
172.17.2.138
172.17.2.139

2、配置zookeeper

kafka自帶的zookeeper的配置文件是kafka安裝目錄下config/zookeeper.properties。

第一步,建數據目錄和日誌目錄。
爲了配置zookeeper,要提前爲zookeeper建好數據目錄和日誌目錄。

cd /usr/local/kafka
mkdir -p zookeeper/data zookeeper/log

第二步,在配置文件中寫入配置項。
要配置哪些配置項是提前考慮好的,如下所示:

# the directory where the snapshot is stored.
dataDir=/usr/local/kafka/zookeeper/data

#修改爲自定義的zookeeper日誌目錄
dataLogDir=/usr/local/kafka/zookeeper/log

# the port at which the clients will connect
clientPort=2181

#註釋掉
#maxClientCnxns=0

#設置連接參數,添加如下配置
#爲zk的基本時間單元,毫秒
tickTime=2000
#Leader-Follower初始通信時限 tickTime*10
initLimit=10
#Leader-Follower同步通信時限 tickTime*5
syncLimit=5

#設置broker Id的服務地址
server.0=172.17.2.136:2888:3888
server.1=172.17.2.138:2888:3888
server.2=172.17.2.139:2888:3888

第三步,建myid文件
在zookeeper的數據目錄/usr/local/zookeeper/data下,建一個文本文件myid,內容爲每個zookeeper節點的編號。因爲是3個節點kafka集羣,所以zookeeper集羣也是3個節點,他們的編號分別是0、1、2.

經過以上3個步驟,一個節點的zookeeper就配置完成了。

3、配置kafka

kafka的配置文件是config/server.properties。

第一步,創建kafka數據日誌目錄。注意這裏雖然叫日誌目錄,可不是真的kafka運行日誌存放的目錄,耳熟kafka中的消息數據存放的目錄,因爲kafka中消息是以write append log的形式存放的,所以這裏的日誌目錄實際是數據目錄,但是數據又的確是以日誌的形式存放,所以就叫數據日誌目錄。

# 創建kafka的數據日誌目錄,命名爲kfkwalog
mkdir -p /usr/local/kafka/kfkwalog  

第二步,寫入配置項。
kafka的配置項很多,需要更改的配置項如下:

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=0

# The address the socket server listens on. It will get the value returned from
# java.net.InetAddress.getCanonicalHostName() if not configured.
#   FORMAT:
#     listeners = listener_name://host_name:port
#   EXAMPLE:
#     listeners = PLAINTEXT://your.host.name:9092
listeners=PLAINTEXT://172.17.2.136:9092

# Hostname and port the broker will advertise to producers and consumers. If not set,
# it uses the value for "listeners" if configured.  Otherwise, it will use the value
# returned from java.net.InetAddress.getCanonicalHostName().
advertised.listeners=PLAINTEXT://172.17.2.136:9092

############################# Log Basics #############################

# A comma separated list of directories under which to store log files
log.dirs=/usr/local/kafka/kfkwalog



############################# Zookeeper #############################

# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
zookeeper.connect=172.17.2.136:2181,172.17.2.138:2181,172.17.2.139:2181

經過以上3步驟,136一個kafka節點配置好了,然後將kafka安裝目錄打包,之後scp到138、139兩個節點,同時在138和139兩個節點做對應的修改,主要包括:
(1)是創建zookeeper的數據目錄zookeeper/data和日誌目錄zookeeper/log
(2)創建zookeeper數據目錄下的myid文件,138下myid內容是1,138下myid的內容是2。這樣以後,136的myid是0,138的myid是2,139的myid是2。
(3)創建kafka的數據日誌目錄kfkwalog
(4)修改kafka配置文件中的broker.id,136的broker.id是0,138的broker.id是1,139的broker.id是2
(5)修改kafka配置文件中的listeners和advertised.listeners,將其中的ip修改爲對應的節點ip。
就完成了kafka集羣和zookeeper集羣的配置工作了。

4、啓動zookeeper集羣

三個節點依次啓動,首先啓動136上的zookeeper,然後啓動138、139的。

首先,啓動採用如下的命令啓動zookeeper。

nohup bin/zookeeper-server-start.sh config/zookeeper.properties > logs/zookeeper/zookeeper.log 2>1 &

然後,查看zookeeper是否啓動成功。

[root@kfkby ~]# jps -l
130374 sun.tools.jps.Jps
111887 kafka.Kafka
47439 org.apache.zookeeper.server.quorum.QuorumPeerMain  #如果jps有這行輸出,說明zookeeper已經正常啓動起來了

5、啓動kafka集羣

啓動kafka和查看kafka啓動是否成功的命令如下:

nohup bin/kafka-server-start.sh config/server.properties > logs/kafka/kafka.log 2>1 &

[root@kfkby ~]# jps -l
130374 sun.tools.jps.Jps
111887 kafka.Kafka  # 如果jps有這一行輸出,說明kafka已經正常啓動起來了
47439 org.apache.zookeeper.server.quorum.QuorumPeerMain

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章