自动化搭建redis集群的shell脚本

     最新闲来无事自学了redis,发现搭建环境太过麻烦,便写了个脚本实现一键搭建集群

#!/bin/bash
#author:tuhao
#date:2017-04-05
install_yum () {
	echo "开始安装redis集群依赖ruby库,请稍等..."
	#解决yum update时候出现Another app is currently holding the yum lock
	rm -rf /var/run/yum.pid && rm -rf /var/lib/rpm/.rpm.lock 
	rm -rf time.out
	sleep 5s
	#搭建redis集群需要的库
	yum -y install ruby  
	yum -y install ruby-devel 
	yum -y install rubygems
	yum -y install rpm-build  
	gem install redis
}
getIP () {
	ifconfig $(getEth) | grep 'inet addr' | awk '{print $2}' | awk -F: '{print $2}'
}
getGetway () {
	route -n | grep UG | gawk '{print $2}'
}
getEth () {
	route -n | grep $(getGetway) | gawk '{print $8}'
}
getver () {
	redis-cli -v | gawk '{print $2}'
}
install ()
{	 		
	if redis-cli -v > /dev/null 2>&1 
	then 
		echo -e "$WHITE 当前系统已安装redis环境,版本号:$(getver)${RES}"
	else  
		#jdk安装文件存在下一步安装操作
		if [ -e redis-*.tar.gz ]
		then
			echo -e "$WHITE 开始安装redis,请稍候...${RES}"
			#首先删除安装目录下所有以jdk1.开头的文件夹
			rm -rf /usr/local/redis.*
			#然后解压tar.gz包到安装目录下
			tar -zxvf redis-*.tar.gz -C /usr/local
			name1=`ls /usr/local | grep redis-`
			cd /usr/local/$name1
			pwd
			make && make install
			echo -e "$WHITE redis安装完成!${RES}"
		else
			echo -e "${RED_COLOR} 安装目录下redis安装文件不存在,请上传该文件到此目录下!${RES}"
		fi
	fi
}
redisPath=/usr/local/redis-cluster
mkdieFile () {
	
	[ -d $redisPath ] && rm -rf $redisPath
	mkdir $redisPath
	echo -e "请选择创建redis节点数量:"
	while [ 1 = 1 ]
	do
		read NO
		if  [[ -n "$NO" && "$NO" -gt 0 ]] ;then
			cd $redisPath
			while(( ${NO} >= 1))
			do
				mkdir redis$NO
				NO=$(($NO-1))
			done
			break
		else
			echo -e "输入有误,请输入正确的数字:"
		fi	
	done
}
createColony () {
	#redis目录名称
	local name=`ls /usr/local | grep redis-`
	[ ! -f /usr/local/$name/redis.conf  ] && echo "redis.conf文件不存在,请检查redis是否安装成功!!" && exit 1
	[ ! -f /usr/local/$name/src/redis-trib.rb  ] && echo "redis-trib.rb文件不存在,请检查redis是否安装成功!!" && exit 1
	mkdieFile
	#拷贝redis.conf文件
	cp -rf /usr/local/$name/src/redis-trib.rb /usr/local/redis-cluster
	port=7000
	for page in `ls /usr/local/redis-cluster`
	do
		if [ -d $page ]
		then
			cp -rf /usr/local/$name/redis.conf $page
			sed -i "s/^daemonize no/daemonize yes/" $page/redis.conf
			sed -i "s/^# cluster-enabled yes/cluster-enabled yes/" $page/redis.conf
			sed -i "s/^port 6379/port $port/" $page/redis.conf
			echo $(getIP):$port >> $redisPath/prot.info
			port=$(($port+1))
			
		fi
	done
	echo "redis.conf文件修改成功,开始启动redis节点,请稍等..."
	startColony
	[ $? -eq 0 ] && echo "redis节点启动成功,开始创建redis集群!"
	cd  $redisPath
	install_yum
	./redis-trib.rb  create  --replicas  1  `cat  /usr/local/redis-cluster/prot.info`
	rm -rf /usr/local/redis-cluster/prot.info
	[ $? -eq 0 ] && echo "redis集群创建成功."
}

startColony () {

	for page1 in `ls /usr/local/redis-cluster`
	do
		if [ -d /usr/local/redis-cluster/$page1 ]
		then
			cd /usr/local/redis-cluster/$page1
			redis-server redis.conf
		fi
	done
}
stopColony () {
	#杀死节点进程
	killall redis-server > /dev/null
	for page1 in `ls /usr/local/redis-cluster`
	do
		if [ -d /usr/local/redis-cluster/$page1 ]
		then
			cd /usr/local/redis-cluster/$page1
			rm -rf dump.rdb
			rm -rf nodes.conf
		fi
	done

}
uninstall () {
	echo  "开始卸载redis,请稍等...."
	stopColony
	rm -rf /usr/local/bin/redis*
	name2=`ls /usr/local | grep redis-`
	rm -rf $name2
	rm -rf $redisPath
	source /etc/profile
	echo  "redis卸载成功."
}

if [ "$1" = "uninstall" ]; then
	uninstall
#覆盖安装,即先卸载,后重新安装	
elif [ "$1" = "replace" ]; then 
	uninstall
	sleep 5
	install
	createColony
elif [ "$1" = "install" ]; then
	install
	createColony
elif [ "$1" = "stop" ]; then
	stopColony
elif [ "$1" = "start" ]; then
	startColony
fi


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值