Centos7下搭建ZooKeeper集群并设置服务脚本启动

一、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
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44422604/article/details/107145297