单个机器部署redis集群模式(一键部署脚本)

一、检查机器是否安装gcc、unzip、wget

 

二、部署模式

#模式1: 将所有主从节点以及sentinel节点部署在同一台机器上

#模式2: 将一个数据节点和一个sentinel节点部署在一台机器上,如master+sentinel1,slave1+sentinel2

#模式3: 将所有节点分开部署

 

三、一键部署脚本

1、在/root/test/目录下创建目录7001 7002 7003 7004 7005 7006 以及env

##7001~7006目录用来存放redis的配置文件redis.conf,env用来存放生成的公共配置文件redis-env.conf

for ((i=1;i<=6;i++))
do
mkdir -p /root/test/700${i} env
done

2、进入env目录,创建公共配置文件redis-env.conf

cd env

echo -e "port 7001\ncluster-enabled yes\ndir /root/test/7001\ncluster-config-file nodes-7001.conf\npidfile "/root/test/7001/redis-7001.pid"\nlogfile "/root/test/7001/redis-7001.log"\nappendonly yes" > "redis-env.conf"

注意:绑定本机IP的配置得加上注释,不然别的IP访问不了你的redis服务;也可以使用本机的内容IP

Redis配置文件之include、network、general 可以参考https://www.jianshu.com/p/51c0ee9317b3

3、拷贝公共配置文件redis-env.con 到7001~7006目录下,并根据端口修改redis-env.conf 传递的端口值以及文件名包含7001的字段

for ((i=1;i<=6;i++))
do

cp /root/test/env/redis.conf /root/test/700${i}
sed -i "s/7001/700${i}/g" /root/test/700${i}/redis.conf
done

4、检查wget是否已经安装

check_results1=`rpm -qa | grep "wget"`
if [[ $check_results1 =~ "wget" ]]
then
    echo "package wget has already installed. "
else
    echo "This is going to install package wget"
        yum install wget -y
fi

5、下载redis安装包,并解压

#安装redis
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
#解压安装包
tar -zxvf redis-5.0.5.tar.gz

6、进入解压目录,编译

#编译
cd redis-5.0.5
make
#make install

7、启动redis各个节点

(1)方式一:进入redis解压得到的目录,创建脚本 start.sh

cd /root/test/redis-5.0.5
vim start.sh
# 内容如下

./src/redis-server /root/test/7001/redis.conf &
./src/redis-server /root/test/7002/redis.conf &
./src/redis-server /root/test/7003/redis.conf &
./src/redis-server /root/test/7004/redis.conf &
./src/redis-server /root/test/7005/redis.conf &
./src/redis-server /root/test/7006/redis.conf &

 

保存退出,并且赋予脚本权限

chmod +x start.sh

检查redis启动是否成功

ps -ef |grep redis

 

(2)方式二:进入/root/test 目录创建 start.sh 脚本

#启动redis各个节点
for((i=1;i<=6;i++))
do
cd 700${i}
/root/test/redis-5.0.5/src/redis-server /root/test/700${i}/redis.conf &
cd ..
done

保存退出,并且赋予脚本权限

chmod +x start.sh

检查redis启动是否成功

ps -ef |grep redis

8、创建redis集群

./redis-5.0.5/src/redis-cli --cluster create --cluster-replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

现在高版本的redis-cli已经支持集群了,不再需要安装ruby了。

9、判断 Can I set the above configuration? (type 'yes' to accept): 则输入yes

 

10、一键关闭redis-server脚本

ps -ef | grep redis-server | grep -v grep | awk '{print $2}' | xargs kill -9

 11、删除redis集群

(1)关闭redis-server服务

(2)将各个节点的cluster-config-file nodes-7001.conf 文件删除掉

(3)重新启动redis

(4)创建redis集群

 

四、整理代码

1、一键部署代码

##1、在/root/test/目录下创建目录7001 7002 7003 7004 7005 7006 以及env
##7001~7006目录用来存放redis的配置文件redis.conf,env用来存放生成的公共配置文件redis-env.conf
for ((i=1;i<=6;i++))
do
mkdir -p /root/test/700${i} /root/test/env
done

##2、进入env目录
cd /root/test/env

echo -e "port 7001\ncluster-enabled yes\ndir /root/test/7001\ncluster-config-file nodes-7001.conf\npidfile "/root/test/7001/redis-7001.pid"\nlogfile "/root/test/7001/redis-7001.log"\nappendonly yes" > "redis-env.conf"

##3、拷贝公共配置文件redis-env.con 到7001~7006目录下,并根据端口修改7001
for ((i=1;i<=6;i++))
do

cp /root/test/env/redis-env.conf /root/test/700${i}/redis.conf
sed -i "s/7001/700${i}/g" /root/test/700${i}/redis.conf
done

##4、下载安装redis


#检查wget
check_results1=`rpm -qa | grep "wget"`
if [[ $check_results1 =~ "wget" ]]
then
echo "package wget has already installed. "
else
echo "This is going to install package wget"
yum install wget -y
fi

cd /root/test
#安装redis
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
#解压安装包
tar -zxvf redis-5.0.5.tar.gz
#编译
cd /root/test/redis-5.0.5
make
#make install

cd /root/test/redis-5.0.5

echo '打印当前路径'

pwd

##5启动redis各个节点
for((i=1;i<=6;i++))
do
./src/redis-server /root/test/700$i/redis.conf &
sleep 1
done

cd /root/test/redis-5.0.5
sleep 1
#创建集群
./src/redis-cli --cluster create --cluster-replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

 

# 注意创建集群时,需要手动输入yes

 2、关闭redis-server 服务,并删除创建的7001~7006 目录下的nodes文件

echo "正在关闭redis-server..."
ps -ef | grep redis-server | grep -v grep | awk '{print $2}' | xargs kill -9
ps -ef |grep redis
sleep 3
echo "正在删除redis的nodes文件..."
for ((i=1;i<=6;i++))
do
rm -rf  /root/test/700${i}/nodes-700${i}.conf
echo "删除700${i}目录下的nodes文件"
done

 

 

posted @ 2019-11-08 19:13  北向。  阅读(1642)  评论(0编辑  收藏  举报