linux环境下安装zookeeper
先 安装JDK
下载zk
镜像下载地址:https://mirror.bit.edu.cn/apache/zookeeper/
备用镜像下载地址:https://downloads.apache.org/zookeeper/
[root@kk data]# tar -xf apache-zookeeper-3.5.9-bin [root@kk data]# mv apache-zookeeper-3.5.9-bin zookeeper [root@kk zookeeper]# vim /etc/profile export zookeeper_home=/data/zookeeper [root@kk zookeeper]# source /etc/profile
重要配置说明
1、myid文件和server.myid 在快照目录下存放的标识本台服务器的文件,他是整个zk集群用来发现彼此的一个重要标识。
2、zoo.cfg 文件是zookeeper配置文件 在conf目录里。
3、log4j.properties文件是zk的日志输出文件 在conf目录里用java写的程序基本上有个共同点日志都用log4j,来进行管理。
4、zkEnv.sh和zkServer.sh文件
1、软件环境
配置主机名和ip的映射
在Zookeeper集群运行的过程中,每一个Zookeeper节点是需要相互通信的,并且是通过主机名来相互通信的,集群每个节点需要相互识别,所以,在配置一个Zookeeper节点的时候需要配置其他节点主机名到ip的映射
[root@kk zookeeper]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.8 kafka01 192.168.1.9 kafka02 192.168.1.10 kafka03
配置Zookeeper的配置文件
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=/data/zookeeper/zkdata # the port at which the clients will connect clientPort=2181 server.1=kafka01:2888:3888 server.2=kafka02:2888:3888 server.3=kafka03:2888:3888
#server.1 这个1是服务器的标识也可以是其他的数字, 表示这个是第几号服务器,用来标识服务器,这个标识要写到快照目录下面myid文件里 #192.168.7.107为集群里的IP地址,第一个端口是master和slave之间的通信端口,默认是2888,第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888
以上配置文件与单机模式相比其实也就多了集群中server.id和主机名、端口号的映射信息
配置文件解释:
#tickTime: 这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。 #initLimit: 这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒 #syncLimit: 这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是5*2000=10秒 #dataDir: 快照日志的存储路径 #dataLogDir: 事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多 #clientPort: 这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。修改他的端口改大点
设置myid
在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,在conf/zoo.cfg中配置的server.x中x是什么数字就设置id为这个数字,如下面所示:
[root@kafka01 zookeeper]# echo "1" > /data/zookeeper/zkdata/myid
[root@kafka02 zookeeper]# echo "2" > /data/zookeeper/zkdata/myid
[root@kafka03 zookeeper]# echo "3" > /data/zookeeper/zkdata/myid
配置好后,启动集群
配置好后,进入/data/zookeeper/目录下,然后执行如下命令启动zookeeper:
[root@kafka01 zookeeper]# sh bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@kafka02 zookeeper]# sh bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@kafka03 zookeeper]# sh bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
安装验证
安装完成后,可以通过zookeeper的脚本来查看zookeeper的启动状态,以及每个Zookeeper节点在集群中的角色(Leader和Follower),下面是我的Zookeeper集群各节点的查询结果:
[root@kafka01 zookeeper]# sh bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@kafka02 zookeeper]# sh bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@kafka03 zookeeper]# sh bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
zk集群一般只有一个leader,多个follower,主一般是相应客户端的读写请求,而从主同步数据,当主挂掉之后就会从follower里投票选举一个leader出来。

评论