Zookeeper笔记(三)部署与启动Zookeeper
下载zookeeper安装包
去Zookeeper官网,下载地址http://zookeeper.apache.org/releases.html,
建议下载稳定版本,
我下载的是zookeeper-3.4.6.tar.gz,解压到合适的目录,
就可以进行配置和启动。
为了操作简便,配置环境变量:
#Set ZooKeeper Enviroment
export ZK_HOME=/data/zookeeper-3.4.6
export PATH=$PATH:$ZK_HOME/bin:$ZK_HOME/conf
修改配置文件zoo.cfg
1.单机模式
tickTime=2000
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2182
tickTime: zookeeper中使用的基本时间单位, 毫秒值
dataDir: 数据目录. 可以是任意目录
dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数,将使用和dataDir相同的设置
clientPort: 监听client连接的端口号
2.集群模式
tickTime=2000
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2182
initLimit=5
syncLimit=2
server.1=192.168.106.101:2888:3888
server.2=192.168.106.102:2888:3888
server.3=192.168.106.103:2888:3888
initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.
server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 由于配置的是伪集群模式, 所以各个server的B, C参数必须不同.
3.伪集群模式
tickTime=2000
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2182
server.1=127.0.0.1:2880:3880
server.2=127.0.0.1:2881:3881
server.3=127.0.0.1:2882:3882
启动和关闭zookeeper
./zkServer.sh start
./zkServer.sh stop
启动zookeeper中的常见问题
1. 启动zookeeper后出现noClassFound等等错误,例如:
Exception in thread "main" java.lang.NoSuchMethodError: method java.lang.management.ManagementFactory.getPlatformMBeanServer with signature ()Ljavax.management.MBeanServer; was not found.
at org.apache.zookeeper.jmx.ManagedUtil.registerLog4jMBeans(ManagedUtil.java:48)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:114)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:103)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:7
可能原因是该服务器的jdk版本不正确,或是环境变量未设置好。
例如,原来的linux下已经装有jdk-1.4,然后又安装了新版本的jdk-1.6,我们按照网上教程的步骤安装好zookeeper并设置环境变量后,
echo $JAVA_HOME显示java-1.6,
但是用java -version命令发现,仍然显示java-1.4,说明环境变量未配好。zookeeper读取的jdk版本仍然是旧版本的jdk-1.4。
解决方法是在/etc/bashrc文件的末尾,
export JAVA_HOME=/usr/java/jdk1.6.0_23
export JRE_HOME=$JAVA_HOME/jre
export PATH=JAVAHOME/bin:JAVAHOME/bin:PATH
//这里要注意,应该将PATH放在尾部而不是放在头部,网上有安装教程写的是PATH放在尾部而不是放在头部,网上有安装教程写的是PATH :JAVAHOME/bin,这样zookeeper读取的将是JAVAHOME/bin,这样zookeeper读取的将是PATH中的jdk旧版本而出错。
export CLASSPATH=.:$JAVA_HOME/lib/*.jar
2. 当一台或某台机器反复出现cannot open channel to xxxx:2888/3888,报错(例如无法与leader进行同步等等错误),无法完成选举(这个错误以前一直有出现,但是时有时无,不知道为什么)。
可能原因是防火墙开启,导致某台机器的端口不能开启,一般是2888不能开启。linux下的很多分布式应用会要求关闭防火墙。。。所以还是干脆关闭算了。今天把防火墙直接关闭后zookeeper启动正常。
用命令service iptables status查看,显示一系列消息,表示防火墙处于开启状态;可以用service iptables stop关闭防火墙。但是这个只是临时关闭防火墙。
要使系统启动时不自动启动防火墙,则可以使用命令chkconfig –list iptables查看防火墙信息,chkconfig iptables off关闭防火墙。以后若要打开,用chkconfig iptables on命令。
3.Zookeeper能够正常启动,但是显示如下错误:
Starting zookeeper…
./zkServer.sh: line 80: /home /sysdata/zookeeper/zookeeper-data/zookeeper_server.pid: No such file or directory
STARTED
在配置文件zoo.cfg文件中指定了zookeeper启动的pid文件的生成位置:dataDir=/home /sysdata/zookeeper/zookeeper-data,但是我们发现该pid并没有生成。而且想要停止zookeeper显然也不能成功:
Stopping zookeeper ...
error: could not find file /zookeeper_server.pid。
zoo.cfg文件中的给dataDir路径赋值前多了一个空格,zookeeper在读取此配置文件时会把空格也读进文件名,将此空格删去后zookeeper启动、关闭就正常了。
Zookeeper笔记(三)部署与启动Zookeeper的更多相关文章
- Zookeeper笔记(一)初识Zookeeper
为什么需要Zookeeper Zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知.集群管理.Master选举 ...
- ZooKeeper管理员指南——部署与管理ZooKeeper
1.部署 本章节主要讲述如何部署ZooKeeper,包括以下三部分的内容: 系统环境 集群模式的配置 单机模式的配置 系统环境和集群模式配置这两节内容大体讲述了如何部署一个能够用于生产环境的ZK集群. ...
- Hadoop生态圈-zookeeper完全分布式部署
Hadoop生态圈-zookeeper完全分布式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客部署是建立在Hadoop高可用基础之上的,关于Hadoop高可用部署请参 ...
- docker环境下solrcloud+zookeeper集群部署教程
前言:两个月前的16年11月份完成的配置,使用的solr6.1和zookeeper3.4,刚刚写成blog,目前版本可能有小版本的变化. 本例完成结果为:在docker环境下部署solrcloud集群 ...
- 如何在Crystal框架项目中内置启动Zookeeper服务?
当Crystal框架项目需要使用到Zookeeper服务时(如使用Dubbo RPC时,需要注册服务到Zookeeper),而独立部署和启动Zookeeper服务不仅繁琐,也容易出现错误. 在小型项目 ...
- Zookeeper的安装部署
1.Zookeeper的安装部署 7.1 Zookeeper工作机制 7.1.1.Zookeeper集群角色 Zookeeper集群的角色: Leader 和 follower (Observer ...
- (转)ZooKeeper 笔记(1) 安装部署及hello world
ZooKeeper 笔记(1) 安装部署及hello world 先给一堆学习文档,方便以后查看 官网文档地址大全: OverView(概述) http://zookeeper.apache.or ...
- 大数据学习笔记——Hadoop高可用完全分布式模式完整部署教程(包含zookeeper)
高可用模式下的Hadoop集群搭建 本篇博客将会在之前写过的Linux的完整部署的基础上进行,暂时不会涉及到伪分布式或者完全分布式模式搭建,由于HA模式涉及到的配置文件较多,维护起来也较为复杂,相信学 ...
- ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心
作者:Grey 原文地址:ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 很多程序往 ...
随机推荐
- Gym - 100269F Flight Boarding Optimization(dp+树状数组)
原题链接 题意: 现在有n个人,s个位置和你可以划分长k个区域你可以把s个位置划分成k个区域,这样每个人坐下你的代价是该区域内,在你之前比你小的人的数量问你怎么划分这s个位置(当然,每个区域必须是连续 ...
- bzoj千题计划305:bzoj2565: 最长双回文串(回文自动机)
https://www.lydsy.com/JudgeOnline/problem.php?id=2565 正着构造回文自动机 倒过来再构造一个回文自动机 分别求出以位置i开始的和结尾的最长回文串 # ...
- .Net进阶系列(4)-Lambda和linq入门(被替换)
一. Lambda和linq入门 lambda表达式又叫点标记,linq表达式又叫查询表达式,下面有三个简单的案例说明一下二者的基本用法,详细用法会在后续章节中更新. 二. 事例 1. 准备学生信息. ...
- 求FIRST集和FOLLOW集
花了点时间弄了个大概,希望对和我一样的人有所帮助. 文法如下: E -> TE'E' -> +TE'|εT -> FT'T' -> *FT'|εF -> (E)|id ...
- VS2015 与 Git 的简单使用
前言 在白忙之中抽了点时间,记录了下 VS 与 Git 的简单使用. 在之前使用命令行的时候,提交或拉取代码时,总报错:(提取时遇到错误: Unsupported URL protocol),后来在网 ...
- buildroot构建项目(六)--- u-boot 2017.11 适配开发板修改 4 ---- 系统启动初始化之三
一.内存控制器 在关闭了MMU和caches 之后 就进入lowlevel_init 函数,对内存控制器进行初始化.lowlevel_init.S (board\samsung\mini2440) 1 ...
- window.location详解
window.location对象常用属性 location.hostname 返回 web 主机的域名 location.host 返回 web 主机的域名(包含端口) location.pathn ...
- for XX in XX结构
这是一个循环!! in 后面可跟range,enumerate,序列等 for i in [(1,2),(2,3),("gege",5)]: print (i) 执行结果: (1, ...
- D- 泛型练习 ,继承,方法
unit Unit3; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...
- if-else 重构
最近发现自己写的代码if else太多了,有时候自己回头看都要重新捋逻辑,很不好.决定深入理解下if else重构. 中心思想: ①不同分支应当是同等层次,内容相当. ②合并条件表达式,减少if语句数 ...