1、ZooKeeper简介
ZooKeeper是一个开源的分布式应用程序协调服务,是Google的Chubby一个开源的实现。ZooKeeper为分布式应用提供一致性服务,提供的功能包括:分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)、分布式锁(Distributed Lock)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以单机模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。
2、集群节点规划
主机名 | IP地址 | 操作系统版本 |
---|---|---|
zk-ck-fk-01 | 172.21.204.76 | CentOS 7.9.2009 |
zk-ck-fk-02 | 172.21.204.77 | CentOS 7.9.2009 |
zk-ck-fk-03 | 172.21.204.78 | CentOS 7.9.2009 |
3、java依赖环境设置
每个节点新建目录和解压文件
mkdir -pv /usr/java tar -zxvf jdk-8u271-linux-x64.tar.gz -C /usr/java |
---|
每个节点设置全局环境变量
vi /etc/profile.d/jdk8.sh export JAVA_HOME=/usr/java/jdk1.8.0_271 export JRE_HOME=/usr/java/jdk1.8.0_271/jre export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib |
---|
每个节点使配置生效
source /etc/profile.d/jdk8.sh |
---|
4、部署三节点zookeeper集群
每个节点下载apache-zookeeper-3.6.2-bin.tar.gz二进制安装包
软件包下载地址: https://mirrors.bfsu.edu.cn/apache/zookeeper |
---|
每个节点创建目录并解压tar包到指定目录
mkdir -pv /usr/local/zookeeper/ tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz -C /usr/local/zookeeper/ mv apache-zookeeper-3.6.2-bin zookeeper-3.6.2 |
---|
每个节点创建zookeeper数据目录和日志目录
mkdir -p /usr/local/zookeeper/zookeeper-3.6.2/{zkdata,zklogs} |
---|
每个节点进入zookeeper的conf目录,拷贝zoo_sample.cfg为zoo.cfg,修改zoo.cfg文件主要配置参数
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/local/zookeeper/zookeeper-3.6.2/zkdata dataLogDir=/usr/local/zookeeper/zookeeper-3.6.2/zklogs clientPort=2181 maxClientCnxns=100 autopurge.snapRetainCount=10 autopurge.purgeInterval=24 server.1= 172.21.204.76:2888:3888 server.2= 172.21.204.77:2888:3888 server.3= 172.21.204.78:2888:3888 |
---|
每个节点创建 ServerID 标识,设置myid:
zookeeper 集群模式下需要配置一个myid 文件,这个文件需要放在 dataDir 目录下。文件里面有一个数据就是 A 的值(该 A 就是 zoo.cfg 文件中 server.A=B:C:D 中的 A)
在 server.1 服务器上创建 myid 文件 echo "1" > /usr/local/zookeeper/zookeeper-3.6.2/zkdata/myid 在 server.2 服务器上创建 myid 文件 echo "2" > /usr/local/zookeeper/zookeeper-3.6.2/zkdata/myid 在 server.3 服务器上创建 myid 文件 echo "3" > /usr/local/zookeeper/zookeeper-3.6.2/zkdata/myid |
---|
进入zookeeper的bin目录,启动zookeeper服务,每个节点都需要启动
./zkServer.sh start |
---|
启动之后查看每个节点的状态
./zkServer status |
---|
其中有一个节点是leader,有两个节点是follower,证明zookeeper集群是部署成功的
测试zookeeper连接
./zkCli.sh -server 172.21.204.76:2182 |
---|
如果出现拒绝连接,查看防火墙是否关闭,重启zookeeper,或排查日志是否有配置错误
相关参数说明:
配置项 | 名称 | 参数说明 |
---|---|---|
tickTime | CS通信心跳间隔 | 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每间隔 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。 |
initLimit | LF初始通信时限 | 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数 |
syncLimit | LF同步通信时限 | 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数 |
dataDir | 数据文件目录 | Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里 |
dataLogDir | 日志文件目录 | Zookeeper保存日志文件的目录 |
clientPort | 客户端连接端口 | 客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求 |
server.N | 服务器名称与地址 | 从N开始依次为:服务编号、服务地址、LF通信端口、选举端口;例如:server.1=172.21.204.76:2888:3888 |