mac机器zookeeper安装及单机、集群搭建演示

1.什么是zookeeper?
Zookeeper是一个分布式服务协调框架,一个高性能的分布式数据一致性解决方案,一般用于实现配置管理、名字服务、分布式锁、集群管理功能。
2.zookeeper安装包下载
http://mirror.bit.edu.cn/apache/zookeeper/
官网建议选择stable目录下的安装包
mac机器zookeeper安装及单机、集群搭建演示_第1张图片注意上面有两个安装包,bin是官方提供已经编译的版本,非bin的为官网源码,需要下载后自己进行编译。如果只是应用的话,建议下载bin编译后二进制安装包。
3.准备工作
检查是否安装JDK环境,官方要求需要jdk1.7或1.7版本以上

mac机器zookeeper安装及单机、集群搭建演示_第2张图片命令行分别执行java、java -version命令,看是否有输出,如果有输出证明安装成功

4.安装
解压缩apache-zookeeper-3.5.7-bin.tar.gz安装包,移动到对应的文件目录
在这里插入图片描述
Pache-zookeeper-3.5.7-bin文件名带有版本号且长度很长,创建目录软连接zookeeper,方便后续版本变更不用修改对应环境变量,易于操作:
在这里插入图片描述
Linux ln创建软连接命令: ln -s 源目录 目标文件
软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置
在这里插入图片描述
创建环境变量:
Vim ~/.bash_profile
添加:export PATH=$PATH:zookeeper安装目录/bin
Source ~/.bash_proflie 命令使环境变量生效
设置完环境变量,在命令行执行zk 加tab按键,会提示对应的命令
在这里插入图片描述
5.单机执行
(1)修改配置文件,配置文件目录/conf,复制conf_sample.cfg为conf.cfg
执行命令mv conf-sample.cfg conf.cfg
在这里插入图片描述
修改dataDir为zookeeper安装目录中
mac机器zookeeper安装及单机、集群搭建演示_第3张图片
tickTime:心跳时间,用于配置服务器最小时间的单位,默认值3000ms,心跳检测时间通常是该单位的倍数。如客户端与服务端之间的会话超时时间在2tickTime~20tickTime之间。
initLimit:用于配置leader服务器等待Follewer服务器启动,并完成数据同步的时间,默认为10,表示10tickTime
syncLimit:用于配置leader服务器和Follewer服务器之间进行心跳检测的最大延时时间,默认为5,表示5
tickTime
dataDir:用于配置zookeeper服务器存储快照文件(zookeeper 节点数据)的目录,无默认值
clientPort:用于配置当前服务器对客户端暴露的端口,一般配置为2181,无默认值
dataLogDir:用于配置服务器存储事务日志文件的目录,有默认值dataDir,但是建议将两个目录分别配置,防止磁盘的并发读写,影响服务器性能。可将其配置在一个单独的磁盘上。
minSessionTimeout & maxSessionout:用于服务端对客户端会话超时时间的限制,也就是客户端自定义的超时时间必须在minSessionTimeout~maxSessionout内,其默认为分别为2 和 20,时间表示为2tickTime~20tickTime
maxClientCnxns:从socket层面限制单个客户端和单台服务器之间的最大并发连接数,即以IP地址粒度来进行连接数的限制,如果为0,表示不作限制,默认为60
clientPortAddress:针对多网卡的机器,该参数允许为每个IP地址指定不同的监听端口
server.id=host:port:port:用于配置组成zookeeper集群的机器列表,其中id为serverId,与myid文件中的值对应。第一个端口用于指定Leader服务器和Follewer服务器进行运行时通信和数据同步所使用的端口,第二个端口用于进行Leader选举过程中的投票通信
autopurge.snapRetainCount:用于配置zookeeper在自动清理的时候需要保留的快照数据文件数量和对应的事务日志文件,默认为3,切自定义值小于3也会取值3
(2)启动zookeeper服务器,客户端连接
zkServer.sh启动服务器,使用命令./zkServer.sh start
在这里插入图片描述
查看服务器状态,使用命令./zkServer.sh status,如下图所示状态为standalone,单机
在这里插入图片描述
使用zookeeper客户端连接,使用命令./zkCli.sh -server ip:port,查看到,其中-server的参数可以不加,ip和port默认为本地ip地址,port为2181
mac机器zookeeper安装及单机、集群搭建演示_第4张图片
当查看Welcome to ZooKeeper信息,显示zookeeper客户端连接成功
mac机器zookeeper安装及单机、集群搭建演示_第5张图片
使用tab按键,查看常见的节点操作命令
在这里插入图片描述
5.常用命令
ZNode是Zookeeper中数据的最小单元,每个ZNode都可以保存数据,同时还可以挂载子节点,因此构成了一个层次化的命名空间,称为树。ZNode可以保存任意格式的数据结构,并且保存数据变更版本号、时间戳。
mac机器zookeeper安装及单机、集群搭建演示_第6张图片
(1) 查看znode节点
在这里插入图片描述
(2)创建znode节点,节点名为mydate,存储数据为node1
在这里插入图片描述
(3)设置节点值,获取节点值,get +znode的path,set+znode的path
mac机器zookeeper安装及单机、集群搭建演示_第7张图片
(4)删除节点值,delete + znode的path
mac机器zookeeper安装及单机、集群搭建演示_第8张图片
注意,不能级联删除,即:/aaa/bbb,不能直接删除aaa,应该先删除bbb后,再删除aaa
mac机器zookeeper安装及单机、集群搭建演示_第9张图片
5.搭建集群
搭建集群建议在多个实体物理机或者虚拟机安装多个机器,或者在同一个机器启动多个Zookeeper服务器实例模拟集群环境,后者适用于日常学习,下面的过程即为模拟在一台机器搭建集群环境。
如下图描述Note中,官方建议建立集群建议集群中机器格式为奇数个,至少有3台机器。
mac机器zookeeper安装及单机、集群搭建演示_第10张图片
5.1 集群配置工作
下面,配置三台机器作为集群,需要修改conf/zoo.cfg配置文件、data/myid对应server机器编号,具体修改如下所示:
(1)将上面单机的zookeeper安装环境复制到cluster-demo/zoo1目录
(2)编辑/zoo1/conf/zoo.cfg文件
mac机器zookeeper安装及单机、集群搭建演示_第11张图片
如上图所示:
dataDir:存储对应Server存储快照路径需要修改,3台zookeeper分别存放在各自的目录下的data中,即zoo1/data、zoo2/data、zoo3/data
clientPort:对应Server的端口号,由于目前我们采用同一台机器模拟集群,因此端口号不能相同,如果采用虚拟机或者物理机,由于IP地址不同,因此端口号可以一致。本次实验对应的zoo1的端口号为2181、zoo2的端口号为2182、zoo3的端口号为2183
(3)编辑/zoo1/data文件下对应server节点序号
首先需要删除/zoo1/data目录中的全部内容,执行命令rm -rf *
mac机器zookeeper安装及单机、集群搭建演示_第12张图片
再创建myid文件,zoo1对应的节点序号为1,因此输入1序号在myid文件中
mac机器zookeeper安装及单机、集群搭建演示_第13张图片
以此分别设置zoo2的myid文件值为2,zoo3的myid文件值为3
5.3 启动集群
(1)首先查看目前是否有zookeeper服务启动,如果有需要kill -9 进程号关闭
ps aux|grep zoo 查看是否有zookeeper服务
kill -9 pid号
(2)分别进入到zoo1/bin、zoo2/bin、zoo3/bin目录,执行./zkServer.sh start启动对应集群节点
在这里插入图片描述
注意:刚开始启动zoo1/bin和zoo2/bin,执行./zkServer.sh status显示未成功,是正常情况,如下图所示,必须等zoo3/bin启动成功后才证明集群搭建完成,才可以查看正常的状态。
在这里插入图片描述
启动完zoo3后,查看对应的状态,查看zoo2为leader,zoo1和zoo3为follower
mac机器zookeeper安装及单机、集群搭建演示_第14张图片
5.4 客户端连接集群
连接一个zoo2客户端,对应端口号为2182,zkCli.sh -server 127.0.0.1:2182
mac机器zookeeper安装及单机、集群搭建演示_第15张图片
创建一个znode并设置值
mac机器zookeeper安装及单机、集群搭建演示_第16张图片
退出,并再用客户端连接zoo1,查看刚才在zoo2中设置的znode及值是否一致
mac机器zookeeper安装及单机、集群搭建演示_第17张图片
mac机器zookeeper安装及单机、集群搭建演示_第18张图片
如图所示,对应/mydata中存储的数据为value1,与zoo2中内容一致,因此集群搭建成功。
通过quit命令,可以退出zookeeper客户端
mac机器zookeeper安装及单机、集群搭建演示_第19张图片
5.5 杀掉一个zoo2进程,看一下集群是否还能正常工作
在这里插入图片描述
连接zoo1,即端口号为2181,可以正常连接,现在集群中还有两台机器
如下图所示,znode path数据也存在
mac机器zookeeper安装及单机、集群搭建演示_第20张图片
新的集群leader变为zoo3,具体如下所示
mac机器zookeeper安装及单机、集群搭建演示_第21张图片

本篇文章主要简要介绍zookeeper安装及单机、集群环境搭建,后续还需要进一步深入学习zookeeper事件订阅通知、zookeeper选举算法。
参考文章:
zookeeper配置文件信息:https://www.jianshu.com/p/64fe549ab9a7
mac下zookeeper安装:https://www.jianshu.com/p/d9275f4c663a
zookeeper官网:http://zookeeper.apache.org/
zookeeper原理介绍:https://cloud.tencent.com/developer/article/1467567

你可能感兴趣的:(JAVA,后端,java,zookeeper)