温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

zookeeper 和 kafka 的安装使用

发布时间:2020-08-04 01:23:00 来源:网络 阅读:6006 作者:cuizhiliang 栏目:建站服务器

前提都安装JDK 6版本以上

java -version

java version "1.7.0_79"



测试环境集群结构(三台集群的hosts一定要互相解析 不然会很坑)


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 服务,用户应该在一个集群上部署 ZooKeeper 。只要集群上大多数的 ZooKeeper 服务启动了,那么总的 ZooKeeper 服务将是可用的。另外,最好使用奇数台机器。 如果 zookeeper 拥有 5 台机器,那么它就能处理 2 台机器的故障了。




### 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


配置文件(每台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


#第一个端口( port )是从( follower )机器连接到主( leader )机器的端口

#第二个端口是用来进行 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





### 注释:

在这个文件中,我们需要指定 dataDir 的值,它指向了一个目录,这个目录在开始的时候需要为空。下面是每个参数的含义:

tickTime :基本事件单元,以毫秒为单位。它用来指示心跳,最小的 session 过期时间为两倍的 tickTime. 。

dataDir :存储内存中数据库快照的位置,如果不设置参数,更新事务日志将被存储到默认位置。

clientPort :监听客户端连接的端口

#server.A=B:C:D  其中A是一个数字,代表这是第几号服务器;B是服务器的IP地址;C表示服务器与群集中的“领导者”交换信息的端口;当领导者失效后,D表示用来执行选举时服务器相互通信的端口。





4、创建数据目录和创建myid文件

mkdir /usr/local/zookeeper/data

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






### 配置其他节点

myid要不一样



5、启动集群

按照上述进行配置即可。

第五步:启动ZooKeeper集群

在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本,如下所示:

cd /usr/local/zookeeper/

bin/zkServer.sh start  

bin/zkServer.sh start  

bin/zkServer.sh start  



查看日志:(日志生成在执行启动的目录下)

tail -f zookeeper.out



查看监听的端口:(Leader端 才监听2888 端口,follower是不监听的,只监听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 验证


./bin/zkServer.sh  status



注释: 因为启动顺序是从第一台开始的 所以看日志第一台会有日志因为第二台第三台还未启动,一会就正常了忽略



看到各个角色(leader选举出来表示集群正常) 通过上面状态查询结果可见,第二台是集群的Leader,其余的两个结点是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、测试客户端命令连接

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


连接上去之后:

执行命令

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

[zookeeper]




注: 当前根路径为/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 


需要修改的项目:

# 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



注意:每台kafka的broer.id 是不一样的

3、创建日志目录

mkdir /usr/local/kafka/logs





4、### 配置其他节点



5、启动

从后台启动Kafka集群(3台都需要启动)

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


[root@master bin]# jps

7449 Jps

7427 Kafka             #kafka进程

31341 QuorumPeerMain   #zk进程



如果(3个kafka进程都在表示正常,配置文件错误是服务起不了)


查看启动日志:

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



6、测试kafka集群


1-进入kafka根目录,创建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

结果:

Created topic "test".



2-列出已创建的topic列表

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

结果:

test


或者使用zookeeper命令去查看

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

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

[test]




3-模拟客户端去发送消息


./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-模拟客户端去接受消息(虽然看到的是消费 但是因为消费么有删除每次 执行之前的模拟信息还会看到)

./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、停止 在启动(重启)


集群依次kafka都需要停止

./bin/kafka-server-stop.sh


集群依次kafka都需要启动

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




6、 删除测试的test 的那个topic

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


结果                             

Topic test is marked for deletion.

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


因为:

如果kafaka启动时加载的配置文件中server.properties没有配置(默认没有配置 默认值为false)delete.topic.enable=true,那么此时的删除并不是真正的删除,而是把topic标记为:marked for deletion



彻底删除进入zk

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

rmr /brokers/topics/test


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI