1.创建文件

mkdir /usr/local/zookeeper # 创建文件
mkdir /usr/local/zookeeper/data # 存储目录
mkdir /usr/local/zookeeper/datalog # 日志目录
cd /usr/local/zookeeper # 进入文件

2.下载解压

http://mirror.bit.edu.cn/apache/zookeeper/stable/ # 下载地址
wget http://mirror.bit.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.5.7-bin.tar.gz # 下载 必须下载带bin的包 不然会因为缺少jar包报错的
tar -xzvf apache-zookeeper-3.5.7-bin.tar.gz # 解压

3.修改配置文件

cd apache-zookeeper-3.5.7-bin/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
 
clientPort=2181   # 连接服务器的端口
tickTime=2000   # 用于计算的单元时间,比如session超时  毫秒
initLimit=10   # 用于集群,允许从节点连接并同步到master节点的初始化连接时间,以tickTime的倍数来表示
syncLimit=5   # 用于集群 master主节点与从节点之间发送的消息请求和应答时间(心跳机制),以tickTime的倍数来表示
dataDir=/usr/local/zookeeper/data  # 数据文件地址
dataLogDir=/usr/local/zookeeper/datalog  # 日志文件目录,不配与dataDir同一个目录  推荐不配置
admin.serverPort=8080   # AdminService是一个内置的HTTP服务,提供一些四字命令。系统默认开启,绑定8080端口

4lw.commands.whitelist=*  # 四字命令

4.添加配置文件

vim /etc/profile

ZOOKEEPER_HOME=/usr/local/zookeeper/apache-zookeeper-3.5.7-bin # zookeeper
PATH=$PATH:$ZOOKEEPER_HOME/bin # zookeeper
export PATH ZOOKEEPER_HOME PATH # zookeeper

source /etc/profile # 需要安装java环境

5.启动

cd /usr/local/zookeeper/apache-zookeeper-3.5.7-bin/bin
zkServer.sh start # 手动启动
zkServer.sh stop # 手动关闭
zkServer.sh restart # 手动重启
zkServer.sh status # 查看服务状态
zkCli.sh # 进入shell交互
/usr/local/zookeeper/apache-zookeeper-3.5.7-bin/logs/zookeeper-root-server-localhost.localdomain.out # 启动的配置文件

6.设置开机启动

vim /usr/lib/systemd/system/zookeeper.service

[Unit]
Description=zookeeper
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/zookeeper/apache-zookeeper-3.5.7-bin/bin/zkServer.sh start
ExecReload=/usr/local/zookeeper/apache-zookeeper-3.5.7-bin/bin/zkServer.sh restart
ExecStop=/usr/local/zookeeper/apache-zookeeper-3.5.7-bin/bin/zkServer.sh stop
[Install]
WantedBy=multi-user.target

systemctl daemon-reload # 设置生效
chmod 777 /usr/lib/systemd/system/zookeeper.service # 修改文件权限
systemctl enable /usr/lib/systemd/system/zookeeper.service # systemctl开机启动zookeeper
systemctl is-enabled zookeeper.service # 查看是否开机启动
systemctl disable zookeeper.service # systemctl取消开机启动

7.zookeeper集群搭建

vim zoo.cfg

server.0=192.168.107.216:2888:3888 # 如果是本机上的配置也可以换成0.0.0.0:2888:3888  2888:数据复制的端口    3888:选举模式下的端口
server.1=192.168.107.214:2888:3888
cd /usr/local/zookeeper/apache-zookeeper-3.5.7-bin/bin zkServer.sh start # 手动启动 zkServer.sh stop # 手动关闭 zkServer.sh restart # 手动重启 zkServer.sh status # 查看服务状态 Mode: leader # 主服务 Mode: follower # 从服务 tickTime:基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小 的session过期时间为2倍tickTime dataDir:存储内存中数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志。注意:应该谨慎的选择日志存放的位置,使用专用的日志存储设备能够大大提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会很大程度上影像系统性能。 client:监听客户端连接的端口。 initLimit:允许follower连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。 syncLimit:表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。 server.A=B:C:D     A:其中 A 是一个数字,表示这个是服务器的编号;     B:是这个服务器的 ip 地址;     C:Leader选举的端口;     D:Zookeeper服务器之间的通信端口。   我们需要修改的第一个是 dataDir ,在指定的位置处创建好目录。   第二个需要新增的是 server.A=B:C:D 配置,其中 A 对应下面我们即将介绍的myid 文件。B是集群的各个IP地址,C:D 是端口配置

8.创建 myid 文件

vim /usr/local/zookeeper/data/myid

0   # 用来唯一标识这个服务。这个id是很重要的,一定要保证整个集群中唯一   一般我从0开始自增