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

    技术2022-07-10  97

    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
    Processed: 0.010, SQL: 9