Linux环境下zookeeper安装方法
一、环境准备
1、下载zookeeper
下载地址:http://zookeeper.apache.org/

2、解压缩并把zookeeper放到opt下
tar -zxvf zookeeper.tar.gz
mv zookeeper /opt

二、配置步骤
1、配置环境变量
gedit /etc/profile

追加以下内容:
#zookeeper environment
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.6
export CLASSPATH=.:$ZOOKEEPER_HOME/lib
export PATH=$PATH:$ZOOKEEPER_HOME/bin

使环境变量生效:source /etc/profile

2、在$ZOOKEEPER_HOME下建立data目录
mkdir -p data

3、设置myid
在data目录下建立myid文件,并追加以下内容:
1

4、配置zoo.cfg
文件位置:$ZOOKEEPER_HOME/conf/zoo.cfg
将dataDir设置为$ZOOKEEPER_HOME/data,并追加以下内容:
server.1=SUSE-11G-1:2888:3888

说明:server.X用来配置ZooKeeper集群中的各节点,且X的值和myid保持一致。端口2181用于监听客户端的连接,端口2888用于Leader监听Follower的连接,而3888则用于Leader选举。

server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
myid中对应的数字用来标识该机器是集群中的几号机器,即为A的值。

5、如果是集群配置,需要将zookeeper分发到所有的节点上,同时修改myid的值

example :server.1=192.168.121.129:2888:3888
server.2=192.168.121.130:2888:3888
那么其中一个节点就会作为leader,另一个作为follower

三、启动zookeeper
zkServer.sh start

四、验证
1、启动zookeeper后,查看节点状态
zkServer.sh status

zoo_sample.cfg 文件配置
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/zkdata
dataLogDir=/opt/zookeeper/zkdatalog
clientPort=12181
server.1=192.168.7.100:12888:13888
server.2=192.168.7.101:12888:13888
server.3=192.168.7.107:12888:13888

server.1 这个1是服务器的标识也可以是其他的数字, 表示这个是第几号服务器,用来标识服务器,这个标识要写到快照目录下面myid文件里。

192.168.7.107为集群里的IP地址,第一个端口是master和slave之间的通信端口,默认是2888,第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888

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 会监听这个端口,接受客户端的访问请求。修改他的端口改大点