centos7脚本一键安装redis5.0.9集群

centos7脚本一键安装redis5.0.9集群

说明

1.本文分享,实现的是单机redis5.0.9三主三从的一键安装。
2.安装环境:在centos7和ubuntu7下,都可以一键安装成功。主要以centos7为准。
3.本安装是离线安装,不依赖网络。
4.端口是从8001~8006
5.无论防火墙是否启动。启动脚本中都进行了处理。都可以安装成功。
6.只有用root账号才能安装成功,非root用户,启动脚本会有提示。
7.如果用户环境安装的有redis5.0.9,并已经启动,需注意,该脚本会关闭redis5.0.9.因为会重新安装redis5.0.9
8.全程只需要上传本文提供的压缩包、脚本,启动脚本即可,不需其他任何操作
9.多机redis集群,亦可以参考本文。
10.最后贴出的是启动脚本链接和需要的资源链接。

使用方法

1.将redis_127.zip和start_redis_127.sh放到centos任意目录。
2.执行

sh start_redis_127.sh

30秒左右,集群就能安装完成

脚本和资源包

链接:https://pan.baidu.com/s/1ldxd70iDKKzhnO-ePtQpxQ
提取码:5y8h

启动脚本

#!/bin/sh

#解压资源,杀掉redis5.0.9的进程
function f_unzipAndStart(){
	resource_name="redis_127"
	
	#解压
	unzip -o ${resource_name}.zip

	#进入解压后的目录
	cd ${resource_name}

	#如果redis5.0.9进程存在,杀掉该进程
	sh ./kill.sh "default"

	FLAG=$? #接受执行kill.sh的结果
	if [ $FLAG != 0 ]
	then
		echo "------杀死redis进程失败,停止安装"
		exit;
	else
		sh ./install_redis_127.sh
	fi
}
f_unzipAndStart

主运行脚本

#!/bin/bash
#redis5.0集群

#1.先将gcc、gcc++、redis-5.0.9.tar.gz的包拷贝到/tmp下
#2.运行该脚本

#----------------------------------所有配置开始----------------------------------
#本机redis集群的开始端口号
START_PORT=8001

#集群ip1
REDIS_CLUSTER_IP_1="127.0.0.1"
#集群ip2
REDIS_CLUSTER_IP_2="127.0.0.1"
#集群ip3
REDIS_CLUSTER_IP_3="127.0.0.1"

#redis密码
PASSWORD="wang"

#本机部署的redis实例总数
SINGLE_MACHINE_CLUSTER_COUNT=6

#redis基础目录,reids-server、redis-cli都在该目录下
REDIS_BASE_PATH="/usr/local/redis-5.0.9"

#集群的目录
REDIS_CLUSTER_PATH="/usr/local/redis-cluster"

#防火墙状态
FIREWALLD_STATUS=`firewall-cmd --state`


#----------------------------------所有配置结束----------------------------------

#----------------------------------所有函数开始----------------------------------



#修改配置文件
#3个参数,参数1文件名,参数2:老字符串,参数3:新字符串
function f_editConfig(){
	#修改redis.conf中的参数----------start----------
	file_name=$1
	#传递参数1
	old_str=$2
	#参数2
	new_str=$3
	echo "$old_str   替换成---->   $new_str"
	sed -i "s|$old_str|$new_str|g" $file_name
	#修改redis.conf中的参数----------end----------
}

#判断是否root用户
function f_checkIsRoot(){
	if [ $UID -ne  0 ]
	then
		echo "-----------------------------------权限不足...请切换至root用户"
		exit;
	fi
}

#判断gcc、gcc++是否安装,如没有安装则安装
function f_setup_gcc(){
	gcc -v &>/tmp/null 
	FLAG=$? #接受gcc -v 命令的结果
	if [ $FLAG != 0 ]
	then
		#安装gcc和gcc++
		rpm -Uvh  ./gcc/*.rpm  --nodeps  --force;rpm -Uvh  ./gcc++/*.rpm  --nodeps  --force
	else
		echo "------gcc was setup------"
		echo "------redis is installing------"
	fi
}

#把端口添加到防火墙白名单
function f_addPortToFireWalld(){
	#如果防火墙开启,则将端口添加到防火墙
	#不为空,则说明防火墙开启
	if [ $FIREWALLD_STATUS ]
	then
		newPort=$1
		#redis总线端口,一个redis实例需要开启两个端口。一个是用户指定的,还有一个是在用户指定的端口基础上加10000得到的。
		#判断redis需要的端口是否已经开启,如果没有开启,则开启
		is_open=`firewall-cmd --query-port=${newPort}/tcp`
		if [ $is_open = "no" ];then
			firewall-cmd --zone=public --add-port=${newPort}/tcp --permanent
                echo "------${newPort}端口添加到防火墙白名单"
		fi
	fi
}

#重启防火墙
#如果防火墙处于开启状态,则重启防火墙
function f_restartFirewalld(){
	#不为空,则说明防火墙开启
	if [ $FIREWALLD_STATUS ];then
		systemctl restart firewalld
		echo "------防火墙重启"
	fi
}

#----------------------------------所有函数结束----------------------------------


f_checkIsRoot



#解压后,资源初始目录
START_PATH=`pwd`

cd $START_PATH
#wget http://download.redis.io/releases/redis-5.0.9.tar.gz

tar -xvzf redis-5.0.9.tar.gz
tar -xvzf gcc.tar.gz
tar -xvzf gcc++.tar.gz

rm -rf ${REDIS_BASE_PATH}
rm -rf ${REDIS_CLUSTER_PATH}
echo `pwd`
echo "${START_PATH}/redis-5.0.9"
cp -R ${START_PATH}/redis-5.0.9 /usr/local/

f_setup_gcc


#创建集群使用的基本目录
mkdir -p ${REDIS_CLUSTER_PATH}


#循环中
i=0
while (($i<$SINGLE_MACHINE_CLUSTER_COUNT))
do
port=`expr $START_PORT + $i`
	echo "--------------------------------端口:$port"
	#创建目录
	mkdir -p ${REDIS_CLUSTER_PATH}/${port}/

	#复制配置文件
	cp ${REDIS_BASE_PATH}/redis.conf "${REDIS_CLUSTER_PATH}/${port}/"

	#修改redis.config中的配置
	f_editConfig ${REDIS_CLUSTER_PATH}/${port}/redis.conf "daemonize no" "daemonize yes"
	f_editConfig ${REDIS_CLUSTER_PATH}/${port}/redis.conf "port 6379" "port ${port}"
	f_editConfig ${REDIS_CLUSTER_PATH}/${port}/redis.conf "dir ./" "dir ${REDIS_CLUSTER_PATH}/${port}/" #指定数据文件的保存位置
	f_editConfig ${REDIS_CLUSTER_PATH}/${port}/redis.conf "# cluster-enabled yes" "cluster-enabled yes"
	f_editConfig ${REDIS_CLUSTER_PATH}/${port}/redis.conf "# cluster-config-file nodes-6379.conf" "cluster-config-file nodes-${port}.conf"
	f_editConfig ${REDIS_CLUSTER_PATH}/${port}/redis.conf "# cluster-enabled yes" "cluster-enabled yes"
	f_editConfig ${REDIS_CLUSTER_PATH}/${port}/redis.conf "# cluster-node-timeout 15000" "cluster-node-timeout 5000"
	f_editConfig ${REDIS_CLUSTER_PATH}/${port}/redis.conf "bind 127.0.0.1" "#bind 127.0.0.1"
	f_editConfig ${REDIS_CLUSTER_PATH}/${port}/redis.conf "protected-mode yes" "protected-mode no"
	f_editConfig ${REDIS_CLUSTER_PATH}/${port}/redis.conf "appendonly no" "appendonly yes"

	#一个redis进程使用一个单独的pid
	f_editConfig ${REDIS_CLUSTER_PATH}/${port}/redis.conf "pidfile /var/run/redis_6379.pid" "pidfile /var/run/redis_${port}.pid"
	
        f_editConfig ${REDIS_CLUSTER_PATH}/${port}/redis.conf "# requirepass foobared" "requirepass ${PASSWORD}"
        f_editConfig ${REDIS_CLUSTER_PATH}/${port}/redis.conf "# masterauth <master-password>" "masterauth ${PASSWORD}"

	#改变循环变量
        i=`expr $i + 1`
done

cd ${REDIS_BASE_PATH}

make MALLOC=libc

#编译
#make test 

#安装
make && make install 

#启动并指定配置文件
#src/redis-server redis.conf &


#启动每个redis实例
i=0
while (($i<$SINGLE_MACHINE_CLUSTER_COUNT))
do
port=`expr $START_PORT + $i`
	#启动redis实例
	/usr/local/redis-5.0.9/src/redis-server /usr/local/redis-cluster/$port/redis.conf;
        i=`expr $i + 1`
	f_addPortToFireWalld $port
done

f_restartFirewalld


#启动集群,只有安装好所有节点后,才可以随意一个节点使用该命令启动集群:

echo yes|/usr/local/redis-5.0.9/src/redis-cli -a wang --cluster create --cluster-replicas 1 ${REDIS_CLUSTER_IP_1}:8001 ${REDIS_CLUSTER_IP_1}:8002 ${REDIS_CLUSTER_IP_2}:8003 ${REDIS_CLUSTER_IP_2}:8004 ${REDIS_CLUSTER_IP_3}:8005 ${REDIS_CLUSTER_IP_3}:8006


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值