环境准备
# 关闭防火墙(3台机器)
[root@master bin]# systemctl stop firewalld
[root@master bin]# systemctl enable firewalld
# 3个节点配置hosts文件 vim /etc/hosts 192.168.10.110 master 192.168.10.141 node1 192.168.10.142 node2
# 基于RSA算法 生成公钥 [root@master zookeeper]# ssh-keygen # node1的免密 [root@master zookeeper]# ssh-copy-id root@node1 # node2的免密 [root@master zookeeper]# ssh-copy-id root@node2
安装JDK
以下安装(2选1)
# 3个节点部署安装JDK (Yum安装,推荐)
yum install –y java-1.8.0-openjdk-devel.x86_64
# 检查java版本
java –version
# 检查java安装
yum list java* -y
# yum默认的java安装路径
[root@master ~]# ls /usr/bin/java -l
lrwxrwxrwx. 1 root root 22 Jun 20 15:50 /usr/bin/java -> /etc/alternatives/java# 配置java的环境变量
#set java environment
JAVA_HOME=/etc/alternatives/java_sdk_1.8.0
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
# java –version
Zookeeper部署
# 访问官网下载Zookeeper安装包,并解压
mkdir -p /opt/zookeeper cd /opt/zookeeper
# 创建软连接
ln -s zookeeper apache-zookeeper-3.7.0-bin # 创建数据目录 mkdir -p /opt/zk/zk_data # 创建日志目录 mkdir –p /opt/zk/zk_log
# 复制包到node1和node2
下载链接:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.7.0/
cd /opt/zk/apache-zookeeper-3.7.0-bincp zoo_sample.cfg zoo.cfg vim zoo.cfg dataDir=/opt/zk/zk_data dataLogDir=/opt/zk/zk_log server.1=master:2888:3888 server.2=node1:2888:3888 server.3=node2:2888:3888 # 同步配置文件到其他节点 scp zoo.cfg root@node1:/opt/zookeeper/zookeeper/conf/ scp zoo.cfg root@node2:/opt/zookeeper/zookeeper/conf/
说明:
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 是一个数字,表示这个是服务器的编号,对应myid文件
B:是这个服务器的 ip 地址;
C:Zookeeper服务器之间的通信端口;
D:Leader选举的端口。# 参考官方文档:https://zookeeper.apache.org/doc/r3.5.8/zookeeperStarted.html
# master节点配置,myid参考配置文件zoo.cfg中配置的信息
[root@master conf]# cd /opt/zk/zk_data/ [root@master data]# ll total 0 [root@master data]# echo '1' >myid
# node1和node2分别写入2,3
#(3台机器操作) 配置zk变量信息 vim /etc/profile #set zookeeper environment export ZK_HOME=/opt/zk/apache-zookeeper-3.7.0-bin
export PATH=$PATH:$ZK_HOME/bin # 配置生效 source /etc/profine
# 启动zk cd /opt/zk/apache-zookeeper-3.7.0-bin/bin ./zkServer.sh start
# 查看zk的状态 zkServer.sh status
部署错误
错误1: could not find or load mian class org.apache.zookeeper.server.quorum
解决1:重新下载bin.tar.gz包
错误2: [myid:localhost:2181] - WARN [main-SendThread(localhost:2181):ClientCnxn$SendThread@1290] - Session 0x0 for sever localhost/127.0.0.1:2181, Closing socket connection. Attempting reconnect except it is a SessionExpiredException.
解决2:防火墙没有关 systemctl stop firewalld