我的编程空间,编程开发者的网络收藏夹
学习永远不晚

ZooKeeper集群怎样安装和部署

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

ZooKeeper集群怎样安装和部署

这篇文章主要为大家展示了“ZooKeeper集群怎样安装和部署”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ZooKeeper集群怎样安装和部署”这篇文章吧。

0、ZooKeeper还可以用作其他用途,例如:

    数据发布与订阅(配置中心)
    负载均衡
    命名服务(Naming Service)
    分布式通知/协调
    集群管理与Master选举
    分布式锁
    分布式队列
1、介绍与系统要求
ZooKeeper可以运行在多种系统平台上面,表1展示了zk支持的系统平台,以及在该平台上是否支持开发环境或者生产环境。
系统             开发环境          生产环境
Linux           支持              支持
Solaris         支持              支持
FreeBSD         支持              支持
Windows         支持              不支持
MacOS           支持              不支持

Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。

■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境;
■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例;
■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble)

Zookeeper通过复制来实现高可用性,只要集合体中半数以上的机器处于可用状态,它就能够保证服务继续。为什么一定要超过半数呢?这跟Zookeeper的复制策略有关:zookeeper确保对znode 树的每一个修改都会被复制到集合体中超过半数的机器上。
所以ZooKeeper集群模式的部署,3个ZooKeeper服务进程是建议的最小进程数量,而且不同的服务进程建议部署在不同的物理机器上面,以减少机器宕机带来的风险,以实现ZooKeeper集群的高可用。
ZooKeeper是用Java编写的,运行在Java环境上,因此,在部署zk的机器上需要安装Java运行环境。为了正常运行zk,我们需要JRE1.6或者以上的版本。ZooKeeper对于机器的硬件配置没有太大的要求。

2、下载安装
可以从https://zookeeper.apache.org/releases.html下载ZooKeeper,目前最新的稳定版本为 3.4.11 版本,我们今天选择3.4.10版本。
# tar zvxf zookeeper-3.4.10.tar.gz
# mv zookeeper-3.4.10 ../zk
# cd ../zk
[root@galera01 zk]# ls -l
drwxr-xr-x  2 1001 1001    4096 Mar 23  2017 bin
-rw-rw-r--  1 1001 1001   84725 Mar 23  2017 build.xml
drwxr-xr-x  2 1001 1001    4096 Mar 23  2017 conf
drwxr-xr-x 10 1001 1001    4096 Mar 23  2017 contrib
drwxr-xr-x  2 1001 1001    4096 Mar 23  2017 dist-maven
drwxr-xr-x  6 1001 1001    4096 Mar 23  2017 docs
-rw-rw-r--  1 1001 1001    1709 Mar 23  2017 ivysettings.xml
-rw-rw-r--  1 1001 1001    5691 Mar 23  2017 ivy.xml
drwxr-xr-x  4 1001 1001    4096 Mar 23  2017 lib
-rw-rw-r--  1 1001 1001   11938 Mar 23  2017 LICENSE.txt
-rw-rw-r--  1 1001 1001    3132 Mar 23  2017 NOTICE.txt
-rw-rw-r--  1 1001 1001    1770 Mar 23  2017 README_packaging.txt
-rw-rw-r--  1 1001 1001    1585 Mar 23  2017 README.txt
drwxr-xr-x  5 1001 1001    4096 Mar 23  2017 recipes
drwxr-xr-x  8 1001 1001    4096 Mar 23  2017 class="lazy" data-src
-rw-rw-r--  1 1001 1001 1456729 Mar 23  2017 zookeeper-3.4.10.jar
-rw-rw-r--  1 1001 1001     819 Mar 23  2017 zookeeper-3.4.10.jar.asc
-rw-rw-r--  1 1001 1001      33 Mar 23  2017 zookeeper-3.4.10.jar.md5
-rw-rw-r--  1 1001 1001      41 Mar 23  2017 zookeeper-3.4.10.jar.sha1


bin目录:zk的可执行脚本目录,包括zk服务进程,zk客户端,等脚本。
conf目录:配置文件目录。zoo_sample.cfg为样例配置文件,log4j.properties为日志配置文件。
lib目录:zk依赖的包。
contrib目录:一些用于操作zk的工具包。
recipes目录:zk某些用法的代码示例


3、集群模式运行配置
单机模式的zk进程虽然便于开发与测试,但并不适合在生产环境使用。在生产环境下,我们需要使用集群模式来对zk进行部署。在集群模式下,建议至少部署3个zk进程,或者部署奇数个zk进程。
在集群模式下,所有的zk进程可以使用相同的配置文件(是指各个zk进程部署在不同的机器上面),例如如下配置:
# mkdir -p /opt/zkdata
# cd /opt/zk/conf
# cp zoo_sample.cfg zk.cfg
# vi zk.cfg
tickTime=2000
dataDir=/opt/zkdata
clientPort=2181
initLimit=5
syncLimit=2
server.0=192.168.56.111:2888:3888
server.1=192.168.56.112:2888:3888
server.3=192.168.56.113:2888:3888

设置选择配置文件的名字在zkEnv.sh文件里面,默认为zoo.cfg,这里已修改为zk.cfg

tickTime参数:tickTime则是上述两个超时配置的基本单位,例如对于initLimit,其配置值为5,说明其超时时间为 2000ms * 5 = 10秒。
initLimit参数:ZooKeeper集群模式下包含多个zk进程,其中一个进程为leader,余下的进程为follower。
当follower最初与leader建立连接时,它们之间会传输相当多的数据,尤其是follower的数据落后leader很多。
initLimit配置follower与leader之间建立连接后进行同步的最长时间。
syncLimit参数:配置follower和leader之间发送消息,请求和应答的最大时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
maxClientCnxns参数:
这个操作将限制连接到Zookeeper的客户端数量,并限制并发连接的数量,通过IP来区分不同的客户端。此配置选项可以阻止某些类别的Dos攻击。将他设置为零或忽略不进行设置将会取消对并发连接的限制。
例如,此时我们将maxClientCnxns的值设为1,如下所示:
# set maxClientCnxns
   maxClientCnxns=1
启动Zookeeper之后,首先用一个客户端连接到Zookeeper服务器上。之后如果有第二个客户端尝试对Zookeeper进行连接,或者有某些隐式的对客户端的连接操作,将会触发Zookeeper的上述配置。
minSessionTimeout和maxSessionTimeout参数:
即最小的会话超时和最大的会话超时时间。在默认情况下,minSession=2*tickTime;maxSession=20*tickTime。
server.id=host:port1:port2
其中id为一个数字,表示zk进程的id,这个id也是dataDir目录下myid文件的内容。
host是该zk进程所在的IP地址,port1表示follower和leader交换消息所使用的端口,port2表示选举leader所使用的端口。
dataDir参数:该参数没有默认值,必须配置,其配置的含义跟单机模式下的含义类似,不同的是集群模式下还有一个myid文件。
myid文件的内容只有一行,且内容只能为1~255之间的数字,这个数字亦即上面介绍server.id中的id,表示zk进程的id。

# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zk.cfg
Starting zookeeper ... STARTED

./zkCli.sh -server 192.168.56.111:2181,192.168.56.112:2181,192.168.56.113:2181


# ./zkCli.sh -server 192.168.56.111:2181,192.168.56.112:2181,192.168.56.113:2181
Connecting to 192.168.56.111:2181,192.168.56.112:2181,192.168.56.113:2181
2018-03-12 14:20:23,468 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
2018-03-12 14:20:23,473 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=galera02
2018-03-12 14:20:23,473 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.7.0_45
2018-03-12 14:20:23,474 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2018-03-12 14:20:23,475 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.45.x86_64/jre
2018-03-12 14:20:23,475 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/opt/zk/bin/../build/classes:/opt/zk/bin/../build/lib/*.jar:/opt/zk/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/zk/bin/../lib/slf4j-api-1.6.1.jar:/opt/zk/bin/../lib/netty-3.10.5.Final.jar:/opt/zk/bin/../lib/log4j-1.2.16.jar:/opt/zk/bin/../lib/jline-0.9.94.jar:/opt/zk/bin/../zookeeper-3.4.10.jar:/opt/zk/bin/../class="lazy" data-src/java/lib/*.jar:/opt/zk/bin/../conf:
2018-03-12 14:20:23,475 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2018-03-12 14:20:23,475 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2018-03-12 14:20:23,475 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>
2018-03-12 14:20:23,475 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux
2018-03-12 14:20:23,475 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd64
2018-03-12 14:20:23,475 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=2.6.32-431.el6.x86_64
2018-03-12 14:20:23,475 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=root
2018-03-12 14:20:23,476 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/root
2018-03-12 14:20:23,476 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/opt/zk/bin
2018-03-12 14:20:23,477 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=192.168.56.111:2181,192.168.56.112:2181,192.168.56.113:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@6c8d5190
2018-03-12 14:20:23,494 [myid:] - INFO  [main-SendThread(192.168.56.113:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server 192.168.56.113/192.168.56.113:2181. Will not attempt to authenticate using SASL (unknown error)
Welcome to ZooKeeper!
2018-03-12 14:20:23,581 [myid:] - INFO  [main-SendThread(192.168.56.113:2181):ClientCnxn$SendThread@876] - Socket connection established to 192.168.56.113/192.168.56.113:2181, initiating session
JLine support is enabled
2018-03-12 14:20:23,868 [myid:] - INFO  [main-SendThread(192.168.56.113:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server 192.168.56.113/192.168.56.113:2181, sessionid = 0x26218afe3bd0000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: 192.168.56.111:2181,192.168.56.112:2181,192.168.56.113:2181(CONNECTED) 0]

[zk: 192.168.56.111:2181,192.168.56.112:2181,192.168.56.113:2181(CONNECTED) 0] quit
Quitting...
2018-03-12 14:22:41,435 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@519] - EventThread shut down for session: 0x26218afe3bd0000
2018-03-12 14:22:41,436 [myid:] - INFO  [main:ZooKeeper@684] - Session: 0x26218afe3bd0000 closed


4、查看目前zk集群状态
[root@galera01 bin]#  ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zk.cfg
Mode: follower

[root@galera02 bin]#  ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zk.cfg
Mode: leader

[root@galera03 bin]#  ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zk.cfg
Mode: follower
----------------------------------------------------------End------------------------------------------------

以上是“ZooKeeper集群怎样安装和部署”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

ZooKeeper集群怎样安装和部署

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

ZooKeeper集群怎样安装和部署

这篇文章主要为大家展示了“ZooKeeper集群怎样安装和部署”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ZooKeeper集群怎样安装和部署”这篇文章吧。0、ZooKeeper还可以用作其他
2023-06-04

docker怎么部署zookeeper集群

这篇“docker怎么部署zookeeper集群”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“docker怎么部署zooke
2023-07-06

mesos 集群安装部署mesos-ma

###############################################################                                                        M
2023-01-31

消息中间件Kafka+Zookeeper集群的概念、部署和实践是怎样的

这篇文章给大家介绍消息中间件Kafka+Zookeeper集群的概念、部署和实践是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中所有动
2023-06-02

Hadoop集群怎样安装

这篇文章主要为大家展示了“Hadoop集群怎样安装”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Hadoop集群怎样安装”这篇文章吧。一、安装环境 因为安装Hadoop集群需要的主机数量必须为奇
2023-06-03

DBA---------------------------数据库--------------------Mongodb集群3.6.部署(安装)

DBA---------------------------数据库--------------------Mongodb集群3.6.部署(安装)   第一章:逻辑结构 Mongodb 逻辑结构 MySQL逻辑结构 库data
DBA---------------------------数据库--------------------Mongodb集群3.6.部署(安装)
2015-02-25

Flume怎样安装部署

这篇文章主要介绍了Flume怎样安装部署,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。环境:1.flume-ng-1.6.0-cdh6.7.0.tar.gz2.jdk 1.8
2023-06-03

怎样使用kubeadmin进行部署K8s集群

这篇文章给大家介绍怎样使用kubeadmin进行部署K8s集群,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先,我们来看一下整体的架构。 K8s的部署方式:yum方式部署二进制包:手动使用tar包来部署minikub
2023-06-04

Centos7安装部署Kubernetes(k8s)集群实现过程

这篇文章主要为大家介绍了Centos7安装部署Kubernetes(k8s)集群实现过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

ol7.7安装部署4节点spark3.0.0分布式集群

为学习spark,虚拟机中开4台虚拟机安装spark3.0.0底层hadoop集群已经安装好,见ol7.7安装部署4节点hadoop 3.2.1分布式集群学习环境首先,去http://spark.apache.org/downloads.html下载对应安装包
ol7.7安装部署4节点spark3.0.0分布式集群
2015-12-31

集群服务器怎么部署和管理

集群服务器的部署和管理需要以下步骤:1. 选择合适的集群管理软件:如Hadoop、Kubernetes、OpenStack等。2. 确定集群规模和硬件配置:确定需要多少台服务器、每台服务器的配置、网络拓扑等。3. 安装操作系统和必要的软件:
2023-06-11

如何安装minikube,kubectl以及实现Kubernetes集群部署

这篇文章给大家介绍如何安装minikube,kubectl以及实现Kubernetes集群部署,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。(1) 安装kubectlcurl -LO https://storage.g
2023-06-19

ZooKeeper在单机和集群环境下怎么安装搭建及使用

这篇文章主要讲解了“ZooKeeper在单机和集群环境下怎么安装搭建及使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ZooKeeper在单机和集群环境下怎么安装搭建及使用”吧!1、下载首
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录