一、zookeeper集群的搭建与配置
1. 可以访问查看zookeeper官网: zookeeper.apache.org
2. 下载zookeeper 3.3.6,下载地址:http://archive.apache.org/dist/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz
3. 上传到/usr/local/目录下,并解压,命令:tar -xvf zookeeper-3.3.6.tar.gz
4. 将zookeeper重命名,命令:mv zookeeper-3.3.6 zk336
5.配置环境变量 ,命令:vi /etc/profile
根据自己的文件位置,将下面的配置加入环境变量
export ZOOKEEPER_HOME=/usr/local/zk336
:$ZOOKEEPER_HOME/bin
保存后,刷新环境变量,命令:source /etc/profile
6. 进入zk336目录下的conf,修改配置文件 zoo.cfg,粘贴以下内容
进入目录命令:cd /usr/local/zk336/conf
编辑文本命令:vi zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/opt/zookeeper
# the port at which the clients will connect
clientPort=2181
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
7. 在 dataDir(上面配置中的地址/opt/zookeeper)指定的目录中创建一个 myid 文件,写入这台服务器的id ,即上面 zoo.cfg中的 server后面的数字
进入命令:cd /opt
创建目录命令:mkdir zookeeper
编辑文件命令:vi myid
输入1 保存后退出 1
8.将node1中这个安装好的 zk,同步到 node2, node3下
同步命令:scp -r zk336/ node2:/usr/local/
同步命令:scp -r zk336/ node3:/usr/local/
9.在node2,node3中配置环境变量 vi /etc/profile
,跟node1一样
保存后刷新环境变量:source /etc/profile
10. 在node2, node3的 /opt/zookeeper目录创建myid文件,且写入编号
在node2中创建zookeeper目录,编辑myid文件,输入2后保存退出
在node3中创建zookeeper目录,编辑myid文件,输入3后保存退出
11. 同时在node1,2,3 启动 zk
在各节点执行启动命令:zkServer.sh start
查看各节点启动状态命令:zkServer.sh status
node1上的zk为追随者
node2上zk也为追随者
node3上的zk为领导者,证明zk集群启动成功,并且成功选举
12. 测试zk是否成功且启动, 在node1上启动zk客户端,命令:zkCli.sh -server node1:2181
二、设置zookeeper服务脚本启动
1.先关闭各节点上的zookeeper服务
命令:zkServer.sh stop
2. 进入zookeeper的安装目录的bin下,编写zk集群的启动脚本 zk-all.sh(以下操作在单节点上进行即可)
进入命令:cd /usr/local/zk336/bin
编写脚本命令:vi zk-all.sh
#! /bin/bash
# 设置Zookeeper集群节点地址
hosts=(node1 node2 node3)
# 获取输入命令参数
cmd=$1
# 执行分布式管理命令
function zookeeper()
{
for i in ${hosts[@]}
do
ssh root@$i "source /etc/profile;zkServer.sh $cmd;echo Zookeeper node is $i, run $cmd command." &
sleep 1
done
}
# 判断输入的Zookeeper命令参数是否有效
case "$1" in
start)
zookeeper
;;
stop)
zookeeper
;;
status)
zookeeper
;;
start-foreground)
zookeeper
;;
upgrade)
zookeeper
;;
restart)
zookeeper
;;
print-cmd)
zookeeper
;;
*)
echo "Usage: $0 {start|start-foreground|stop|restart|status|upgrade|print-cmd}"
RETVAL=1
esac
3. 进入到 /etc/rc.d/init.d目录下,创建一个 zkCluster 脚本
编写脚本命令:vi /etc/rc.d/init.d/zkCluster
#! /bin/bash
#chkconfig: 345 90 90
#description: zookeeper cluster node1 node2 node3
#processname: zookeeper_cluster
# 设置Zookeeper集群节点地址
hosts=(node1 node2 node3)
# 获取输入命令参数
cmd=$1
# 执行分布式管理命令
function zookeeper()
{
for i in ${hosts[@]}
do
ssh root@$i "source /etc/profile;zkServer.sh $cmd;echo Zookeeper node is $i, run $cmd command." &
sleep 1
done
}
# 判断输入的Zookeeper命令参数是否有效
case "$1" in
start)
zookeeper
;;
stop)
zookeeper
;;
status)
zookeeper
;;
start-foreground)
zookeeper
;;
upgrade)
zookeeper
;;
restart)
zookeeper
;;
print-cmd)
zookeeper
;;
*)
echo "Usage: $0 {start|start-foreground|stop|restart|status|upgrade|print-cmd}"
RETVAL=1
esac
4. 保存后,修改执行权限
进入目录命令:cd /etc/rc.d/init.d
增加权限命令:chmod +x zkCluster
5. 将脚本加入到 chkconfig 服务列表中
加入脚本命令:chkconfig --add zkCluster
查看列表命令:chkconfig --list
6.以后就可以用以下命令启动服务了
启动命令:service zkCluster start