分布式服务管理框架-Zookeeper安装与配置(单机、集群)
来源:互联网 发布:洲际导弹 知乎 编辑:程序博客网 时间:2024/06/09 22:57
Zookeeper 分布式服务框架是 Apache Hadoop 下的一个子项目,它主要用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
安装和配置
Zookeeper的安装非常简单,本文在Linux CentOS7环境下,以Zookeeper 3.4.9 Release版本为例(最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/ 来获取),从单机和集群两种模式下分别介绍Zookeeper的安装和配置。
单机模式
单机模式安装非常简单,只需将Zookeeper的压缩包解压到某个目录,如:/opt/zookeeper-3.4.9 下,将conf/zoo_sample.cfg文件复制一份,并重命名为zoo.cfg,因为Zookeeper在启动时会找这个文件作为默认的配置文件,然后执行bin目录下的zkServer.sh start
脚本即可启动Zookeeper单机服务。下面是安装和配置过程:
shell> cd /optshell> wget http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gzshell> tar -zxvf zookeeper-3.4.9.tar.gzshell> cd zookeeper-3.4.9## 拷贝配置文件shell> cp conf/zoo_sample.cfg conf/zoo.cfg## 启动服务shell> ./bin/zkServer.sh startZooKeeper JMX enabled by defaultUsing config: /opt/zookeeper-3.4.9/bin/../conf/zoo.cfgStarting zookeeper ... STARTED## 检查服务是否启动shell> ps -ef | grep zookeeper
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
从上面启动脚本的提示信息和进程信息可以看出,Zookeeper服务已经启动成功。
上面提到Zookeeper启动时会从conf目录中查找zoo.cfg文件,作为默认配置文件,配置文件中有几个重要的参数需要了解:
tickTime=2000dataDir=/tmp/zookeeperclientPort=2181
- 1
- 2
- 3
- 1
- 2
- 3
- tickTime:这个时间是作为客户端与服务器或Zookeeper主从节点之间维持心跳的时间间隔,也就是每隔tickTime时间段,客户端就会像服务器发送一个心跳,或集群环境中,Follower节点向Leader节点发送一个心跳。
- dataDir:Zookeeper保存节点数据的目录,同时写数据的日志也保存在这个目录当中。
- clientPort:客户端连接到Zookeeper服务器的端口,Zookeeper会监听这个端口,等待客户端的连接请求。
Zookeeper服务启动成功后,可通过netstat -ntlp
命令检查2181端口是否在监听。如下图所示:
集群模式
Zookeeper的面世就是为了解决分布式系统环境中,众多服务的协调问题,也只有在分布式环境下才能充分体现它的价值所在,所以单机模式一般只用于小规模项目和学习使用。ZK同时支持N个节点组成的集群来提供服务,并且有一个要求,集群节点必须超过一半以上的实例启动后,才能正常提供服务。比如由3个节点组成的集群,必须启动2个节点集群才能正常运行,所以Zookeeper集群环境的节点数一般为单数比较合理。
实际上Zookeeper还支持另外一种 伪集群 的方式,即在一台服务器上,运行多个Zookeeper实例。
集群模式的配置,除以上单机模式的三个基本配置外,每个节点 还要增加下面几个配置项:
initLimit=5syncLimit=2server.1=192.168.1.100:2888:3888 server.2=192.168.1.101:2888:3888
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
- initLimit:Follow服务器连接到Leader服务器,初始化时最长能忍受多少个心跳时间间隔。即每隔tickTime段时间,Follow向Leader发送一个心跳,如果initLimit次后还没有向Leader发送心跳,则Leader服务器会认为该Follow服务器已经宕机,即会将它从服务器集群中移除。即initLimit * tickTime(5 * 2000 = 10秒)后,Leader服务器还没有收到Follow服务器发送的心跳,则会将Follow服务器从集群中移除。
- syncLimit:标识Leader 与 Follower 之间发送消息,请求和应答的时间长度,最长不能超过 syncLimit 个 tickTime 的时间长度,这里配置的总时间长度为:2 * 2000 = 4秒
server.A=B:C:D:其中 A 是一个数字,表示这个是集群中第几台服务器;B 是这台服务器的 IP 地址; C 是这台服务器与集群中Leader服务器交换数据的端口; D 表示万一集群中的Leader服务器挂了,需要一个端口在集群的Follower服务器中重新选举出一个新的Leader,而这个端口就是用来执行选举时Follower服务器之间相互通信的端口。如果是伪集群的配置方式,由于B都是同一个IP,所以不同的Zookeeper实例通信端口号不能一样,需要给它们分配不同的端口号,且clientPort也需要修改成不一样。
伪集群server配置示例:
server.1=192.168.1.200:2888:3888
server.2=192.168.1.200:2889:3889
server.3=192.168.1.200:2890:3890
除了修改zoo.cfg配置文件,集群模式下还要配置一个文件myid
,这个文件放在dataDir目录下(/tmp/zookeeper
),这个文件里面就有一个数据就是A的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与zoo.cfg 里面配置信息进行比较,从而才能判断出自己到底是哪台服务器。
集群配置
服务器节点规划:
节点1:192.168.1.200
节点2:192.168.1.201
节点3:192.168.1.202
1> 安装Zookeeper
参考 单机模式 在每个节点安装Zookeeper
2> 节点1配置(192.168.1.200)
shell> vi /opt/zookeeper-3.4.9/conf/zoo.cfgtickTime=2000initLimit=5syncLimit=2dataDir=/tmp/zookeeperclientPort=2181## 集群所有节点配置server.1=192.168.1.200:2888:3888server.2=192.168.1.201:2888:3888server.3=192.168.1.202:2888:3888
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
在dataDir目录下创建一个myid文件,并写入服务器编号1
shell> mkdir /tmp/zookeepershell> echo 1 > /tmp/zookeeper
- 1
- 2
- 1
- 2
3> 节点2配置(192.168.1.201)
shell> vi /opt/zookeeper-3.4.9/conf/zoo.cfgtickTime=2000initLimit=5syncLimit=2dataDir=/tmp/zookeeperclientPort=2181## 集群所有节点配置server.1=192.168.1.200:2888:3888server.2=192.168.1.201:2888:3888server.3=192.168.1.202:2888:3888
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
在dataDir目录下创建一个myid文件,并写入服务器编号2
shell> mkdir /tmp/zookeepershell> echo 2 > /tmp/zookeeper
- 1
- 2
- 1
- 2
4> 节点3配置(192.168.1.202)
shell> vi /opt/zookeeper-3.4.9/conf/zoo.cfgtickTime=2000initLimit=5syncLimit=2dataDir=/tmp/zookeeperclientPort=2181## 集群所有节点配置server.1=192.168.1.200:2888:3888server.2=192.168.1.201:2888:3888server.3=192.168.1.202:2888:3888
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
在dataDir目录下创建一个myid文件,并写入服务器编号3
shell> mkdir /tmp/zookeepershell> echo 2 > /tmp/zookeeper
- 1
- 2
- 1
- 2
5> 启动集群
在每个节点上执行如下命令,启动Zookeeper实例
shell> /opt/zookeeper-3.4.9/bin/zkServer.sh startZooKeeper JMX enabled by defaultUsing config: /opt/zookeeper01/bin/../conf/zoo.cfgStarting zookeeper ... STARTED
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
6> 集群服务测试
shell> telnet 192.168.1.200 2181Trying 192.168.1.200...Connected to 192.168.1.200.Escape character is '^]'.stat ## 注意在这里输入stat命令Zookeeper version: 3.4.9-1757313, built on 08/23/2016 06:50 GMTClients: /192.168.1.200:41465[0](queued=0,recved=1,sent=0)Latency min/avg/max: 0/0/0Received: 1Sent: 0Connections: 1Outstanding: 0Zxid: 0x100000000Mode: followerNode count: 4Connection closed by foreign host.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
通过telnet命令连接到192.168.1.200这个节点,输入stat
命令得到Zookeeper服务器的响应,从而可以看出Zookeeper集群已经正常工作了,且该节点的运行模式为 follower 。
- 分布式服务管理框架-Zookeeper安装与配置(单机、集群)
- 分布式服务管理框架-Zookeeper安装与配置(单机、集群)
- zookeeper的安装与配置(单机与伪分布式)
- zookeeper(单机/集群)安装与配置
- Zookeeper的安装与配置(单机和伪分布式)
- 分布式服务管理框架-Zookeeper日志配置
- 分布式服务管理框架-Zookeeper日志配置
- 分布式服务框架ZooKeeper安装和配置
- Zookeeper分布式集群的安装与配置
- Zookeeper分布式集群的安装与配置
- 安装和配置详解 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
- zookeeper单机、集群安装、zoo配置详解
- zookeeper单机集群安装
- 单机安装zookeeper集群
- DUBBO服务管理配置Zookeeper集群服务
- 分布式服务框架DUBBO(二)搭建dubbo服务-zookeeper与dubbo-admin的安装
- 分布式协调服务zookeeper-集群安装
- Zookeeper--分布式服务框架 Zookeeper -- 管理分布式环境中的数据
- linux 中设备的访问与软件安装
- 情感生活感悟
- EXT.NET对话框
- ospf学习-----邻居建立以及报文
- 搭建hadoop分布式文件管理系统(HDFS)
- 分布式服务管理框架-Zookeeper安装与配置(单机、集群)
- 《算法》希尔排序、归并排序、快速排序、三向切分的快速排序
- 考研英语近义词与反义词·十一
- java键盘输入/屏幕输出练习
- Java反射机制
- 每日论文 Learning from Simulated and Unsupervised Images through Adversarial Training
- 编写一个Java程序,创建制定长度的int型数组,并生成100以内的随机数为数组的每个元素赋值
- 蓝桥杯 垒骰子(矩阵快速幂)
- JVM加载类知识点