注意:可以查看Redis官网查看集群搭建方式,连接如下

https://redis.io/topics/cluster-tutorial

集群中应该至少有三个节点,每个节点有一备份节点。需要6台服务器。

如果条件有限,可以搭建伪分布式,以下步骤是在一台 Linux 服务器上搭建有6个节点的 Redis集群。

准备工作:安装依赖包

[root@localhost ~]#yum install -y gcc g++ make gcc-c++ kernel-devel automake autoconf libtool make wget tcl vim  unzip git

1.创建目录并进入

命令:mkdir /usr/local/redis-cluster

命令:cd  /usr/local/redis-cluster

2.下载源码包并解包编译安装

命令:wget http://download.redis.io/releases/redis-5.0.5.tar.gz             #安装redis5.0.5版本

命令:tar -zvxf  redis-5.0.5.tar.gz               #解包

3.进入redis目录里,开始编译并安装

命令:cd redis-5.0.5             #进入目录里如果有这个Makefile就可以编译安装了

命令:make                            #编译

命令:make install PREFIX=/usr/local/redis     #编译安装并将redis放在/usr/local/redis下,这样就可以直接使用redis

好了,现在redis已经安装成功

4.创建6个redis配置文件(注意:6个配置文件不能放在同一个目录之内)

命令:[root@localhost redis-5.0.5]# cp /usr/local/redis-cluster/redis-5.0.5/redis.conf /usr/local/redis/bin

命令:[root@localhost redis-5.0.5]# cd /usr/local/redis

命令:[root@localhost redis]# cp -r /usr/local/redis/bin /usr/local/redis-cluster/redis01

命令:[root@localhost redis]# cd /usr/local/redis-cluster/redis01

命令:[root@localhost redis01]# vim redis.conf          #修改配置文件

配置文件的修改路径为:

1)port 7001    #端口

2)cluster-enabled yes       #启用集群模式

3)cluster-config-file nodes.conf        #设置对应端口,不输入的话就是默认port端口

4)cluster-node-timeout 5000       #超时时间

5)appendonly yes         #开启持久化模式

6)daemonize yes          #后台运行

7)protected-mode no         #非保护模式

8)pidfile /var/run/redis_7001.pid      #防止启动多个进程副本,只启动7001

(知识扩展:进程运行后会给.pid文件加一个文件锁,只有获得该锁的进程才有写入权限(F_WRLCK),

把自身的pid写入该文件中,其他试图获得该锁的进程会自动退出。)

9)bind 172.20.10.7            #127.0.0.1改为本机ip地址,可用 ifconfig 或 ip a 查看ip

这样配置文件就已经做好了,接下来保存退出,然后创建其他5个节点

5.创建其他5个节点

命令:cd     /usr/local/redis-cluster/       #进入redis目录下

[root@localhost redis-cluster]# cp -r redis01  redis02
[root@localhost redis-cluster]# cp -r redis01  redis03
[root@localhost redis-cluster]# cp -r redis01  redis04
[root@localhost redis-cluster]# cp -r redis01  redis05
[root@localhost redis-cluster]# cp -r redis01  redis06        #将配置目录复制5份

然后修改配置文件:分别修改redis02 ~ redis06 的 redis.conf下的port 和 pidfile

修改内容:

1)port 7001

2)pidfile /var/run/redis_7001.pid

6.启动节点

有两种方法启动

命令:cd  /usr/local/redis-cluster

1)分别进入redis01、redis02、...redis06目录,执行: ./redis-server ./redis.conf

2)做一个脚本执行    start-all.sh

脚本内容如下:

cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..

然后添加权限执行脚本就行了

命令:chmod u+x start-all.sh          #给脚本添加权限

命令:./start-all.sh

然后顺便看一下节点是否启动成功

命令:ps aux | grep redis

7.启动集群

因为我们使用的5.0.0以上的版本的Redis搭建的集群只需要把编译后的redis目录中的这个redis-cli文件拷贝到redis-cluster目录过来就可以了

至于redis-cli在/usr/local/redis-cluster/redis-5.0.5/src下就可以找到,然后复制到/usr/local/redis-cluster下就可以了

命令:cp -r    /usr/local/redis-cluster/redis-5.0.5/src/redis-cli   /usr/local/redis-cluster

命令:/usr/local/redis-cluster/redis-cli --cluster create 192.168.100.248:7001 192.168.100.248:7002 192.168.100.248:7003 192.168.100.248:7004

192.168.100.248:7005 192.168.100.248:7006 --cluster-replicas 1               #启动命令(注意:根据自己的IP启动)

到这个地方,就做完了redis集群启动成功

8.集群的操作

关闭集群,在create-cluster目录下编写脚本文件:vim shutdown.sh

脚本内容如下:

/usr/local/redis-cluster/redis-cli -c -h 192.168.100.248 -p 7001 shutdown
/usr/local/redis-cluster/redis-cli -c -h 192.168.100.248 -p 7002 shutdown
/usr/local/redis-cluster/redis-cli -c -h 192.168.100.248 -p 7003 shutdown
/usr/local/redis-cluster/redis-cli -c -h 192.168.100.248 -p 7004 shutdown
/usr/local/redis-cluster/redis-cli -c -h 192.168.100.248 -p 7005 shutdown
/usr/local/redis-cluster/redis-cli -c -h 192.168.100.248 -p 7006 shutdown
然后给脚本添加权限并执行此文件

命令:chmod u+x shutdown.sh

命令:./shutdown.sh

查看redis集群状态

命令:ps aux|grep redis

知识扩展:

官方:/usr/local/redis-cluster/redis-cli -a xxx -c -h 192.168.100.248 -p 7001

提示:-a访问服务端密码,-c表示集群模式,-h指定ip地址,-p指定端口号

9.重新启动集群

在start-all.sh脚本的最后添加/usr/local/redis-cluster/redis-cli --cluster create 192.168.100.248:7001 192.168.100.248:7002 192.168.100.248:7003

192.168.100.248:7004 192.168.100.248:7005 192.168.100.248:7006 --cluster-replicas 注意:使用自己本机的IP

然后执行脚本就可以了

命令:./start-all.sh

10.测试集群

在redis-cluster目录下执行

命令:redis01/redis-cli -h 192.168.100.248 -p 7002 -c        (注意:用自己的IP)

命令:cluster nodes                 #查询集群结点信息

命令:cluster info                     # 查询集群状态信息

(知识扩展:设置主从密码)

需要在redis01~redis06的配置文件里redis.conf修改这两行

masterauth 123456 #主从密码

requirepass 123456 #访问密码

然后重启服务

总结:。。。。。。。。。。。。。。。。。(此处省略一万字)

Linux(Centos7)下redis5缓存服务集群分布式搭建的更多相关文章

  1. centos7下安装zookeeper&zookeeper集群的搭建

    一.centos7下安装zookeeper 1.zookeeper 下载地址 https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 2.安装步骤 ...

  2. Linux(Centos7)下redis5集群搭建和使用

    1.简要说明 2018年十月 Redis 发布了稳定版本的 5.0 版本,推出了各种新特性,其中一点是放弃 Ruby的集群方式,改为 使用 C语言编写的 redis-cli的方式,是集群的构建方式复杂 ...

  3. Linux(Centos7)下redis5安装、部署、开机自启

    1.什么是redis redis是用C语言开发的一个开源的高性能键值对(key-value)数据库.它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止redis支持的键值数据类型如下字符串 ...

  4. Linux Centos7.5中的RocketMQ集群部署

    系统环境 Docker > centos7.5 此镜像已经安装了jdk1.8和maven3.6.0 如果你想知道这个基础镜像的具体情况, 参考此文: https://www.cnblogs.co ...

  5. centos7下安装部署mongodb集群(副本集模式)

    环境需求:Mongodb集群有三种模式:  Replica Set, Sharding,Master-Slaver.  这里部署的是Replica Set模式. 测试环境: 这里副本集(Replica ...

  6. STORM_0004_windows下zookeeper的伪集群的搭建

    -----------------------------------------------------START------------------------------------------ ...

  7. CentOS下RabbitMq高可用集群环境搭建

    准备工作 1,准备两台或多台安装有rabbitmq-server服务的服务器 我这里准备了两台,分别如下: 192.168.40.130 rabbitmq01192.168.40.131 rabbit ...

  8. (2)虚拟机下hadoop1.1.2集群环境搭建

    hadoop集群环境的搭建和单机版的搭建差点儿相同,就是多了一些文件的配置操作. 一.3台主机的hostname改动和IP地址绑定 注意:以下的操作我都是使用root权限进行! (1)3太主机的基本网 ...

  9. 分享在Linux下使用OSGi.NET插件框架快速实现一个分布式服务集群的方法

    在这篇文章我分享了如何使用分层与模块化的方法来设计一个分布式服务集群.这个分布式服务集群是基于DynamicProxy.WCF和OSGi.NET插件框架实现的.我将从设计思路.目标和实现三方面来描述. ...

随机推荐

  1. java之中PriorityQueue实现原理(具有优先级的队列)

    使用大顶堆无限制大小.如果用顺序表实现,插入的时候麻烦,如果用链表(无序)实现得到最大优先级数据的时候麻烦.使用堆可以使两者得到中和.Lucene使用小顶堆定长实现,对于大量数据处理有利.

  2. tensorflow service部署

    tensorflow+tensorflow-serving+docker+grpc模型上线部署(不需bazel编译,有代码)[https://blog.csdn.net/u013714645/arti ...

  3. android中常用的注解说明

    1.@Nullable  作用于函数参数或者返回值,标记参数或者返回值可以为空. 2,@NonMull 作用于函数参数或者返回值,标记参数或者返回值不可以为空. 3.@LayoutRes 标记整数值a ...

  4. OpenCV 中获取图像或矩阵最大、最小值的简便方法

    C++: void minMaxLoc(InputArray src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc ...

  5. QA Issue: PN: startUp is upper case, this can result in unexpected behavior. [uppercase-pn]

    (借用一下) 该错误直接导致生成开机启动程序无法启动,既无法生成S99***快捷链接. 解决方法:仅仅将recpie lib-Test改成lib-test就可以了,即不要有大写字母. 附启动方法: S ...

  6. P2077 【红绿灯】

    我tm真是想不出来还有什么好玩的东西了~~ 这题是一道纯模拟题,只需要用一个变量表示当前汽车行驶了多少分钟 不难发现,这个神奇的变量可以直接用m表示,还可以省去一个变量...(好像并没有什么卵用) 具 ...

  7. 微信小程序开发(三)----- 云开发案例

    1.发送请求 2.云函数中发送请求,例子request https://github.com/request/request-promise    创建云函数movielist,右键在终端打开,输入  ...

  8. PTA(Basic Level)1013.数素数

    令 *P**i* 表示第 i 个素数.现任给两个正整数 M≤N≤104,请输出 *P**M* 到 *P**N* 的所有素数. 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔. 输出格式: 输 ...

  9. Java计算两个时间的天数差与月数差 LocalDateTime

    /**  * 计算两个时间点的天数差  * @param dt1 第一个时间点  * @param dt2 第二个时间点  * @return int,即要计算的天数差  */ public stat ...

  10. 【洛谷p1781】宇宙总统

    宇宙总统[题目链接] 关于题目算法,其实就是考排序,那我们直接sort不就好啦,显然不能. 这个题让我重新认识了cmp函数: 以下是我的心路历程: 看到这个题,嗯?这么简单的吗,我直接sort不就好啦 ...