zookeeper是目前主流的分布式协调框架,主要用于实现集群节点间的协调工作,zookeeper在很多优秀的开源框架中广泛应用,比如hadoop/kafka等
结构,一共是三个节点(zk服务器集群规模不小于3个节点,但也不要太多,因为节点之间的同步复制会影响性能,我们可以使用多个集群)
首先更改主机名与IP
[root@localhost /]# vim etc/hostname
[root@localhost /]# vim etc/hosts
解压zookeeper
先用XFTP将zookeeper的包放入/usr/local/software下,再解压
tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local/
重命名
[root@zo1 local]# mv zookeeper-3.4.6 zookeeper
修改环境变量
[root@zo1 local]# vim /etc/profile
修改部分为红色框处
即:
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=.:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
修改完后记得刷新生效
[root@zo1 local]# source /etc/profile
修改配置文件
到/usr/local/zookeeper/conf目录下,将zoo_sample.cfg文件改名为zoo.cfg
mv zoo_sample.cfg zoo.cfg
修改zoo.cfg的内容
(1)dataDir=/usr/local/zookeeper/data
(2)最后面添加
server.0=zo1:2888:3888
server.1=zo2:2888:3888
server.2=zo4:2888:3888
因为上面配置文件中把存放数据的位置改为了usr/local/zookeeper/data中,所以需要在zookeeper下新建data文件夹
[root@zo1 zookeeper]# mkdir data
服务器标识配置
在data文件夹下建立文件myid
[root@localhost data]# vim myid
把myid就是服务的标识,把myid文件里面的值修改未0,1,2与我们的server.0 server.1 server.2相匹配
好啦这样就配置完啦,另外两个节点的配置和上面一模一样,只是主机名与ip改成自己的就行了,我们在三个节点分别启动zookeeper,在哪里
zkServer.sh start
然后我们在各自节点查询节点状态:
zkServer.sh status
可以看到三个节点都启动成功,一主两从
最后我们来看看zoo.cfg文献参数:
tickTime: 基本事件单元,以毫秒为单位。这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔 tickTime时间就会发送一个心跳。
initLimit: 这个配置项是用来配置 Zookeeper 接受客户端初始化连接时最长能忍受多少个心跳时间间隔数,当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。
syncLimit: 这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒
dataDir: 存储内存中数据库快照的位置,顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
clientPort: 这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
server.A = B:C:D :
A表示这个是第几号服务器,
B 是这个服务器的 ip 地址;
C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;
D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader