溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

zookeeper 和 kafka 的安裝使用

發(fā)布時(shí)間:2020-08-04 01:23:00 來源:網(wǎng)絡(luò) 閱讀:6014 作者:cuizhiliang 欄目:建站服務(wù)器

前提都安裝JDK 6版本以上

java -version

java version "1.7.0_79"



測(cè)試環(huán)境集群結(jié)構(gòu)(三臺(tái)集群的hosts一定要互相解析 不然會(huì)很坑)


server1: 192.168.100.10

server1: 192.168.100.13

server1: 192.168.100.20


安裝包:

zookeeper-3.4.9.tar.gz 

kafka_2.11-0.10.1.0.tgz 


背景:

為了獲得可靠的 ZooKeeper 服務(wù),用戶應(yīng)該在一個(gè)集群上部署 ZooKeeper 。只要集群上大多數(shù)的 ZooKeeper 服務(wù)啟動(dòng)了,那么總的 ZooKeeper 服務(wù)將是可用的。另外,最好使用奇數(shù)臺(tái)機(jī)器。 如果 zookeeper 擁有 5 臺(tái)機(jī)器,那么它就能處理 2 臺(tái)機(jī)器的故障了。




### zookeeper的集群安裝##################


1、安裝包下載到/usr/local/src

2、解壓至安裝路徑/usr/localcd 

cd /usr/local/src/

tar -xvf zookeeper-3.4.9.tar.gz   -C /usr/local/

cd /usr/local

ln -s zookeeper-3.4.9/ zookeeper



3、修改配置文件

cd  cd /usr/local/zookeeper/conf/

cp zoo_sample.cfg zoo.cfg


配置文件(每臺(tái)zookeeper的配置文件都一樣)

[root@master conf]# cat zoo.cfg 

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial 

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between 

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just 

# example sakes.

dataDir=/usr/local/zookeeper/data

# the port at which the clients will connect

clientPort=2181

# the maximum number of client connections.

# increase this if you need to handle more clients

#maxClientCnxns=60

#

# Be sure to read the maintenance section of the 

# administrator guide before turning on autopurge.

#

# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

#

# The number of snapshots to retain in dataDir

#autopurge.snapRetainCount=3

# Purge task interval in hours

# Set to "0" to disable auto purge feature

#autopurge.purgeInterval=1


#第一個(gè)端口( port )是從( follower )機(jī)器連接到主( leader )機(jī)器的端口

#第二個(gè)端口是用來進(jìn)行 leader 選舉的端口

server.1=192.168.100.10:2888:3888

server.2=192.168.100.13:2888:3888

server.3=192.168.100.20:2888:3888





### 注釋:

在這個(gè)文件中,我們需要指定 dataDir 的值,它指向了一個(gè)目錄,這個(gè)目錄在開始的時(shí)候需要為空。下面是每個(gè)參數(shù)的含義:

tickTime :基本事件單元,以毫秒為單位。它用來指示心跳,最小的 session 過期時(shí)間為兩倍的 tickTime. 。

dataDir :存儲(chǔ)內(nèi)存中數(shù)據(jù)庫快照的位置,如果不設(shè)置參數(shù),更新事務(wù)日志將被存儲(chǔ)到默認(rèn)位置。

clientPort :監(jiān)聽客戶端連接的端口

#server.A=B:C:D  其中A是一個(gè)數(shù)字,代表這是第幾號(hào)服務(wù)器;B是服務(wù)器的IP地址;C表示服務(wù)器與群集中的“領(lǐng)導(dǎo)者”交換信息的端口;當(dāng)領(lǐng)導(dǎo)者失效后,D表示用來執(zhí)行選舉時(shí)服務(wù)器相互通信的端口。





4、創(chuàng)建數(shù)據(jù)目錄和創(chuàng)建myid文件

mkdir /usr/local/zookeeper/data

echo "1" > /usr/local/zookeeper/data/myid






### 配置其他節(jié)點(diǎn)

myid要不一樣



5、啟動(dòng)集群

按照上述進(jìn)行配置即可。

第五步:?jiǎn)?dòng)ZooKeeper集群

在ZooKeeper集群的每個(gè)結(jié)點(diǎn)上,執(zhí)行啟動(dòng)ZooKeeper服務(wù)的腳本,如下所示:

cd /usr/local/zookeeper/

bin/zkServer.sh start  

bin/zkServer.sh start  

bin/zkServer.sh start  



查看日志:(日志生成在執(zhí)行啟動(dòng)的目錄下)

tail -f zookeeper.out



查看監(jiān)聽的端口:(Leader端 才監(jiān)聽2888 端口,follower是不監(jiān)聽的,只監(jiān)聽3888端口)

[root@agent zookeeper]# netstat -tulnp |grep 88

tcp        0      0 ::ffff:192.168.100.13:3888  :::*                        LISTEN      18526/java          

tcp        0      0 ::ffff:192.168.100.13:2888  :::*                        LISTEN      18526/java          

[root@agent zookeeper]# netstat -tulnp |grep 2181

tcp        0      0 :::2181                     :::*                        LISTEN      18526/java          

[root@agent zookeeper]# 




6 驗(yàn)證


./bin/zkServer.sh  status



注釋: 因?yàn)閱?dòng)順序是從第一臺(tái)開始的 所以看日志第一臺(tái)會(huì)有日志因?yàn)榈诙_(tái)第三臺(tái)還未啟動(dòng),一會(huì)就正常了忽略



看到各個(gè)角色(leader選舉出來表示集群正常) 通過上面狀態(tài)查詢結(jié)果可見,第二臺(tái)是集群的Leader,其余的兩個(gè)結(jié)點(diǎn)是Follower。

[root@agent zookeeper]# ./bin/zkServer.sh  status

ZooKeeper JMX enabled by default

Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg

Mode: leader



7、測(cè)試客戶端命令連接

./bin/zkCli.sh -server 192.168.100.10:2181


連接上去之后:

執(zhí)行命令

[zk: 192.168.100.10:2181(CONNECTED) 4] ls /

[zookeeper]




注: 當(dāng)前根路徑為/zookeeper。








################# 安裝kafka

下載包

[root@master src]# ll kafka_2.11-0.10.1.0.tgz 

-rw-r--r-- 1 root root 34373824 Oct 20  2016 kafka_2.11-0.10.1.0.tgz


1、解壓至安裝目錄

tar -xvf kafka_2.11-0.10.1.0.tgz -C /usr/local/

cd /usr/local/

ln -s kafka_2.11-0.10.1.0/ kafka





2、修改配置文件

cd /usr/local/kafka/config

vim server.properties 


需要修改的項(xiàng)目:

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

broker.id=1





# A comma seperated list of directories under which to store log files

log.dirs=/usr/local/kafka/logs


# Zookeeper connection string (see zookeeper docs for details).

# This is a comma separated host:port pairs, each corresponding to a zk

zookeeper.connect=192.168.100.10:2181,192.168.100.13:2181,192.168.100.20:2181



注意:每臺(tái)kafka的broer.id 是不一樣的

3、創(chuàng)建日志目錄

mkdir /usr/local/kafka/logs





4、### 配置其他節(jié)點(diǎn)



5、啟動(dòng)

從后臺(tái)啟動(dòng)Kafka集群(3臺(tái)都需要啟動(dòng))

cd /usr/local/kafka/bin/
./kafka-server-start.sh -daemon  ../config/server.properties


[root@master bin]# jps

7449 Jps

7427 Kafka             #kafka進(jìn)程

31341 QuorumPeerMain   #zk進(jìn)程



如果(3個(gè)kafka進(jìn)程都在表示正常,配置文件錯(cuò)誤是服務(wù)起不了)


查看啟動(dòng)日志:

tail -f  /usr/local/kafka/logs/server.log 



6、測(cè)試kafka集群


1-進(jìn)入kafka根目錄,創(chuàng)建topic   test

./bin/kafka-topics.sh --create --zookeeper 192.168.100.10:2181,192.168.100.13:2181,192.168.100.20:2181 --replication-factor 1 --partitions 1 --topic test

結(jié)果:

Created topic "test".



2-列出已創(chuàng)建的topic列表

./bin/kafka-topics.sh --list --zookeeper 192.168.100.10:2181,192.168.100.13:2181,192.168.100.20:2181

結(jié)果:

test


或者使用zookeeper命令去查看

./bin/zkCli.sh -server 192.168.100.10:2181

[zk: 192.168.100.10:2181(CONNECTED) 3] ls /brokers/topics

[test]




3-模擬客戶端去發(fā)送消息


./bin/kafka-console-producer.sh --broker-list 192.168.100.10:9092,192.168.100.13:9092,192.168.100.20:9092 --topic test


4-模擬客戶端去接受消息(雖然看到的是消費(fèi) 但是因?yàn)橄M(fèi)么有刪除每次 執(zhí)行之前的模擬信息還會(huì)看到)

./bin/kafka-console-consumer.sh --zookeeper 192.168.100.10:2181,192.168.100.13:2181,192.168.100.20:2181 --from-beginning --topic test





5、停止 在啟動(dòng)(重啟)


集群依次kafka都需要停止

./bin/kafka-server-stop.sh


集群依次kafka都需要啟動(dòng)

cd /usr/local/kafka/bin/
./kafka-server-start.sh -daemon  ../config/server.properties




6、 刪除測(cè)試的test 的那個(gè)topic

./bin/kafka-topics.sh --delete --zookeeper 192.168.100.10:2181,192.168.100.13:2181,192.168.100.20:2181 --topic test


結(jié)果                             

Topic test is marked for deletion.

Note: This will have no impact if delete.topic.enable is not set to true.


因?yàn)?

如果kafaka啟動(dòng)時(shí)加載的配置文件中server.properties沒有配置(默認(rèn)沒有配置 默認(rèn)值為false)delete.topic.enable=true,那么此時(shí)的刪除并不是真正的刪除,而是把topic標(biāo)記為:marked for deletion



徹底刪除進(jìn)入zk

./bin/zkCli.sh -server 192.168.100.10:2181

rmr /brokers/topics/test


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI