一、准备服务器环境
ZooKeeper Cluster
Host IPzookeeper1 192.168.50.228
zookeeper2 192.168.50.229
zookeeper3 192.168.50.230
注:为了测试方便,把所有服务器的防火墙都关闭了
#chkconfig iptables off #永久关闭防火墙
#chkconfig iptables on #永久开启防火墙
使用主机名代替IP更加易读,修改方法如下:
1、修改主机名
#vim /etc/sysconfig/network
HOSTNAME=zookeeper1 #主机名称
2、配置hosts文件(相当于么有DNS服务器)
192.168.50.228 zookeeper1
192.168.50.229 zookeeper2
192.168.50.230 zookeeper3
二、安装SunJRE
2.1、JRE7下载
下载地址:
Oracle.com/otn-pub/java/jdk/7u75-b13/jre-7u75-linux-x64.tar.gz?AuthParam=1426833144_785a1e689cccd502d1def7b4a777c646
2.2、安装
把jre7.tar.gz拷贝到安装目录,然后解压
#tar -zxvf jre7.tar.gz
2.3、配置环境变更
#vim /etc/profile
export JAVA_HOME=/home/bdata/software/jre1.7.0_75
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export ZOOKEEPER_HOME=/home/bdata/software/zookeeper-3.4.6
export PATH=$PATH: $JAVA_HOME/bin :$ZOOKEEPER_HOME/bin
2.4、设置默认JRE
sudo update-alternatives
--install /usr/bin/java java /home/bdata/software/jre1.7.0_75/bin/java 300
三、安装zookeeper集群
•1、下载zookeeper
下载地址:
2、安装&配置zookeeper
把tar文件解压到安装目录
#tar -zxvf zookeeper-3.4.6.tar.gz
在conf文件夹下创建zoo.cfg
#cd ${zookeeper_home}/conf
#cp zoo_sample.cfg zoo.cfg
#vim zoo.cfg
#配置如下
#Zookeeper服务器心跳时间,单位毫秒
tickTime=2000
#投票选举新leader的初始化时间
initLimit=10
#Leader与Follower之间的最大响应时间单位,响应超过syncLimit*tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer
syncLimit=5
#数据存放目录(持久化路径)
dataDir=/home/bdata/datadir/zk/data
#日志保存路径 这个要自己新建
dataLogDir=/home/bdata/datadir/zk/logs
clientPort=2181
#最大的客户端连接数,这里我们设置10000
maxClientCnxns=10000
#集群配置,zookeeper1表示服务机器名可以使用IP或机器名,使用机器名需要设置hosts文件,集群部署需要在dataDir指定的目录下创建一个myid文件,里面设置1-255之间的整数用作zookeeper唯一标识名称,集群必须设置该值
如/home/bdata/datadir/zk/data/myid
echo "1" > myid
#server.服务器标识=IP或机器名:选举leader端口(zk之间的通讯):接收选举数据通信端口,还有一个客户端的端口2181,这三个端口不要混淆
server.1=zookeeper1:2887:3887
server.2=zookeeper2:2887:3887
server.3=zookeeper3:2887:3887
•3、设置日志输出路径
#vim ${zookeeper_home}/bin/zkEnv.sh
#################截取部分配置#################
ZOOBINDIR="${ZOOBINDIR:-/usr/bin}"
ZOOKEEPER_PREFIX="${ZOOBINDIR}/.."
if [ "x$ZOOCFGDIR" = "x" ]
then
if [ -e "${ZOOKEEPER_PREFIX}/conf" ]; then
ZOOCFGDIR="$ZOOBINDIR/../conf"
else
ZOOCFGDIR="$ZOOBINDIR/../etc/zookeeper"
fi
fi
if [ -f "${ZOOCFGDIR}/zookeeper-env.sh" ]; then
. "${ZOOCFGDIR}/zookeeper-env.sh"
fi
if [ "x$ZOOCFG" = "x" ]
then
ZOOCFG="zoo.cfg"
fi
ZOOCFG="$ZOOCFGDIR/$ZOOCFG"
if [ -f "$ZOOCFGDIR/java.env" ]
then
. "$ZOOCFGDIR/java.env"
fi
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
#设置日志输出路径,默认为执行zkServer.sh start命令所在目录生成日志文件
ZOO_LOG_DIR="/home/bdata/software/datadir/zk/logs/"
fi
•4、启动zookeeper
每个节点都启动zookeeper服务
#zkServer.sh start
查看zookeeper运行状态
#zkServer.sh status
//显示如下信息表示集群启动失败(注:集群环境至少启动两台服务器才能成功)
JMX enabled by default
Using config: /home/bdata/software/zookeeper-3.4.6/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
//**********************************************************************
//显示如下信息表示集群启动成功
JMX enabled by default
Using config: /home/bdata/software/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader #leade节点显示leader,普通节点显示follower
四、注意事项
1、检查状态(zkServer.sh status)出现:Error contacting service. It is probably not running.
解决方法:
打开zkServer.sh
找到
status)
STAT=`echo stat | nc localhost $(grep clientPort "$ZOOCFG" | sed -e 's/.*=//') 2> /dev/null| grep Mode`
在nc与localhost之间加上 -q 1 (是数字1而不是字母l)
如果已存在则去掉
2、Unkown Host/无法映射主机名错误/连接超时