赞
踩
ZooKeeper服务器是用Java创建的,它需要在JVM上运行,所以需要使用JDK1.6及以上版本
我们一般选择自己安装本地的jdk,而不是centos自带的openjdk.jdk安装请参考:
https://blog.csdn.net/weixin_38568503/article/details/120234708.
如果我们原先在centos上安装过jdk,我们检查一下:
找到zookeeper 官网:https://zookeeper.apache.org/
百度:zookeeper官网,进入即可
找到历史版本:
下载到本地后.
在linux的/usr创建一个文件夹zookeeper
cd /usr
mkdir zookeeper
然后我们通过xftp将压缩包上传到zookeeper文件夹
进入到zookeeper压缩包所在的目录:
cd /usr/zookeeper
ls
然后解压:
tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz
然后修改名字:
mv apache-zookeeper-3.5.8-bin zookeeper-3.5.8
ls
创建快照日志存放目录:mkdir -p dataDir
创建事务日志存放目录:mkdir dataLogDir
[root@fancentos7 zookeeper-3.5.8]# ls
bin conf docs lib LICENSE.txt NOTICE.txt README.md README_packaging.txt
[root@fancentos7 zookeeper-3.5.8]# mkdir -p dataDir
[root@fancentos7 zookeeper-3.5.8]# mkdir dataLogDir
[root@fancentos7 zookeeper-3.5.8]# ls
bin dataDir docs LICENSE.txt README.md
conf dateLogDir lib NOTICE.txt README_packaging.txt
【注意】:如果不配置dataLogDir,那么事务日志也会写在dataDir目录中。这样会严重影响zk的性能。因为在zk吞吐量很高的时候,产生的事务日志和快照日志太多。
注意:在Zookeeper的安装目录下的conf文件下,默认为:
zoo_sample.cfg文件,没有 zoo.cfg 。
进入conf文件夹:
使用:cp zoo_sample.cfg zoo.cfg 命令,复制一份为zoo.cfg文件,这是因为Zookeeper再启动的时候默认使用的是zoo.cfg这个配置文件。
然后开始修改配置文件
cd conf
vi zoo.cfg
修改和添加以下内容:
# 存放数据文件,找到并修改,指向了外部创建的那两个文件的路径
dataDir=/usr/zookeeper/zookeeper-3.5.8/dataDir
# 存放日志文件
dataLogDir=/usr/zookeeper/zookeeper-3.5.8/dataLogDir
在 /usr/zookeeper/zookeeper-3.5.8 目录下使用命令
bin/zkServer.sh start
启动成功:
其他常见命令:
1.重启ZooKeeper,在 /usr/zookeeper/zookeeper-3.5.8 目录下使用命令:bin/zkServer.sh restart
2.停止ZooKeeper,在 /usr/zookeeper/zookeeper-3.5.8 目录下使用命令:bin/zkServer.sh stop
3。启动ZooKeeper CLI (ZooKeeper客户端),在 /usr/zookeeper/zookeeper-3.5.8 目录下使用命令:
bin/zkCli.sh
说明:伪集群模式,即一台机器上启动三个zookeeper实例组成集群,真正的集群模式无非就是实例IP地址不同,搭建方法没有区别
我们这里使用的是vm模拟了三台独立的机器,三个不同的ip;
伪集群部署:一台集群启动多个 Zookeeper 实例运行。
参考:https://www.cnblogs.com/ysocean/p/9860529.html#_label2
https://www.cnblogs.com/guohongwei/p/10840514.html
首先我们在第一台虚拟机中进行配置:我们总共配置三台:
说明:前5步和单机模式一样。请按照以上前五步进行操作:
增加以下配置:三台机器都是增加以下同样的内容
server.0=192.168.211.211:2888:3888
server.1=192.168.211.202:2888:3888
server.2=192.168.211.203:2888:3888
完整配置如下:
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. # 存放数据文件,找到并修改 dataDir=/usr/zookeeper/zookeeper-3.5.8/dataDir # 存放日志文件,日志分开放置,优化速度 dataLogDir=/usr/zookeeper/zookeeper-3.5.8/dataLogDir # the port at which the clients will connect clientPort=2181 server.0=192.168.211.211:2888:3888 server.1=192.168.211.202:2888:3888 server.2=192.168.211.203:2888:3888
上面红色框住的内容即是我们修改的内容:
①、tickTime:基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小 的session过期时间为2倍tickTime
②、dataDir:存储内存中数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志。注意:应该谨慎的选择日志存放的位置,使用专用的日志存储设备能够大大提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会很大程度上影像系统性能。
③、clientPort:监听客户端连接的端口。
④、initLimit:允许follower连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。
⑤、syncLimit:表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
⑥、server.A=B:C:D
A:其中 A 是一个数字,表示这个是服务器的编号;
B:是这个服务器的 ip 地址;
C:Zookeeper服务器之间的通信端口;
D:Leader选举的端口。
我们需要修改的第一个是 dataDir ,在指定的位置处创建好目录。
第二个需要新增的是 server.A=B:C:D 配置,其中 A 对应下面我们即将介绍的myid 文件。B是集群的各个IP地址,C:D 是端口配置。
在 上一步 dataDir 指定的目录下(即/usr/zookeeper/zookeeper-3.5.8/dataDir下),创建 myid 文件
[root@fancentos7 dataDir]# vim myid
然后在该文件添加上一步 server 配置的对应 A 数字。
比如当前我们的机器的ip是这个中的server.0=192.168.211.211:2888:3888的
192.168.211.211,则其对应的一个服务器标志是0.
然后在该文件中写上 0 即可。保存即可。
同理:后面的机器依次在相应目录创建myid文件,写上相应配置数字即可。
为了能够在任意目录启动zookeeper集群,我们需要配置环境变量。
ps:你也可以不配,这不是搭建集群的必要操作,只不过如果你不配置环境变量,那么每次启动zookeeper需要到安装文件的 bin 目录下去启动。
首先进入到 /etc/profile 目录,添加相应的配置信息:
vim /etc/profile
#set zookeeper environment
export ZK_HOME=/usr/zookeeper/zookeeper-3.5.8
export PATH=$PATH:$ZK_HOME/bin
然后通过如下命令使得环境变量生效:
source /etc/profile
启动命令:
zkServer.sh start
停止命令:
zkServer.sh stop
重启命令:
zkServer.sh restart
查看集群节点状态:
zkServer.sh status
然后三台机器都是同样的八步操作.
Centos7默认安装了firewalld,如果没有安装的话,可以使用 yum install firewalld firewalld-config进行安装。
先安装插件:yum install iptables-services
一、下面是red hat/CentOs7关闭防火墙的命令!
1:查看防火状态
systemctl status firewalld
或者
service iptables status
2:暂时关闭防火墙
systemctl stop firewalld
或者
service iptables stop
3:永久关闭防火墙,即设置开机的时候不自动启动
systemctl disable firewalld
或者
chkconfig iptables off
4:重启防火墙
systemctl enable firewalld
或者
service iptables restart
启动防火墙:
systemctl start firewalld
5:永久关闭后重启
//暂时还没有试过
chkconfig iptables on
然后再重新启动zk服务:出现以下内容,则集群搭建成功。
[root@fancentos7 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper/zookeeper-3.5.8/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
通过上面状态查询结果可见,一个是的Leader,其余的两个结点是Follower。
另外,可以通过客户端脚本,连接到ZooKeeper集群上。对于客户端来说,ZooKeeper是一个整体,连接到ZooKeeper集群实际上感觉在独享整个集群的服务,所以,你可以在任何一个结点上建立到服务集群的连接。
zkCli.sh的使用
ZooKeeper服务器简历客户端
./zkCli.sh -timeout 0 -r -server ip:port
./zkCli.sh -timeout 5000 -server 192.9.200.242:2181
-r :即使ZooKeeper服务器集群一半以上的服务器当掉,也给客户端提供读服务
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。