Zookeeper安装部署
来源:互联网 发布:复旦物理系 知乎 编辑:程序博客网 时间:2024/05/10 06:55
Zookeeper安装
转载自:
http://blog.csdn.net/shatelang/article/details/7596007
1. 安装
wget http://www.apache.org/dist//zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz
tar zxvf zookeeper-3.3.6.tar.gz
mv zookeeper-3.3.6 /usr/local/zookeeper-3.3.6-2181
cd /usr/local/zookeeper-3.3.6-2181
cp conf/zoo_sample.cfg conf/zoo.cfg
2. 单实例配置
修改配置文件
vi conf/zoo.cfg
#心跳时间
tickTime=2000
initLimit=10
syncLimit=5
#数据保存目录
dataDir=/home/deployer/zookeeper/data
dataLogDir=/home/deployer/zookeeper/logs
#客户端连接端口
clientPort=2181
增加内存
zkEnv.sh
zkEnv.sh
#在文件底部增加
export JVMFLAGS="-Xms1024m -Xmx2048m $JVMFLAGS"
查询内存大小
ps -ef|grep zookeeper
#查询pid
jmap --heap pid
3. 集群配置
注意:其中data目录和server地址需改成你真实部署机器的信息
修改配置文件
vi conf/zoo.cfg
tickTime=2000
#连接leader的等待的最长时间(秒)
initLimit=10
#标识 Leader 与 Follower 之间发送消息,请求和应答时间最长时间
syncLimit=5
# the directory where the snapshot is stored.dataDir=/home/deployer/zookeeper/datadataLogDir=/home/deployer/zookeeper/logs
clientPort=2181
#server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 #Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 #Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
server.1=10.0.30.138:2555:3555
server.2=10.0.30.139:2555:3555
增加myid文件
并在data目录下放置myid文件:(上面zoo.cfg中的dataDir)
mkdir data
vi myid
myid指明自己的id,对应上面zoo.cfg中server.后的数字,第一台的内容为1,第二台的内容为2,内容如下:
myid
1
如果没有设置集群,可以设置1831
4. 启动
./bin/zkServer.sh start
5. 停止
./bin/zkServer.sh stop
注:命令行参考 (See: http://zookeeper.apache.org/doc/r3.3.6/zookeeperAdmin.html)
6. 验证启动状态
telnet 127.0.0.1 2181
7. 用法
dubbo.registry.address=zookeeper://10.0.30.138:2181?backup=10.0.30.139:2181
或者
8. 测试zk服务
执行$ zkCli.sh -server 10.0.30.138:2181,检查指定服务器是否成功启动。
下面给我的单机3个伪集群的案例:
(1).分别在三台机器上安装好zookeeper,最好是同版本的。
直接cp三个即可,做一下标记,便于区分。
(2).修改配置文件如下
vi conf/zoo.cfg
下面分别是三个节点的配置文件样本
1
2
3
注意:其中data目录和server地址需改成你真实部署机器的信息
(3).增加myid文件
并在data目录下放置myid文件:(上面zoo.cfg中的dataDir)
#cd /data/retail/zookeeper/
vi myid
myid指明自己的id,对应上面zoo.cfg中server.后的数字,第一台的内容为1,第二台的内容为2,依次类推。
启动zookeeper中的常见问题
原文地址:http://hi.baidu.com/luhao8415/item/23c6e7f075aa18b730c1993a
最近常有启动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=$JAVA_HOME/bin:$PATH
//这里要注意,应该将$PATH放在尾部而不是放在头部,网上有安装教程写的是$PATH :$JAVA_HOME/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命令。
---
ps今天早上来看发现防火墙又开启了,貌似不管用。还是用以下三条命令关闭。
chkconfig --level 35 iptables off ; /etc/init.d/iptables stop; iptables -P INPUT DROP
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启动、关闭就正常了!
zoo.cfg文件很不智能,还有就是注释的时候#后边还得加一个空格。
其他: http://blog.csdn.NET/shenlan211314/article/details/6187034
- zookeeper的安装部署
- zookeeper安装部署
- ZooKeeper安装部署
- zookeeper安装部署
- zookeeper安装部署
- zookeeper 安装部署
- Zookeeper安装部署
- Zookeeper 安装和部署
- RHEL7安装部署ZooKeeper
- Zookeeper安装部署
- zookeeper安装部署
- ZooKeeper安装与部署
- Zookeeper 安装和部署
- Zookeeper的安装部署
- Zookeeper安装与部署
- ZooKeeper分布式 安装部署
- hadoop + zookeeper 安装部署
- zookeeper安装部署
- 循环中的break和continue
- 构建高并发高可用的电商平台架构实践
- CodeForces-722A. Broken Clock(模拟)
- mysql 匹配特殊字符
- SQL SERVER 比较两个数据库中表和字段的差异
- Zookeeper安装部署
- lintcode,落单的数
- Glib内存管理模块之magazine layer
- 原生JavaScript实现的简易计算器
- 杭电 1257 最少拦截系统
- HTML基础_CSS控制布局
- yii2-表单验证的一些规则
- [leetcode]155. Min Stack
- jQuery读取选择结果集合