centos7搭建ZooKeeper

centos7搭建ZooKeeper,第1张

centos7搭建ZooKeeper

本文主要对ZooKeeper做一些简单介绍,以及介绍其在centos7的搭建过程。

ZooKeeper 是一个开源的分布式协调服务,是Apache Hadoop的一个子项目。它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。
ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

对等群架防止单点故障:ZooKeeper群架通常有2n+1台Server组成,每台Server都知道彼此的存在。对于2n+1台Server,只要有n+1(即一般以上)Server可用,整个集群就保持可用。当然,单个ZooKeeper也可以搭建,只是没有了高可用的特性。

ZooKeeper主要提供了文件系统和通知机制。例如,本人公司的后端框架,就是使用ZooKeeper做目录服务器(也叫做服务注册中心),管理服务上下线。
zoopeeker的详细介绍可到官网查看:Apache ZooKeeper

本人在一台VM中搭建3个ZooKeeper做示例,在不同机器情况类似,只是ip和端口的适配。

搭建流程:

1.确保系统已搭建了java环境。到官网下载linux版(二进制版)上传到centos,解压并设置PATH搜索路径。

JAVA SE 8下载链接:Java Archive Downloads - Java SE 8

详细搭建教程:CentOS7安装Java8_flyhaotian的博客-CSDN博客_centos 安装java

2.下载ZooKeeper并解压,以及修改目录名

本人使用的版本是2018.4.25发布的zookeeper-3.4.12(目前最新的稳定版是2021.4.13发布的zookeeper-3.6.3,搭建方式一样),可以到Index of /dist/zookeeper(或Apache ZooKeeper)下载,然后将安装包传到服务器上;也可以在centos下通过wget命令方式下载zookeeper:

Wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz
tar -zxvf zookeeper-3.4.12.tar.gz  --也可以通过 [-C 目录] 解压到指定目录
mv zookeeper-3.4.12 zookeeper_1  --改名

3.复制配置文件并且分别创建数据和日志目录

cp zookeeper_1/conf/zoo_sample.cfg zoo.cfg

mkdir zookeeper_1/datatmp
mkdir zookeeper_1/logs  --日志目录可以放到独立的磁盘中,以提高性能

4.配置ZooKeeper

输入命令:vim zookeeper_1/conf/zoo.cfg,配置参考如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/zookeeper/zookeeper_1/datatmp
dataLogDir=/home/zookeeper/zookeeper_1/logs
clientPort=2181
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

如果在不同的机器,需要改下Server间通信的ip,端口号可以改成一样以方便查看。

5.创建myid

切换目录:zookeeper_1/datatmp,创建myid并输入数字1:

echo 1 > myid

myid文件中只有一个数字,即一个Server ID。例如,server.1 的myid文件内容就是“1”。注意,请确保每个server的myid文件中id数字不同,并且和server.id=host:port:port中的id一致。另外,id的范围是1~255。

6.搭建另外两个ZooKeeper

因为在同一台机器,直接复制两份:

cp -a zookeeper_1 zookeeper_2
cp -a zookeeper_1 zookeeper_3

分别修改zoo.cfg中的clientPort、dataDir和dataLogDir字段,并且分别修改myid。如:

//zookeeper_2 的配置修改
dataDir=/home/zookeeper/zookeeper_2/datatmp
dataLogDir=/home/zookeeper/zookeeper_2/logs
clientPort=2182
//修改zookeeper_2的myid
cd zookeeper_2/datatmp
echo 2 > myid

--------------------------------------------------------------

//zookeeper_3 的配置修改
dataDir=/home/zookeeper/zookeeper_3/datatmp
dataLogDir=/home/zookeeper/zookeeper_3/logs
clientPort=2183
//修改zookeeper_3的myid
cd zookeeper_3/datatmp
echo 3 > myid

7.关闭防火墙

firewall-cmd --zone=public --add-port=2181-2183/tcp --permanent
firewall-cmd --zone=public --add-port=2888-2890/tcp --permanent
firewall-cmd --zone=public --add-port=3888-3890/tcp --permanent
firewall-cmd --reload  --让上面设置生效

8.ZooKeeper启动等 *** 作

分别切换到各自bin目录,如cd zookeeper_1/bin。

开启ZooKeeper:输入 zkServer.sh start

关闭ZooKeeper:输入 zkServer.sh stop

ZooKeeper状态:输入 zkCli.sh -server 127.0.0.1:2181

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5136077.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存