Linux安装部署Zookeeper

单机模式( stand-alone):单机单 server;

一、安装的前提环境:

ZooKeeper服务器是用Java创建的,它需要在JVM上运行,所以需要使用JDK1.6及以上版本

我们一般选择自己安装本地的jdk,而不是centos自带的openjdk.jdk安装请参考:

https://blog.csdn.net/weixin_38568503/article/details/120234708.

如果我们原先在centos上安装过jdk,我们检查一下:
在这里插入图片描述

二、官网下载zooKeeper.tar.gz包

找到zookeeper 官网:https://zookeeper.apache.org/

百度:zookeeper官网,进入即可
在这里插入图片描述

在这里插入图片描述
找到历史版本:
在这里插入图片描述
下载到本地后.

三、在 usr 目录下新建 zookeeper目录,然后将 下载的 zookeeper压缩包拷贝到这个新建的 zookeeper目录中

在linux的/usr创建一个文件夹zookeeper

cd /usr
mkdir zookeeper

然后我们通过xftp将压缩包上传到zookeeper文件夹

四、解压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

五、在 /usr/zookeeper/zookeeper-3.5.8 文件夹下,创建dataDir 、dataLogDir文件夹

创建快照日志存放目录: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吞吐量很高的时候,产生的事务日志和快照日志太多。

六、修改配置文件zoo.cfg

注意:在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

七、启动zookeeper服务:

在 /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

集群模式:多机多 server,形成集群

说明:伪集群模式,即一台机器上启动三个zookeeper实例组成集群,真正的集群模式无非就是实例IP地址不同,搭建方法没有区别

我们这里使用的是vm模拟了三台独立的机器,三个不同的ip;
伪集群部署:一台集群启动多个 Zookeeper 实例运行。

参考:https://www.cnblogs.com/ysocean/p/9860529.html#_label2

https://www.cnblogs.com/guohongwei/p/10840514.html

首先我们在第一台虚拟机中进行配置:我们总共配置三台:

说明:前5步和单机模式一样。请按照以上前五步进行操作:

六、修改配置文件zoo.cfg

增加以下配置:三台机器都是增加以下同样的内容

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 是端口配置。

七、创建 myid 文件,用于标识Server ID

在 上一步 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

九、启动zookeeper服务

启动命令:
zkServer.sh start

停止命令:
zkServer.sh stop

重启命令:
zkServer.sh restart

查看集群节点状态:
zkServer.sh status

然后三台机器都是同样的八步操作.

十、 启动zk服务前记得关闭防火墙:

在这里插入图片描述
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服务器集群一半以上的服务器当掉,也给客户端提供读服务
  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值