一、检查机器是否安装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=;i<=;i++))
do
mkdir -p /root/test/${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//redis-.pid"\nlogfile "/root/test//redis-.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=;i<=;i++))
do cp /root/test/env/redis.conf /root/test/${i}
sed -i "s/7001/700${i}/g" /root/test/${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..tar.gz

6、进入解压目录,编译

#编译
cd redis-5.0.
make
#make install

7、启动redis各个节点

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

cd /root/test/redis-5.0.
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=;i<=;i++))
do
cd ${i}
/root/test/redis-5.0./src/redis-server /root/test/${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  127.0.0.1: 127.0.0.1: 127.0.0.1: 127.0.0.1: 127.0.0.1: 127.0.0.1:

现在高版本的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 -
ps -ef |grep redis
sleep
echo "正在删除redis的nodes文件..."
for ((i=;i<=;i++))
do
rm -rf /root/test/${i}/nodes-${i}.conf
echo "删除700${i}目录下的nodes文件"
done

单个机器部署redis集群模式(一键部署脚本)的更多相关文章

  1. 5分钟实现用docker搭建Redis集群模式和哨兵模式

    如果让你为开发.测试环境分别搭一套哨兵和集群模式的redis,你最快需要多久,或许你需要一天?2小时?事实是可以更短. 是的,你已经猜到了,用docker部署,真的只需要十几分钟. 一.准备工作 拉取 ...

  2. 7.redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?

    作者:中华石杉 面试题 redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗? 面试官心理分析 在前几年, ...

  3. 突破Java面试-Redis集群模式的原理

    1 面试题 Redis集群模式的工作原理说一下?在集群模式下,key是如何寻址的?寻址都有哪些算法?了解一致性hash吗? 2 考点分析 Redis不断在发展-Redis cluster集群模式,可以 ...

  4. Redis集群模式之分布式集群模式

    前言 Redis集群模式主要有2种: 主从集群 分布式集群. 前者主要是为了高可用或是读写分离,后者为了更好的存储数据,负载均衡. 本文主要讲解主从集群.本章主要讲解后一半部分,Redis集群. 与本 ...

  5. Centos7部署Redis集群

    Redis简介 Redis(Remote Dictionary Server)是完全开源的.遵守BSD协议的.高性能的Key-Value数据库. Redis与其他Key-Value缓存产品有一下三个特 ...

  6. Redis集群命令行部署工具

    使用之前准备工作: 1)配置好与端口无关的公共redis.conf文件,和工具放在同一目录下 2)配置好与端口相关的模板redis-PORT.conf文件,也和工具放在同一目录下(部署时PORT会被替 ...

  7. laravel项目利用twemproxy部署redis集群的完整步骤

    Twemproxy是一个代理服务器,可以通过它减少Memcached或Redis服务器所打开的连接数.下面这篇文章主要给大家介绍了关于laravel项目利用twemproxy部署redis集群的相关资 ...

  8. Redis集群模式配置

    redis集群部署安装: https://blog.csdn.net/huwh_/article/details/79242625 https://www.cnblogs.com/mafly/p/re ...

  9. Centos6.6部署Redis集群

    Centos6.6部署Redis集群 1环境准备 1环境安装redis 1安装ruby 2配置redis主从环境 3部署redis sentinel服务器 5集群使用 13当前集群环境说明 13测试功 ...

随机推荐

  1. spring事务实现的几种方式

    1.编程式事务管理对基于POJO的应用来说是唯一选择. 需要在代码中调用 beginTransaction() commit() rollback()等事务管理相关的方法. 2.基于Transacti ...

  2. 提交disable的Select值到后台

    需求:界面上把select控件disable,然后将默认值传到后台 问题1:select disable: js中可以这样写: document.getElementById("provin ...

  3. iptables 防火墙(上)

    iptables 防火墙(上) 1. 防火墙概述 1.1 概念与作用 网络中的防火墙是一种将内部网络和外部网络分开的方法,是一种隔离技术.防火墙在内网与外网通信时进行访问控制,依据所设置的规则对数据包 ...

  4. 前端学习(十八)js的json(笔记)

    json: 数组:        1.有序        var arr=[2,1,3,4] arr[0]; 2.有length 3.普通for 4.下标数字 5.添加删除 splice json:  ...

  5. 【sql】牛客网练习题 (共 61 题)

    [1]查找最晚入职员工的所有信息 CREATE TABLE `employees` ( `emp_no` ) NOT NULL, `birth_date` date NOT NULL, `first_ ...

  6. 使用eclipse开发java web网页

    前面说了手动配置一个应用,手动配置可以更深入的理解web应用的分布,但是一般的编辑器没有语法错误提示,所以开发起来对于错误的寻找不太容易,效率相对较低,所以在理解清楚web项目的结构之后,我们使用ec ...

  7. C# 16进制转字符串,字符串转16进制

    { //========================================================== //16进制转字符串 public static byte[] HexTo ...

  8. 8、iota枚举

    1.iota常量自动生成器,每一行,自动累加1 2.iota给常量赋值使用 3.如果iota遇到const,就会重置为0 4.可以可以只写一个iota 5.如果是同一行,值是一样的 // 09_iot ...

  9. 【Dart学习】-- Dart之匿名方法 & 回调函数 & 闭包

    一,匿名方法定义 (参数1,参数2,....){ 方法体... return 返回值 } 二,匿名方法特性 可赋值给变量,通过变量进行调用 可在其他方法中直接调用或传递给其他方法 void main( ...

  10. 欧拉降幂,基本计算定理——cf615D

    用基本算数定理求约数和的思想来计算, 首先用pi,ci来表示第i个质数,指数为i,然后对于每个pi,pi^2...都有指数为mul{(c_1+1)(c_2+1)(c_i-1+1)(c_i+1+1).. ...