写在前面,
由于学习分布式,需要搭建zookeeper,单机版就不介绍了,介绍一下集群的搭建,但是本人很穷,只有一台服务器,就搭建一下伪集群,出了一些问题,特此记录与分享一下
1.zookeeper
zookeeper是一个开源的分布式协调服务,由雅虎创建的,基于Google chubby
是什么
分布式数据一致性的解决方案
能做什么
数据的发布订阅,负载均衡,命名服务,master选举,分布式队列,分布式锁
特性
- 顺序一致性
严格按照请求顺序来应用到zookeeper中 - 原子性
所有的事务请求的处理结果在真个集群中的所有机器上的应用情况是一致的,也就是说,要整个集群中的所有机器都成功应用了某一个事务,要么全部不应用 - 可靠性
一旦服务器成功的应用了某一个事务,并且响应了客户端,那么这个数据在整个集群中一定是同步并且保留下来的 - 实时性
一旦一个事务被成功应用,客户端就能够立即从服务端读取到事务变更后的最新数据状态,(在一段时间内,近实时)
2.zookeeper集群
有三个角色,leader/follower/observer
leader接受所有follower的提案请求并统一协调发起提案的投票,负责与follower交换数据
事务请求唯一的调度者和处理者,保证集群事务处理的顺序性,集群内部各个服务器的调度者
follower:直接为客户端服务并参与提案的投票,同时与leader进行数据交换
observer:直接为客户端服务,但不参与提案的投票,也与leader数据交换,是一种特殊的zookeeper节点,可以帮助解决zookeeper的扩展性(如果大量客户端访问集群,需要增加集群机器数量,从而导致zookeeper集群的性能,导致zookeeper的写性能下降,zookeeper的数据变更需要半数以上服务器投票通过,造成网络消耗增加投票成本)
观察zookeeper集群中最新的状态的变化并将这个状态同步到observer中,
增加observer不影响集群中事务处理能力,同时还能提升集群的非事务处理能力
1.zookeeper的集群组成
zookeeper一般都是有2n+1台
开始搭建
1.下载压缩包,上传到服务器
这个可以百度,实在不会,就联系我
2.解压
我自己新建了一个文件夹,zookeeper-cluster,用于存放zookeeper集群
将压缩包解压三分,放在这里面
这面三个脚本一会再说
3.修改配置
首先我们进入文件夹中,进入conf目录,可以看到
zoo.cfg是没有,我们需要执行
cp zoo_sample.cfg zoo.cfg
需要拷贝一份,
然后修改zoo.cfg中的配置
4.配置文件
tickTIme= 2000 zookeeper中最小的时间单位长度
initLimit = 10 follower节点与leader节点进行数据同步的时间
syncLimit=5 follower节点与leader节点之间心跳通信的最大延迟时间
dataDir 表示zookeeper服务器存储快照文件的目录
dataLogDir 表示配置zookeeper事务日志的存储路径,默认
clientPort 客户端连接的端口
我们在三个文件夹做同样的事
,我们需要执行三件事
1.修改clientport,因为我们是伪集群,连接的是同一台服务器,所以需要改变客户端连接端口,
我的三台分别是,2182,2181,2183
2.修改dataDir 。这个是存放快照的目录,还有我们要在这个目录下新建一个myid文件,在里面分别写入1,2,3,这个是指定,执行这个目录的zookeeper的id,
3.在配置文件的最后加入
server.1=47.106.64.158:2887:3887
server.2=47.106.64.158:2888:3888
server.3=47.106.64.158:2889:3889
server.4=47.106.64.158:2890:3890
server.id=ip:follow与leader通信的端口:选举leader时候的端口
分别配置不同的端口,以防同一台服务器出现端口占用的问题,
还需要添加一行
quorumListenOnAllIPs=true
先加上,功能后面说
这样,我们就做好了集群,
我们就可以通过命令启动
进入zookeeper的bin目录下
./zkServer.sh start启动
每个都启动之后,即可在bin目录下./zkServer.sh status查看该节点是follower还是leader,
每次启动比较麻烦。
我们可以自己写个简单的脚本,启动多个zookeeper实例,和查看zookeeper的角色,
我们前面文件夹新建的脚本,
将这个文件,赋可执行的权限,chmod 777 文件,就可以执行
查看也是一样,
错误处理
前面还说了加了一行,是因为,没加,会出现
无法连接的错误
我们查看bin目录下的zookeeper.out日志文件
无法通信,与连接,
加上这一行就可以了
需要安装包,或者共同交流可以加群:552113611