鉴于每次搭建zk集群都需要重复那些操作,所以这次写了几个Shell脚本,目前写的Shell脚本有,linux安装配置jdk、tomcat、zookeeper等、后续如果可以继续的话就写 solr,hadoop等的自动部署shell脚本。
Shell脚本有什么好处吗?答案当然是好处多了去了,就比如说给你3台机器,你手动搭建jdk.tomcat.zookeeper这3样最常用的,
3台机器,少说10多分钟,慢则30分钟,特别是菜鸟,没搭过几回可能用的时间更久,而对于老鸟来说已经滚瓜烂熟了,这样的工作重重复复,每次都是重复重复,一点意思都没有。而通过shell脚本,你只需要不到1分钟就可以把3台集群搭出来,何乐而不为。
这次介绍的是用Shell脚本写的搭建 Zookeeper集群的,如需要jdk.或tomcat的脚本可以移步我其他几篇博客
Shell命令教程:http://www.runoob.com/linux/linux-command-manual.html
这里 3台机器 zk1,zk2,zk3
各位同学可以自己修改host文件配置
在这里修改你服务器的ip地址,zk版本
直接上脚本内容:
#!/bin/bash
#server_addr
ip_addr1=zk1
ip_addr2=zk2
ip_addr3=zk3
zk_version=zookeeper-3.4.10
server_port=2888:3888
#需要换版本或地址 只需要把上面参数更换即可
#zk的压缩包名字
zk_tar=$zk_version.tar.gz
url=https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/$zk_version/$zk_version.tar.gz
home_dir1=/usr/local/src/zk1
home_dir2=/usr/local/src/zk2
home_dir3=/usr/local/src/zk3
zk_home1=$home_dir1/$zk_version
zk_home2=$home_dir2/$zk_version
zk_home3=$home_dir3/$zk_version
conf_dir1=$zk_home1/conf/zoo.cfg
conf_dir2=$zk_home2/conf/zoo.cfg
conf_dir3=$zk_home3/conf/zoo.cfg
#创建文件夹
mkdir $home_dir1
mkdir $home_dir2
mkdir $home_dir3
cd $home_dir1
#下载zk
wget $url
#解压
tar -xvf $zk_tar
rm -rf $zk_tar
cp $zk_home1/conf/zoo_sample.cfg $conf_dir1
#创建 log data文件夹
mkdir $zk_home1/logs
mkdir $zk_home1/data
#追加服务配置
sed -i '$a \server.1='$ip_addr1':'$server_port'\nserver.2='$ip_addr2':'$server_port'\nserver.3='$ip_addr3':'$server_port'' $conf_dir1
cp -rf $home_dir1/* $home_dir2/
cp -rf $home_dir1/* $home_dir3/
#---update file--更改zk1的文件
sed -i 's#/tmp/zookeeper#'$zk_home1'/data#' $conf_dir1
#添加log日志
sed -i '/^dataDir/a\dataLogDir='$zk_home1'/logs\' $conf_dir1
#设定ip
#sed -i 's/2181/'$3'/g' $new_file_path
#---update file--更改zk2的文件
sed -i 's#/tmp/zookeeper#'$zk_home2'/data#' $conf_dir2
#添加log日志
sed -i '/^dataDir/a\dataLogDir='$zk_home2'/logs\' $conf_dir2
#---update file--更改zk1的文件
sed -i 's#/tmp/zookeeper#'$zk_home3'/data#' $conf_dir3
#添加log日志
sed -i '/^dataDir/a\dataLogDir='$zk_home3'/logs\' $conf_dir3
#配置myid
touch $zk_home1/data/myid
touch $zk_home2/data/myid
touch $zk_home3/data/myid
echo 1 >$zk_home1/data/myid
echo 2 > $zk_home2/data/myid
echo 3 > $zk_home3/data/myid
运行脚本 :
sh zk_install.sh
运行后在/usr/local/src目录下会有3个文件
里面的配置以及完全配置好了
我们看看zk1文件里的conf下的zoo.cfg文件
再看看zk2文件里的conf下的zoo.cfg文件
同样的zk1 zk2 zk3下/data/myid文件 内容分别为
、、
到此为止 我们总共用了 一条命令就完成这个集群搭配了,只花了十多秒,但是还没有结束,
我们继续来输入两条命令
分别把zk2、zk3发送到服务器2、服务器3
复制目录:
命令格式:
scp -r local_folder remote_username@remote_ip:remote_folder
输入以下两条命令
scp -r /usr/local/src/zk2 root@zk2:/usr/local/src/
scp -r /usr/local/src/zk3 root@zk3:/usr/local/src/
由于有的人没有配置ssh免密登陆,所以没有吧这两条命令写进去脚本,这样适用范围更广。
经过上述3条命令之后,就可以启动zk集群了。
运行zookeeper
./zookeeper-3.4.10/bin/zkServer.sh start
./zookeeper-3.4.10/bin/zkServer.sh status
./zookeeper-3.4.10/bin/zkServer.sh stop