ZooKeeper的安装和配置过程_using config: /bigdata/install/zookeeper/bin/../co-程序员宅基地

技术标签: java  zookeeper  linux  

ZooKeeper的安装和配置过程

ZooKeeper服务器是用Java创建的,它需要在JVM上运行,所以需要使用JDK1.6及以上版本。
查看是否安装了Java环境:

java -version

没有安装的先去安装JDK:Linux 安装 JDK

官网下载zooKeeper

官网下载zooKeeper:zookeeper官网
下载速度太慢的话,可以复制下载链接到迅雷下载,我这里下载的是当前的稳定版本apache-zookeeper-3.7.1-bin.tar.gz

一定要下载-bin的包 (apache-zookeeper-xxx-bin.tar.gz)
否则,启动的时候很容易出错

ZooKeeper有两种运行模式,一个是集群模式,一个是单机模式。这里只配置集群模式,单机模式可以看文末的参考文档。

集群模式

假设用三台机器来搭建ZooKeeper集群,IP地址为IP1,IP2,IP3

1、创建zookeeper目录

mkdir -p /usr/local/zookeeper

2、将下载好的压缩包使用Xftp传到zookeeper目录并解压

[root@localhost zookeeper]# tar -zvxf apache-zookeeper-3.7.1-bin.tar.gz

3、在 /usr/local/zookeeper/apache-zookeeper-3.7.1-bin 文件夹下,创建data、logs文件夹

[root@localhost apache-zookeeper-3.7.1-bin]# mkdir data
[root@localhost apache-zookeeper-3.7.1-bin]# mkdir logs

4、 配置zoo.cfg文件
/usr/local/zookeeper/apache-zookeeper-3.7.1-bin/conf目录下复制zoo_sample.cfg创建一个新文件命名为zoo.cfg

[root@localhost conf]# cp zoo_sample.cfg zoo.cfg

并对zoo.cfg按照如下代码进行简单配置:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/apache-zookeeper-3.7.1-bin/data
dataLogDir=/usr/local/zookeeper/apache-zookeeper-3.7.1-bin/logs
clientPort=2181
server.1=IP1:2888:3888
server.2=IP2:2888:3888
server.3=IP3:2888:3888

配置参数解释如下:

a). tickTime:该参数单位是毫秒ms,用于配置ZooKeeper中最小时间单元的长度,很多运行时的时间间隔都是使用tickTime的倍数来表示的。

b). initLimit:该参数要配置一个正整数N,表示tickTime的N倍。用于配置Leader服务器等待Follower启动,并完成数据同步的时间。Follower服务器在启动过程中,会与Leader建立连接并完成对数据的同步,从而确定自己对外提供服务的起始状态。Leader服务器允许Follower在initLimit时间内完成这个工作。

c). syncLimit:该参数要配置一个正整数N,表示tickTime的N倍。用于配置Leader服务器和Follower之间进行心跳检测的最大延时时间。如果Leader服务器在syncLimit时间内无法获取到Follower的心跳检测响应,那么Leader就会认为该Follower已经脱离了和自己的同步。

d). dataDir:用于配置ZooKeeper服务器存储快照文件的目录。默认情况下,如果没有配置参数dataLogDir,那么事务日志也会存储在这个目录中。考虑到事务日志的写性能直接影响ZooKeeper整体的服务能力,因此建议同时通过参数dataLogDir来配置ZooKeeper的事务日志的存储目录。

e). dataLogDir:用于配置ZooKeeper服务器存储事务日志文件的目录。dataDir和dataLogDir都要确保有读写权限。

f). clientPort:用于配置当前服务器对外的服务端口,客户端会通过该端口和ZooKeeper服务器创建连接。

g). server.id=host:port:port:该参数用于配置组成ZooKeeper集群的机器列表,其中id即为ServerID,与每台服务器myid文件中的数字相对应。同时,在该参数中,会配置两个端口:第一个端口用于指定Follower服务器与Leader进行运行时通信和数据同步时所使用的端口,第二个端口则专门用于进行Leader选举过程中的投票通信。在ZooKeeper服务器启动的时候,其会根据myid文件中配置的ServerID来确定自己是哪台服务器,并使用对应配置的端口来时行启动。如果在实际使用过程中,需要在同一台服务器上部署多个ZooKeeper实例来构成伪集群的话,那么这些端口都需要配置成不同。

5、 创建myid文件

在dataDir所配置的目录下,创建一个名为myid的文件,在该文件的第一行写上一个数字,即ServerID,和zoo.cfg中当前机器的编号对应上。例如,server.1的myid文件内容就是“1”。要确保每个服务器的myid文件中的数字不同,并且和自己所在机器的zoo.cfg中的server.id=host:port:port的id值一致。id的范围是1~255。

6、 重复 1 - 5 步,为所有机器配置zoo.cfg和myid文件。

7、 所有机器上启动ZooKeeper。
/usr/local/zookeeper/apache-zookeeper-3.7.1-bin/bin目录下有启动脚本

[root@localhost bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

有时虽然执行完启动命令后,显示STARTED,但ZooKeeper并没有真正运行,可以对应状态进行检测。在执行启动命令的目录下会生成Logs目录,记录启动的日志,若未成功启动,可在Logs目录查找原因。

8、验证服务器
使用zkServer.sh status命令,查看ZooKeeper服务器的状态,如下图所示,说明该服务器是个follower。

在这里插入图片描述

验证服务器时可能出现的问题如下:

a). 如果使用zkServer.sh status命令,出现It is probably not running. 有可能是集群中其他服务器没有开启。要整个集群都开启再执行status命令,只开启一台服务器并验证会报错。也有可能是服务器真没启来,看查看一下输出日志。

在这里插入图片描述
b). 查看/usr/local/zookeeper/apache-zookeeper-3.7.1-bin/logs下的日志

tail -n 200 zookeeper-root-server-localhost.localdomain.out

看到报错信息如下,三台主机不能互相访问各自的 3888 端口。
解决办法:
(1)在测试环境下可以关闭防火墙
(2)给三台主机安装内网

在这里插入图片描述

9、关闭服务器
/usr/local/zookeeper/apache-zookeeper-3.7.1-bin/bin目录下有启动脚本

./zkServer.sh stop

参考:
https://www.cnblogs.com/zhaoshizi/p/12105143.html
https://blog.csdn.net/Eternal_Blue/article/details/95598942

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44198560/article/details/130163564

智能推荐

Python 入门的60个基础练习_练习python基础语法-程序员宅基地

文章浏览阅读4.2w次,点赞329次,收藏2.7k次。Python 入门的60个基础练习_练习python基础语法

iOS6和iOS7代码的适配(2)——status bar_ios7 statusbar-程序员宅基地

文章浏览阅读1w次。用Xcode5运行一下应用,第一个看到的就是status bar的变化。在iOS6中,status bar是系统在处理,应用_ios7 statusbar

gdb调试时No symbol "var" defined in current context && No Register_no registers调试显示-程序员宅基地

文章浏览阅读2.1k次。问题描述:,在gdb调试程序输出变量:p var,会提示No symbol "var" in current context.原因:程序编译时开启了优化选项,那么在用GDB调试被优化过的程序时,可能会发生某些变量不能访问,或是取值错误码的情况。这个是很正常的,因为优化程序会删改程序,整理程序的语句顺序,剔除一些无意义的变量等,所以在GDB调试这种程序时,运行时的指令和你所编写指_no registers调试显示

IDGeneratorUtil 主键id生成工具类_idgeneratorutils.generateid()-程序员宅基地

文章浏览阅读3.4k次。import java.util.Random;import org.drools.util.UUIDGenerator;/** * * * 类名称:GenerateIdUtil * 类描述: 主键生成工具类 * @author chenly * 创建时间:Jul 10, 2012 8:10:43 AM * 修改人: * 修改时间:Jul 10, 2012 8..._idgeneratorutils.generateid()

关于汇编 BX 和 BLX 跳转指令_汇编blx-程序员宅基地

文章浏览阅读5k次。BX:跳转到寄存器reg给出的目的地址处,如:BX R2BLX:跳转到寄存区reg给出的目的地址处并将返回地址存储到LR(R14)使用这两个指令时有一点特别需要注意:跳转的目的地址必须是奇数,若不是奇数则在后面加1,如某函数的起始地址是0x80000f00,则要跳转到此函数则应该跳转到0x80000f01处!否则会进入硬件错误中断!..._汇编blx

前端vue,打包整合进后端springboot的resources里面后,运行只要刷新就报404_前端项目放入resource-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏4次。vue打包后,其实就剩index.html和一堆静态资源,页面的加载和替换都是通过刷新index.html种的dom来实现的(应该是这样,可能表述不是很好),所以做个重定向就可以了。(博主是这么解决的,网上还有很多人是各种路径错误,大家可以尝试下自己是哪个原因)import org.springframework.boot.web.server.ConfigurableWebServerFa..._前端项目放入resource

随便推点

添加远程github仓库时报错 Warning: Permanently added the RSA host key for IP address 52.74.223.119_cmd warning: permanently added-程序员宅基地

文章浏览阅读9.7k次。1.问题展示2.解决方案1.任意窗口, 打开git bash2.命令行界面, 输入cd C:3.cat ~/.ssh/id_rsa.pub正常下面应该显示一大串公钥如果没有,显示如下图, 则进行下一步, 创建公钥4.创建公钥, 输入 ssh-keygen5.然后一直下一步, 直到出现6.再次输入cat ~/.ssh/id_rsa.pub下面一大串数字便是公钥,复制这些字符串, 打开github, 点击头像, 打开settings, 打开SSH and GPG Keys_cmd warning: permanently added

SQL*Plus 使用技巧1-程序员宅基地

文章浏览阅读154次。[code="java"]1. SQL/Plus 常用命令 a. help [topic] 查看命令的使用方法,topic表示需要查看的命令名称。 如: help desc; b. host 该命令可以从SQL*Plus环境切换到操作系统环境,以便执行操作系统命名。 c. host [command] 在sql*plus环境中执行操作系统命令,如:host notepad.exe..._sql+plus的使用方法

域控服务器搭建与管理论文,校园网络服务器的配置与管理 毕业论文.doc-程序员宅基地

文章浏览阅读441次。该文档均来自互联网,如果侵犯了您的个人权益,请联系我们将立即删除!**学校毕 业 论 文**学校园网络服务器的配置与管理姓 名: **学 号: **指导老师:系 名:专 业: 计算机网络技术班 级:二0一一年十二月十五日摘 要随着网络技术的不断发展和Internet的日益普及,许多学校都建立了校园网络并投入使用,这无疑对加快信息处理,提高工作效..._服务器配置与应用论文

mysql单实例多库与多实例单库_数据库单实例和多实例-程序员宅基地

文章浏览阅读1k次。一、单实例多库:一个mysql实例,创建多个数据目录。规划:实例路径:/usr/local/mysql数据目录路径:(1)/usr/local/mysql/data(2)/usr/local/mysql/data2步骤:安装mysql。配置my.cnf文件。初始化各个数据库。用mysqld_multi启动。1、安装mysql。平常安装。2、m..._数据库单实例和多实例

MFC解决找不到MFC90.DLL的问题_microsoft v90.debugmfc-程序员宅基地

文章浏览阅读6.3k次。今天装了第三方的MFC软件库Xtreme ToolkitPro v15.0.1,听说搞MFC的人都知道它的强大,我刚学习,所以装了一个,然后想运行一下它自带的例子看看。出现一个“找不到mfc90.dll“的问题,百度一下,记录如下:vs2008已经打过sp1补丁,编译C++程序会提示找不到mfc90.dll文件的错误,但是如果是release版的话就能正常运行csdn看到解决方案,粘贴_microsoft v90.debugmfc

XeLaTeX-中文排版解决方案_latex 中文排版 texlive-程序员宅基地

文章浏览阅读2.1k次。以前使用CJK进行中文的排版,需要自己生成字体库,近日,出现了XeTeX,可以比较好的解决中文字体问题,不需要额外生成LaTeX字体库,直接使用计算机系统里的字体,本文以在Linux下为例说明XeTeX的使用。操作系统: UbuntuTeX:除了texlive包外,还需要安装的包是texlive-xetex。字体:可以使用fc-list查看你自己的字体库,注意字体的完整名称,在XeTe..._latex 中文排版 texlive