zookeeper 的安装配置及简单使用

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

===> Zookeeper 是什么?

                => ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。

                => ZooKeeper包含一个简单的原语集,提供Java和C的接口。

                => ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本


===> Zookeeper应用场景(功能):

                => 它是一个为分布式应用提供一致性服务的软件,提供的功能包括:

                        配置维护、域名服务、分布式同步、组服务等。

                => ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。


===> Zookeeper体系结构


image.png


===> Zookeeper 工作原理:

                => Zookeeper 的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。

                => Zab协议有两种模式: 恢复模式(选主)广播模式(同步)

                    当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和 leader的状态同步以后,恢复模式就结束了。

                ()状态同步保证了leader和Server具有相同的系统状态 

                => 为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。

                    实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。

                    低32位用于递增计数。


                ()对于客户端来说,ZooKeeper是一个整体(ensemble),连接到ZooKeeper集群实际上感觉在独享整个集群的服务,so,你可以在任何一个结点上建立到服务集群的连接


 ===> Zookeeper 安装

        =>搭建ZooKeeper的集群环境

        1、三台:bigdata12  bigdata13  bigdata14

           时间同步

           

        2、在bigdata12上进行安装

           (*) 解压 tar -zxvf zookeeper-3.4.10.tar.gz -C ~/training/

           (*) 设置环境变量:每台机器上

        ZOOKEEPER_HOME=/root/training/zookeeper-3.4.10

        export ZOOKEEPER_HOME

        

        PATH=$ZOOKEEPER_HOME/bin:$PATH

        export PATH

           (*)核心的配置文件: conf/zoo.cfg

        mkdir /root/training/zookeeper-3.4.10/tmp

        编辑 zoo.cfg

        dataDir=/root/training/zookeeper-3.4.10/tmp

        

        server.1=bigdata12:2888:3888

        server.2=bigdata13:2888:3888

        server.3=bigdata14:2888:3888

        

        在/root/training/zookeeper-3.4.10/tmp目录创建文件: myid

        输入  1

        3、把bigdata12的ZK复制到其他的节点

           scp -r zookeeper-3.4.10/ root@bigdata13:/root/training

           scp -r zookeeper-3.4.10/ root@bigdata14:/root/training

           

        4、修改bigdata13和bigdata14上的myid文件

        5、在每台机器上,启动ZK:  zkServer.sh  start


===> 配置文件


            => zookeeper-3.3.3/conf文件夹下面(可以把默认的zoosample.cfg复制一份到zoo.cfg),配置文件zoo.cfg需要在每台服务器中都要编写,以下是一个配置文件的样本:


                # Filename zoo.cfg

                

                tickTime=2000

                

                dataDir=/home/zookeeper/data

                

                clientPort=2181

                

                initLimit=5

                

                syncLimit=2

                

                server.1=202.115.36.251:2888:3888

                

                server.2=202.115.36.241:2888:3888

                

                server.3=202.115.36.242:2888:3888


                initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的                 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,

            那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒。


                syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒 


                server.A=B:C:D

                        A 是一个数字,表示这个是第几号服务器;

                        B 是这个服务器的 ip 地址;

                        C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;

                        D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

                        如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。


             => 创建myid文件

                除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面就只有一个数据就是 A 的值,Zookeeper 启动时会读取这个文

                件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个 server。这个myid的值要和配置文件中的server.x=ip:port:port中的x一致。

                echo 1 > myid


===> Zookeeper 操作

         => 查看zookeeper  的状态: zkServer.sh  status

        => 通过 zookeeper 客户端连接:  

                zkCli.sh  -server  192.168.10.221:2181

        => 查看znode节点:

                ls  /

        => 创建znode节点(数据):

                create  /test  "hello"

        => 获取znode节点数据:

                get  /test

        => 修改znode节点数据:

                set  /test  "word"

        => 删除znode 节点:

                delete  /test


===> 清除zk状态

        当在zk上已经做了很多事情,配置已经比较杂乱,现在想重新初始化一下,也就是把所有状态删除,步骤是:

        => 关闭所有zk节点,用zkServer.sh status查看是否关闭

        => 删除zoo.cfg定义的数据文件夹下的所有文件,除了myid文件外

        => 启动zk节点

        现在配置就重置了


===> 常见问题

        在用zkCli.sh启动客户端时,Will not attempt to authenticate using SASL (无法定位登录配置)

        这是由于没有启用用户验证导致的,不影响使用,但影响安全性。SASL 即:Simple Authentication and Security Layer



本文转自 菜鸟的征程 51CTO博客,原文链接:http://blog.51cto.com/songqinglong/2062909

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
4月前
|
存储 Java 网络安全
ZooKeeper【部署 02】apache-zookeeper-3.6.0 集群版(准备+安装配置+启动验证)
ZooKeeper【部署 02】apache-zookeeper-3.6.0 集群版(准备+安装配置+启动验证)
44 0
|
4月前
|
消息中间件 Java Shell
Linux【脚本 03】shell脚本离线安装配置集结JDK+InfluxDB+Zookeeper+Kafka(安装文件及脚本源码网盘分享)
Linux【脚本 03】shell脚本离线安装配置集结JDK+InfluxDB+Zookeeper+Kafka(安装文件及脚本源码网盘分享)
28 0
|
4月前
|
消息中间件 Kafka Shell
Linux【脚本 02】shell脚本离线安装配置Zookeeper及Kafka并添加service服务和开机启动(脚本分析)
Linux【脚本 02】shell脚本离线安装配置Zookeeper及Kafka并添加service服务和开机启动(脚本分析)
44 0
|
4月前
|
存储 Ubuntu Java
如何在 Unbuntu 下安装配置 Apache Zookeeper
如何在 Unbuntu 下安装配置 Apache Zookeeper
58 0
|
网络安全
Zookeeper集群集群安装配置
Zookeeper集群集群安装配置
166 0
|
文件存储
Zookeeper 集群安装配置,超详细,速度收藏!
今天,栈长分享下 Zookeeper 的集群安装及配置。 下载 下载地址:http://zookeeper.apache.org/ 下载过程就不说了,我们下载了最新的zookeeper-3.4.11。 安装 1、上传安装包 把下载的最新的包(如:zookeeper-3.4.11.tar.gz)上传到服务器,上传的方式也不多说了。
389 0
|
Java 中间件 大数据
ZooKeeper分布式实战(一) - 基本安装配置
ZooKeeper分布式实战(一) - 基本安装配置
119 0
ZooKeeper分布式实战(一) - 基本安装配置
|
Java 测试技术
ZooKeeper单机版安装配置
ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。 ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。
2074 0
|
Web App开发
ZooKeeper集群安装配置
ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。 ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。
10830 0
|
监控 Dubbo Java
zookeeper 安装配置监控等
尽管zookeeper在编程上有很多的阱陷,API也非常的难用,但zookeeper服务本身可以说是很牢靠的了,所以在网上貌似关于运维的文章比较少。 但省心并不代表不会出麻烦,下面总结下zookeeper运维相关的东东。
1033 0

热门文章

最新文章