一、三个节点该脚本执行脚本

#!/bin/bash
Tar_Path=/tmp/packge/test/
Tar_Directory=redis-3.2.1/
Packge_Name=/tmp/packge/redis-3.2.1.tar.gz
Ports=(
7000
7001
)
Ip_Local=`ip addr|grep -w inet|grep -v "127.0.0.1"|awk -F '[ /]+' '{print $3}'`


#redis安装
tar -xf $Packge_Name -C $Tar_Path
cd ${Tar_Path}$Tar_Directory
make >/dev/null 2>&1
if [ $? -eq 1 ];then
  echo -e "\033[31m make&&make install failed! \033[0m"
fi
make install >/dev/null 2>&1


#redis集群配置
if [ $? -eq 0 ];then
	echo -e "\033[31m redis download successfully \033[0m"
	cp src/redis-trib.rb /usr/local/bin/ 
	for port in ${Ports[*]}
	do 
		mkdir -p redis_cluster/$port
		cp redis.conf redis_cluster/$port/
		sed -i "84s/6379/$port/" redis_cluster/$port/redis.conf
		sed -i "61s/127.0.0.1/$Ip_Local/" redis_cluster/$port/redis.conf
		sed -i '128s/no/yes/' redis_cluster/$port/redis.conf
		sed -i "150s/6379/$port/" redis_cluster/$port/redis.conf
		sed -i '692s/#//' redis_cluster/$port/redis.conf
		sed -i '706s/#//' redis_cluster/$port/redis.conf
		sed -i '564s/no/yes/' redis_cluster/$port/redis.conf
		sed -i "700a cluster-config-file  nodes_${port}.conf" redis_cluster/$port/redis.conf
		redis-server redis_cluster/$port/redis.conf
		sleep 1
	done
else
	 echo -e "\033[31m make&&make install failed! \033[0m"
fi

二、在任意一个节点执行该脚本

#!/bin/bash
#redis创建集群
Redis_gem=/tmp/packge/redis-3.2.1.gem
Ports=(
7000
7001
)

Ips=(
172.16.17.14
172.16.17.15
172.16.2.22
)
#依赖包
Packeges=(
ruby
ruby-devel
rubygems
rpm-build
expect
)


Packege_install()
#Packege下载函数;将要下载的包定义在Packeges数组;仅支持yum下载
{
for packege in ${Packeges[*]}
  do
    yum install -y $packege >/dev/null 2>&1
    if [ $? -eq 0 ];then
      echo -e "\033[31m {$packege} was successfully downloaded! \033[0m"
    else
      echo -e "\033[31m {$packege} download failed! \033[0m"
      exit 1
    fi
  done
}


Packege_install
gem install -l $Redis_gem >/dev/null 2>&1
if [ $? -eq 0 ];then
	expect -c "
		spawn redis-trib.rb create --replicas 1 ${Ips[0]}:${Ports[0]} ${Ips[0]}:${Ports[1]} ${Ips[1]}:${Ports[0]} ${Ips[1]}:${Ports[1]} ${Ips[2]}:${Ports[0]} ${Ips[2]}:${Ports[1]}
		expect {
			\"Can I set the above configuration? (type 'yes' to accept):\" {send \"yes\r\"; exp_continue}
		}
	expect eof" >/dev/null 2>&1
	if [ $? -eq 0 ];then
		echo -e "\033[31m {auth}:redis-trib.rb check $Ip_Local:${Ports[0]} \033[0m"
		echo -e "\033[31m {login cluster}:redis-cli -h $Ip_Local -c -p ${Ports[0]} \033[0m"

	fi
else 
	echo -e "\033[31m Redis_gem install failed! \033[0m"
fi