zookeeper 安装以及集群搭建
安装环境:
jdk1.7
zookeeper-3.4.10.tar.gz
VM虚拟机redhat6.5-x64:192.168.1.200 192.168.1.201 192.168.1.202
Xshell4
部署方案:
主机IP | 集群通信端口 | 消息端口 | 节点目录 |
192.168.1.200 | 2888:3888 | 2181 | /usr/local/zookeeper |
192.168.1.201 | 2888:3888 | 2181 | /usr/local/zookeeper |
192.168.1.202 | 2888:3888 | 2181 | /usr/local/zookeeper |
三个几点安装前 检查时间是否同步,不同步使用ntpdate来同步。
第一步:解压 zookeeper-3.4.10.tar.gz
#解压
tar -zxvf zookeeper-3.4..tar.gz -C /usr/local
#修改目录名
mv zookeeper-3.4. zookeeper
第二步:配置zookeeper
ZK配置文件:
tickTime:发送心跳的间隔时间,单位:毫秒; dataDir:zookeeper保存数据的目录; clientPort:客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求; initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader的Follower服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 个心跳的时间(也就是 tickTime)长度后Zookeeper服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 *= 秒; syncLimit:这个配置项标识Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 *= 秒; server.A=B:C:D:
其中A是一个数字,表示这个是第几号服务器;
B是这个服务器的ip地址;
C表示的是这个服务器与集群中的Leader服务器交换信息的端口;
D表示的是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于B都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号
#切换zookeeper配置文件目录
cd /usr/local/zookeeper/conf
#修改配置文件名 默认运行配置文件名 zoo.cfg
mv zoo_sample.cfg zoo.cfg
#编辑配置文件
vim zoo.cfg
修改配置一:
在/usr/local/zookeeper 创建目录data 用来存储集群节点信息(快照日志):包括zookeeper以及其他依赖zookeeper服务的集群
dataDir=/usr/local/zookeeper/data
在/usr/local/zookeeper 创建目录logs 用来存储事务日志
dataLogDir=/usr/local/zookeeper/logs
修改配置二:
zookeeper各节点
server.0=192.168.1.200:2888:3888
server.1=192.168.1.201:2888:3888
server.2=192.168.1.202:2888:3888
第三步:创建myid文件
在dataDir=/home/grid/zookeeper/data下创建myid文件
编辑myid文件,并在对应的IP的机器上输入对应的编号。如在第一台zookeeper上,我们给该myid文件内容指定就是0,第二台上就是1....
修改zkEnv.sh 注明日志zookeeper.out目录
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="/usr/local/zookeeper/logs/zookeeper/logs"
fi
修改 zkServer.sh 指定依赖的jdk
在原有代码之前加上
export JAVA_HOME=/usr/local/jdk1.7.0_80
export PATH=$JAVA_HOME/bin:$PATH
第四步:配置环境变量
[root@ data]# vim /etc/profile
[root@ data]# source /etc/profile
第五步:启停zookeeper
[root@ local]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED #zk 的jps名称是QuorumPeerMain
[cluster@PCS101 conf]$ jps
QuorumPeerMain [cluster@PCS101 bin]$ ./zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /home/cluster/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
第六步:检查
#follower表示从服务器
[root@ conf]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower
#leader表示主服务
[root@ local]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader
#客户端登录
zkCli.sh
第七步:检查集群存储各个节点信息,包括:Hadoop、Hbase、Storm、Kafka、activemq
方式一:eclipse插件
方式二:ZooInspector
具体参考:https://www.cnblogs.com/cac2020/p/9428255.html
zk运维:
问题1:查看日志zookeeper.log
2018-10-23 14:37:21,613 [myid:3] - ERROR [main:QuorumPeer@692] - Unable to load database on disk
java.io.IOException: The accepted epoch, 8c96 is less than the current epoch, 8cc7
at org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:689)
at org.apache.zookeeper.server.quorum.QuorumPeer.start(QuorumPeer.java:635)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:170)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:114)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:81)
然后无法启动
[cluster@PCS103 bin]$ ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/cluster/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
原因启动时根据快照恢复数据出错 ,解决办法将快照目录 version-2 备份version-2.bak 然后重启即可解决
zookeeper 安装以及集群搭建的更多相关文章
- zookeeper安装与集群搭建
此处以centos系统下zookeeper安装为例,详细步骤可参考官网文档:zookeeper教程 一.单节点部署 1.下载zookeeper wget http://mirrors.hust.edu ...
- zookeeper及kafka集群搭建
zookeeper及kafka集群搭建 1.有关zookeeper的介绍可参考:http://www.cnblogs.com/wuxl360/p/5817471.html 2.zookeeper安装 ...
- 【运维技术】Zookeeper单机以及集群搭建教程
Zookeeper单机以及集群搭建教程 单机搭建 单机安装以及启动 安装zookeeper的前提是必须有java环境 # 选择目录进行下载安装 cd /app # 下载zk,可以去官方网站下载,自己上 ...
- Zookeeper 安装及集群配置注意点
Zookeeper在ubuntu下安装及集群搭建,关于集群搭建,网上很多文章 可以参考:https://www.ibm.com/developerworks/cn/opensource/os-cn-z ...
- 基于zookeeper的Swarm集群搭建
简介 Swarm:docker原生的集群管理工具,将一组docker主机作为一个虚拟的docker主机来管理. 对客户端而言,Swarm集群就像是另一台普通的docker主机. Swarm集群中的每台 ...
- Zookeeper简介与集群搭建【转】
Zookeeper简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理.命名.分布式同步.集群管理.数据库切换等服务.它不适合用来存储大量信息,可以用来存储一些配置.发布与订阅等少 ...
- zookeeper 安装及集群
一.zookeeper介绍 zookeeper是一个中间件,为分布式系统提供协调服务,可以为大数据服务,也可以为java服务. 分布式系统,很多计算机组成一个整体,作为一个整体一致对外并处理同一请求, ...
- ActiveMQ此例简单介绍基于docker的activemq安装与集群搭建
ActiveMQ拓展连接 此例简单介绍基于Docker的activemq安装与集群搭建 一 :安装 1.获取activemq镜像 docker pull webcenter/activemq 2.启动 ...
- Redis单机安装以及集群搭建
今天主要来看一下Redis的安装以及集群搭建(我也是第一次搭建). 环境:CentOS 7.1,redis-5.0.7 一.单机安装 1.将Redis安装包放置服务器并解压 2.进入redis安装目录 ...
随机推荐
- Dockerfile创建镜像
Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile来快速创建自定义的镜像. Dockerfile由一行行命令语句组成,并且支持易#开头的注释行. 一般而言Dockerfil ...
- [转]Shell脚本之无限循环的两种方法
方法一: while循环,用的比较多的 #!/bin/bash set j= while true do let "j=j+1" echo "----------j is ...
- thinkCMF----如何写标签
ThinkCMF写标签的地方:
- 9.12 Django路由
2018-9-12 12:14:29 路由就是根据具体业务需求写的! 有的业务多,路由多,然后就需要细化 然后根据需求该! 怎么方便怎么来! 越努力,越幸运! 贴上笔记! 路由url根据需要可用修改, ...
- ELK之使用filebeat的多行过滤插件把多行合并成一行
java运行日志一般有多行,格式类似如下 格式为:日期 + 日志级别 + 日志信息 有些日志是多行的,需要使用filebeat多行插件把多行合并成一行 未使用多行插件的日志格式 修改filebeat配 ...
- HDU-1166敌兵布阵(线段树)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...
- 【问题收录】Ubuntu14.04连接两个双显示器失败的解决方案
https://blog.csdn.net/chichoxian/article/details/60642533
- 【技术分享】Java 序列化与反序列化安全分析
唯品会安全应急响应中心 https://mp.weixin.qq.com/s?src=11×tamp=1546915765&ver=1317&signature=mW ...
- Cross-origin resource sharing JSON with Padding 同源策略 JSONP 为什么form表单提交没有跨域问题,但ajax提交有跨域问题? XMLHttpRequest and the Fetch API follow the same-origin policy 预检请求(preflight request)
https://zh.wikipedia.org/wiki/跨来源资源共享 跨来源资源共享(CORS)是一份浏览器技术的规范,提供了 Web 服务从不同域传来沙盒脚本的方法,以避开浏览器的同源策略[1 ...
- 【Pyton】【小甲鱼】类和对象
一.类 定义一个类,例子如下: class Turtle: #定义一个名为Turtle的类,Python中类型约定以大写字母开头 #属性 color='green' weight=10 legs=4 ...