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开始自增