zookeeper 高可用集群搭建
前言
记录Zookeeper
集群搭建的过程!
什么是 Zookeeper ?
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
划重点:分布式应用程序协调服务,在分布式系统中,通常需要一个通用的服务注册与发现中心,因此Zookeeper
就是充当这样的角色,国内非常出名的分布式框架Dubbo
也建议使用Zookeeper
作为服务注册与发现中心。
环境准备
准备三台Linux
虚拟机,前往官网下载zookeeper
压缩包,如果不知道官网如何下载,可在公众号「张少林同学」回复Java工具
获取网盘下载链接
OS | 主机名 | ip | zookeeper/端口 |
---|---|---|---|
centos7 | LIHETEST6 | 192.168.2.216 | zookeeper-3.4.11.tar.gz/2181 |
centos7 | LIHETEST7 | 192.168.2.217 | zookeeper-3.4.11.tar.gz/2181 |
centos7 | LIHETEST8 | 192.168.2.218 | zookeeper-3.4.11.tar.gz/2181 |
配置服务器 hosts 映射
在三台服务器分别做以下操作,这里以 LIHETEST6
为例:
- 查看本机主机名:
hostname
vim /etc/hostname
删除原有内容,新增主机名:LIHETEST6
- 设置主机名及IP映射 :
vim /etc/hosts
在文件尾部添加内容,格式为: IP 地址 主机名 (中间用空格分割),保存退出,例如:192.168.2.216 LIHETEST6
- 重启网络服务:
systemctl restart network
单机部署
将Zookeeper
压缩包上传到服务器后,解压
1//上传压缩包
2scp zookeeper-3.4.11.tar.gz root@192.168.2.219:/home/tools
3//登录到服务器目录 解压
4tar -zxvf zookeeper-3.4.11.tar.gz
5//进入zookeeper主目录
6cd zookeeper-3.4.11
解压后看看都有哪些内容:
我们只需要把焦点定位到这两个目录:
- bin目录:脚本执行目录,里面放置一些
Zookeeper
启动脚本等 - conf目录:配置文件目录
执行脚本命令./bin/zkServer.sh start
启动Zookeeper
,结果如下:
提示找不到 ../conf/zoo.cfg
文件,但是最后却打印STARTED
,于是执行./bin/zkServer.sh status
看看当前Zookeeper
状态,结果如下:
上述结果很清晰明了了,Zookeeper
启动失败,原因是找不到配置文件:./conf/zoo.cfg
,./bin/zkServer.sh start
命令启动时,默认会使用此配置文件启动,而初始化时./conf
目录下并无此文件,查看./conf
中存在一个样例配置文件./conf/zoo_sample.cfg
,于是执行cp ./conf/zoo_sample.cfg ./conf/zoo.cfg
复制一份./conf/zoo.cfg
文件出来,再次执行命令启动Zookeeper
,结果如下:
可以看出Zookeeper
已经启动了,并且是单机模式启动。
再看看启动日志信息cat zookeeper.out
:
zookeeper
启动,绑定在2181
端口,查看一下进程是否存在:netstat -lntp | grep 2181
,结果如下:
1tcp6 0 0 :::2181 :::* LISTEN 27201/java
配置文件解析
- tickTime:客户端与服务端保持心跳的毫秒数
- initLimit:初始容忍的心跳数
- syncLimit:等待最大容忍的心跳数
- dataDir:存储快照的目录,这里默认是使用系统临时目录,真实使用时建议自定义目录
- clientPort:暴露给客户端访问的端口
单机伪集群部署
有时候我们会在本机搭建一个伪集群,用于项目代码测试,那么只需要启动三个不同配置的Zookeeper
即可,只要端口不同,即可视为不同的程序。
在./conf
目录下新增zoo1.cfg
,zoo2.cfg
,zoo3.cfg
配置文件,其中dataDir
目录依次都不同,clientPort
分别配置为2181
,2182
,2183
。启动Zookeeper
时,显式指定配置文件,如:./bin/zkServer.sh start conf/zoo3.cfg
,依次启动三个Zookeeper
配置文件。。那么最终执行netstat -lntp
看下端口监听情况:
可以看到启动了三个监听不同端口的Zookeeper
.
多机集群部署
在真实生产环境中,我们一般会搭建一个多机器集群的,目的很明显,为了提高容错能力。
在三台机器中,每台安装一个Zookeeper
服务,这三台机器形成一个小规模的集群。
在每台机器中修改./conf/zoo.cfg
配置文件如下:
1 initLimit=10 // 初始容忍的心跳数
2 syncLimit=5 // 等待最大容忍的心跳数
3 dataDir=/home/wwwroot/easywits/tools/zookeeper-3.4.11/data //数据存储目录
4 dataLogDir=/home/wwwroot/easywits/tools/zookeeper-3.4.11/logs //数据日志文件目录
5 clientPort=2181 //zookeeper 监听端口
6 server.1=192.168.2.216:2888:3888 //主机ip/服务间心跳连接端口/数据端口
7 server.2=192.168.2.217:2888:3888
8 server.3=192.168.2.218:2888:3888
分别在每台服务器 数据目录 /home/wwwroot/easywits/tools/zookeeper-3.4.11/data
中新增名为 myid
文本文件,内容依次为 0,1,2
,这是集群中每台 Zookeeper
服务的唯一标识,不能重复,以第一台为例:
1echo "0" > /home/wwwroot/easywits/tools/zookeeper-3.4.11/data/myid
启动 Zookeeper
: ./bin/zkServer.sh start
查看每台服务器中,Zookeeper
状态:./bin/zkServer.sh status
,结果分别如下:
1 Using config: /home/wwwroot/easywits/tools/zookeeper-3.4.11/bin/../conf/zoo.cfg
2 Mode: follower
3
4 Using config: /home/wwwroot/easywits/tools/zookeeper-3.4.11/bin/../conf/zoo.cfg
5 Mode: leader
6
7 Using config: /home/wwwroot/easywits/tools/zookeeper-3.4.11/bin/../conf/zoo.cfg
8 Mode: follower
可以看到启动模式,第一台与第三台为follower
,而第二台为leader
注意:Zookeeper
集群规模,机器数量只能是奇数个,在三台机器集群的情况下,最多只能挂掉其中一台,如果主节点挂掉,剩下两台服务会重新选举一台作为主节点。
总结
Zookeeper
启动失败,可以在./zookeeper.out
文件查看异常日志- 每台机器的
myid
中内容为服务的唯一标识,不能重复 - 确保每台机器必须能
ping
通,必要时请先关闭防火墙 - 在阿里云服务器上,请使用内网
ip
进行配置 - 确保使用的端口未被占用
Zookeeper
集群机器数量只能是奇数个,详见 https://www.cnblogs.com/LeeScofiled/p/7390937.html
ps:关于需要用到的工具,可在公众号「张少林同学」回复Java工具
获取网盘下载链接
最后
记录一波Zookeeper
搭建过程,后续会不定期更新原创文章,欢迎关注公众号 「张少林同学」!
zookeeper 高可用集群搭建的更多相关文章
- zookeeper高可用集群搭建
前提:已经在master01配置好hadoop:在各个slave节点配置好hadoop和zookeeper: (该文是将zookeeper配置在各slave节点上的,其实也可以配置在各master上, ...
- hadoop+yarn+hbase+storm+kafka+spark+zookeeper)高可用集群详细配置
配置 hadoop+yarn+hbase+storm+kafka+spark+zookeeper 高可用集群,同时安装相关组建:JDK,MySQL,Hive,Flume 文章目录 环境介绍 节点介绍 ...
- Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)
声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.服务器环境 主机名 IP 用户名 密码 安装目录 master188 192.168.29.188 hadoop hadoop /home/ha ...
- zookeeper+activemq高可用集群搭建
一.准备工作: 准备三台机器:192.168.35.111192.168.35.112192.168.35.113 二.搭建zookeeper 三台机器上均要搭建zookeeper服务// 下载zoo ...
- hadoop高可用集群搭建小结
hadoop高可用集群搭建小结1.Zookeeper集群搭建2.格式化Zookeeper集群 (注:在Zookeeper集群建立hadoop-ha,amenode的元数据)3.开启Journalmno ...
- Spark高可用集群搭建
Spark高可用集群搭建 node1 node2 node3 1.node1修改spark-env.sh,注释掉hadoop(就不用开启Hadoop集群了),添加如下语句 export ...
- Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建
目录 目录 1.前言 1.1.什么是 Hadoop? 1.1.1.什么是 YARN? 1.2.什么是 Zookeeper? 1.3.什么是 Hbase? 1.4.什么是 Hive 1.5.什么是 Sp ...
- spring cloud 服务注册中心eureka高可用集群搭建
spring cloud 服务注册中心eureka高可用集群搭建 一,准备工作 eureka可以类比zookeeper,本文用三台机器搭建集群,也就是说要启动三个eureka注册中心 1 本文三台eu ...
- Hbase 完全分布式 高可用 集群搭建
1.准备 Hadoop 版本:2.7.7 ZooKeeper 版本:3.4.14 Hbase 版本:2.0.5 四台主机: s0, s1, s2, s3 搭建目标如下: HMaster:s0,s1(备 ...
随机推荐
- canvas动画--demo
canvas动画:bubble
- 表达式SpEL方式的属性注入
-----------------------siwuxie095 表达式 SpEL 方式的属性注入 表达式 SpEL 方式的属性注入是 Spring 3.x 版本后提供的方式 1.编写一个普通类 B ...
- Shiro和Spring 集合实现同一个账号只能一个人在线使用,其它人在使用进行剔除(八)
1.实现原理其实就是自定义过滤器,然后登录时,A登录系统后,B也登录了,这个时候获取此账号之前的session给删除,然后将新的session放入到缓存里面去,一个账户对应一个有序的集合 编写自定义过 ...
- TokuDB的索引结构–分形树的实现
分形树简介 原文:http://www.bitstech.net/2015/12/15/tokudb-index-introduction/ 分形树是一种写优化的磁盘索引数据结构. 在一般情况下, 分 ...
- 前端基础之:JQuery(可编辑版)
前端基础之jquery 一 jQuery是什么? [1] jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team. [2] ...
- 交互原型画得丑?29个优秀UI/UX线框草图
现在越来越多UI设计师都需要画一些交互的线框图,然而作为视觉专家,当然要把它画得靓靓的嘛,是不是?所以很多用户会使用<5款高效的原型设计工具>来绘制,或者直接手绘更有逼格. 今天达人手工整 ...
- Text Relatives
[Text Relatives] With TextKit the resources at your disposal range from framework objects—such as te ...
- 移动直播app怎么做
今年移动直播行业的兴起,诞生了一大批网红,甚至明星也开始直播了,因此不得不跟上时代的步伐,教你从零开始搭建一个完整的iOS直播app,希望能帮助到更多的人更快的了解直播. 了解直播 1 热门直播产品: ...
- golang C相互调用带参数
test.h #ifndef __TEST_H__ #define __TEST_H__ void SetFunc(char* str); extern void InternalFunc(char* ...
- Mybatis的map用法
当Mybatis传过来的值是map类型的时候,有两种处理方法 1.将数值装入类封装起来 public interface IStudentDao { // 根据姓名和年龄查询 List<Stud ...