【zookeeper】zookeeper集群安装

这篇具有很好参考价值的文章主要介绍了【zookeeper】zookeeper集群安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境规划

实际的生产使用中,我们一般推荐搭建奇数多节点的zookeeper集群,如3/5/7。在本次测试中,我使用了centos7 三台服务器搭建,复用了我搭建k8s集群的环境,如下表。

IP hostname
192.168.2.140 k8s-m1
192.168.2.141 k8s-m2
192.168.2.142 k8s-m3

此次部署的zookeeper版本为3.7.1

java安装

java版本要求

由于zookeeper服务需要java,至于版本要求,可以先将zookeeper的包下载下来解压后查看README.md 文件,里面相应说明。如 apache-zookeeper-3.7.1版本。

[root@k8s-m1 apache-zookeeper-3.7.1-bin]# cat /opt/apache-zookeeper-3.7.1-bin/README.md 
.....
## Java 8
If you are going to compile with Java 1.8, you should use a
recent release at u211 or above
#说明java8的话需要u211以及以上版本

下面提供一个java安装的脚本,需要先下载这个包。直接在oracle上下载貌似要注册账号密码,之前用的下面的命令下载包,但是现在应该不行了。反正先找一个比要求版本高的jdk包安装就行。

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz

java安装脚本

注意java需要在所有zookeeper节点上安装,我这就包括k8s-m1、k8s-m2、k8s-m3三个节点。

[root@k8s-m1 ~]# cat install_java.sh 
#!/bin/bash
java -version
if [ $? = 0 ];then
    echo "Java is installed"
else
    echo "installing Java...."
    tar -zxf ./jdk-8u65-linux-x64.tar.gz -C /opt/
    JAVA_HOME="/opt/jdk1.8.0_65"
    echo "export JAVA_HOME=/opt/jdk1.8.0_65" >> /etc/profile
    echo "export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar" >> /etc/profile
    echo "export PATH=$JAVA_HOME/bin:$PATH" >> /etc/profile
    echo "installed successful"
fi
source /etc/profile
exit

##运行脚本
[root@k8s-m1 ~]# sh -x install_java.sh 
[root@k8s-m1 ~]# java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
#找不到命令可以再执行一下source /etc/profile

zookeeper安装

安装包下载

下载地址https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/,目前该网站还可以下载历史版本的安装包。我们此次使用的是3.7.1版本。注意带有bin名称的包才是我们想要的下载可以直接使用的,里面有编译后的二进制的包,而之前的普通的tar.gz的包里面是只是源码的包无法直接使用。

[root@k8s-m1 ~]# wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz

[root@k8s-m1 ~]# tar -zxf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/
[root@k8s-m1 ~]# cd /opt/apache-zookeeper-3.7.1-bin/

[root@k8s-m1 apache-zookeeper-3.7.1-bin]# ls
bin  conf  docs  lib  LICENSE.txt  log  logs  NOTICE.txt  README.md  README_packaging.md

[root@k8s-m1 apache-zookeeper-3.7.1-bin]# ll lib/zookeeper-3.7.1.jar 
-rw-r--r-- 1 kmc kmc 1305907 May  7  2022 lib/zookeeper-3.7.1.jar

配置更改

默认有一个zoo_sample.cfg的配置文件,我们可以留着。直接新创建一个配置文件后再进行修改。修改完成后,可以将整个文件夹拷贝到其他两个节点再更改部分配置。

[root@k8s-m1 apache-zookeeper-3.7.1-bin]# cd conf/
[root@k8s-m1 apache-zookeeper-3.7.1-bin]# vi zoo.cfg 
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeperData
dataLogDir=/zookeeperDataLog
clientPort=2181
server.1=192.168.2.140:2888:3888
server.2=192.168.2.141:2888:3888
server.3=192.168.2.142:2888:3888
4lw.commands.whitelist=*
maxClientCnxns=1000
minSessionTimeout=30000
maxSessionTimeout=60000
autopurge.snapRetainCount=10
autopurge.purgeInterval=1
#globalOutstandingLimit=200
#preAllocSize=131072
#snapCount=300000
#leaderServes=yes

#还需要创建上面配置中使用的两个目录,3个节点都需要创建
[root@k8s-m1 apache-zookeeper-3.7.1-bin]# mkdir -p /zookeeperData
[root@k8s-m1 apache-zookeeper-3.7.1-bin]# mkdir -p /zookeeperDataLog

部分配置说明:

  • tickTime:心跳基本时间单位,毫秒级,ZK基本上所有的时间都是这个时间的整数倍。

  • initLimit:tickTime的个数(倍数),表示在leader选举结束后,followers与leader同步需要的时间,如果followers比较多或者说leader的数据灰常多时,同步时间相应可能会增加,那么这个值也需要相应增加。当然,这个值也是follower和observer在开始同步leader的数据时的最大等待时间(setSoTimeout)

  • syncLimit:tickTime的个数(倍数),这时间容易和上面的时间混淆,它也表示follower和observer与leader交互时的最大等待时间,只不过是在与leader同步完毕之后,进入正常请求转发或ping等消息交互时的超时时间。

  • dataDir:内存数据库快照存放地址,如果没有指定事务日志存放地址(dataLogDir),默认也是存放在这个路径下,建议两个地址分开存放到不同的设备上。

  • clientPort:配置ZK监听客户端连接的端口

  • server.serverid=host:tickpot:electionport

    • server:固定写法
    • serverid:每个服务器的指定ID(必须处于1-255之间,必须每一台机器不能重复)
    • host:主机名
    • tickpot:心跳通信端口
    • electionport:选举端口
  • maxClientCnxns:默认值是10,一个客户端能够连接到同一个服务器上的最大连接数,根据IP来区分。如果设置为0,表示没有任何限制。设置该值一方面是为了防止DoS攻击。

  • minSessionTimeout:最小的session time时间,默认值是2个tick time,客户端设置的session time 如果小于这个值,则会被强制协调为这个最小值。

  • maxSessionTimeout:最大的session time 时间,默认值是20个tick time. ,客户端设置的session time 如果大于这个值,则会被强制协调为这个最大值。

  • globalOutstandingLimit:(Java system property: zookeeper.globalOutstandingLimit)默认值是1000,限定了所有连接到服务器上但是还没有返回响应的请求个数(所有客户端请求的总数,不是连接总数),这个参数是针对单台服务器而言,设定太大可能会导致内存溢出。

  • preAllocSize:(Java system property: zookeeper.preAllocSize)默认值64M,以KB为单位,预先分配额定空间用于后续transactionlog 写入,每当剩余空间小于4K时,就会又分配64M,如此循环。如果SNAP做得比较频繁(snapCount比较小的时候),那么请减少这个值。

  • snapCount:(Java system property: zookeeper.snapCount)默认值100,000,当transaction每达到snapCount/2+rand.nextInt(snapCount/2)时,就做一次SNAPSHOT,默认情况下是50,000~100,000条transactionlog就会做一次,之所以用随机数是为了避免所有服务器可能在同一时间做snapshot.

分发文件

[root@k8s-m1 conf]# scp -r /opt/apache-zookeeper-3.7.1-bin/ 192.168.2.141:/opt/
[root@k8s-m1 conf]# scp -r /opt/apache-zookeeper-3.7.1-bin/ 192.168.2.142:/opt/

serverid 配置

最重要的步骤,一定不能忘了。 需要去的各个 ZooKeeper 服务器节点,在新建的dataDir目录中,这个目录就是在 zoo.cfg 中配置的 dataDir 的目录,新建一个名叫 myid的文件,该文件里面的内容就是服务器的 id,而id就是 server.1=192.168.2.140:2888:3888当中对应的id,如k8s-m1节点上myid的内容为1,:

[root@k8s-m1 zookeeperData]# cat  myid 
1

其他两个节点配置类似依次为2,3。 到此,我们 ZooKeeper相关的配置文件就修改完成了。

zookeeper服务启动与停止

3台服务器都需要操作

[root@k8s-m1 ~]# /opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh start
[root@k8s-m1 ~]# /opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh stop

zookeeper服务检查

#进程检查,3台机器上都有QuorumPeerMain进程
[root@k8s-m1 opt]# jps | grep QuorumPeerMain
10277 QuorumPeerMain
[root@k8s-m1 opt]# ps -ef |grep zookeeper

# 角色查询
[root@k8s-m1 opt]# /opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

通过系统服务管理zookeeper

有时候时间久了不记得zookeeper的目录,或者为了方便对zookeeper服务的管理等。3台服务器都需要进行操作。

[root@k8s-m1 ~]# cat /usr/lib/systemd/system/zookeeper.service 
  [Unit]
  Description=Zookeeper service
  After=network.target
  
  [Service]
  Type=simple
  #Environment=ZOO_LOG_DIR=/opt/apache-zookeeper-3.7.1-bin/log
  PIDFile=/zookeeperData/zookeeper_server.pid
  ExecStart=/opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh start
  ExecStop=/opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh stop
  
  [Install]
  WantedBy=multi-user.target

通过systemctl来管理zookeeper需要修改zkServer.sh 文件。大致位置如下,只需要添加java的home路径

vim /opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh
......
# use POSIX interface, symlink is followed automatically
ZOOBIN="${BASH_SOURCE-$0}"
ZOOBIN="$(dirname "${ZOOBIN}")"
ZOOBINDIR="$(cd "${ZOOBIN}"; pwd)"
JAVA_HOME='/opt/jdk1.8.0_65
......

然后就可以用systemctl来管理zookeeper

[root@k8s-m1 apache-zookeeper-3.7.1-bin]# systemctl enable zookeeper.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/zookeeper.service to /usr/lib/systemd/system/zookeeper.service.
[root@k8s-m1 apache-zookeeper-3.7.1-bin]# systemctl start zookeeper.service 
[root@k8s-m1 apache-zookeeper-3.7.1-bin]# systemctl status zookeeper.service 

更多关于zookeeper的知识分享,请前往博客主页。编写过程中,难免出现差错,敬请指出文章来源地址https://www.toymoban.com/news/detail-687378.html

到了这里,关于【zookeeper】zookeeper集群安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安装Zookeeper和Kafka集群

    本文介绍如何安装Zookeeper和Kafka集群。为了方便,介绍的是在一台服务器上的安装,实际应该安装在多台服务器上,但步骤是一样的。 从官网上下载安装包: 解压: 创建目录 zk1 ,然后添加如下配置: zk1/myid : zk1/zk.config : 对于 zk2 和 zk3 也重复同样的步骤,并修改相应的配置

    2023年04月17日
    浏览(24)
  • zookeeper学习(二) 集群模式安装

    三台centos7服务器 三台服务器都需要安装jdk1.8以上 zookeeper安装包 在单机模式已经描述过,这里略过,有需要可以去看单机模式中的这部分,注意的是三台服务器都需要安装 当前在192.168.2.201上操作 解压zookeeper安装包 在安装目录下新建zkData目录 修改修改conf/zoo.cfg文件 修改zo

    2024年02月16日
    浏览(28)
  • 在Linux上安装Zookeeper集群(zookeeper-3.5.9)

    记录 :455 场景 :在CentOS 7.9操作系统上,使用zookeeper-3.5.9版本,在三台机器上,安装Zookeeper集群。 版本 :zookeeper-3.5.9,CentOS 7.9,Linux kernel-5.4.218。 1.主机规划 目标:使用三台主机部署Zookeeper集群。 主机app161;IP:192.168.19.161;端口:22181,28001,28501。 主机app162;IP:192.168.

    2024年02月10日
    浏览(27)
  • Kafka集群安装部署(自带zookeeper)

    •Kafka 将消息以 topic 为单位进行归纳。 • 将向 Kafka topic 发布消息的程序成为 producers. • 将预订 topics 并消费消息的程序成为 consumer. •Kafka 以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个 broker. producers 通过网络将消息发送到 Kafka 集群,集群向消费者提

    2024年02月10日
    浏览(39)
  • Linux实战——Zookeeper集群安装部署

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 除了为Hadoop和HBase提供协调服务外,Zookeeper也被其它许多软件采用作为

    2023年04月09日
    浏览(27)
  • Zookeeper下载、本地模式安装、集群操作

    目录 1、Zookeeper下载地址 2 、本地模式安装 2.1安装前准备 2.2配置修改 2.3操作 Zookeeper 2.4配置参数解读 3、集群操作 3.1 集群安装 3.2 ZK 集群启动停止脚本 4、客户端命令行操作 4.1、命令行语法  4.2、znode 节点数据信息 4.3点类型(持久/短暂/有序号/无序号)  ​编辑 4.4监听器原

    2024年02月03日
    浏览(21)
  • Zookeeper快速入门(Zookeeper概述、安装、集群安装、选举机制、命令行操作、节点类型、监听器原理)

    1.1 概述 Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。 1、Zookeeper工作机制 Zookeeper从设置模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责储存和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生

    2024年03月28日
    浏览(41)
  • CentOS7环境ZooKeeper集群的安装

    目录 前提条件 步骤 ZooKeeper集群规划 下载解压 配置环境变量 配置服务器编号 配置zoo.cfg 分别启动zk服务 查看zk状态 进入zk客户端命令行测试 zk集群启动停止脚本 拥有3台CentOS7机器,并且都安装好jdk8 ZooKeeper集群规划 node2 node3 node4 zk zk zk 下载解压 下载 apache-zookeeper-3.5.7-bin.ta

    2024年02月04日
    浏览(40)
  • CentOS7安装Zookeeper分布式集群

    前言 ZooKeeper 是一个开源的分布式协调服务框架,主要用于分布式系统中的数据同步、配置管理、集群控制和命名服务等方面的处理。本文在3个系统为CentOS7的Linux节点上配置了Zookeeper分布式集群,安装配置的过程均在普通用户 sxZhang 的账户上完成,安装路径为 ~/bigdata ,3个

    2024年01月17日
    浏览(45)
  • kafka3.X集群安装(不使用zookeeper)

    在本专栏的之前的一篇文章《kafka3种zk的替代方案》已经为大家介绍过在kafka3.0种已经可以将zookeeper去掉。 上图中黑色代表broker(消息代理服务),褐色/蓝色代表Controller(集群控制器服务) 左图(kafka2.0):一个集群所有节点都是broker角色,kafka从三个broker中选举出来一个Cont

    2024年02月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包