redis高可用实战(主从、哨兵、集群)

文章目录

  • redis主从
    • 在所有机器上安装redis
    • 主从服务实现
    • 验证主从服务
  • redis哨兵模式
  • redis高可用集群

redis主从

下载redis安装文件
地址:redis5.0.14下载地址
架构图

redis高可用实战(主从、哨兵、集群)_第1张图片

在所有机器上安装redis

//1、上传离线包至指定路径
cd /usr/software/
rz 
//2、解压文件
tar -zxvf  redis-5.0.14.tar.gz 

//3、安装redis编译环境gcc
yum install -y  gcc
//4、 安装redis
make && make install

//5、将redis设置为系统的服务
cd redis-5.0.14/utils
./install_server.sh

//6、更改相关配置以使外界可以访问(如下图)
 vim /etc/redis/6379.conf 
找到第70行的bind  后面写0.0.0.0
/etc/init.d/redis_6379 stop
/etc/init.d/redis_6379 start  
//7、设置为开机自启动
chkconfig redis_6379 on

主从服务实现

服务器:10.0.8.150

vim /etc/redis/6379.conf
增加配置 replicaof 10.0.8.149 6379(如下图所示)

redis高可用实战(主从、哨兵、集群)_第2张图片
重启redis 服务

/etc/init.d/redis_6379 restart

在这里插入图片描述
同理在服务10.0.8.152执行上述操作

验证主从服务

主服务器10.0.8.149

[root@test1 software]# redis-cli
127.0.0.1:6379> set test001 1000
OK

从服务器10.0.8.150
在这里插入图片描述
从服务器10.0.8.152
在这里插入图片描述
到此redis的主从服务搭建完毕

redis哨兵模式

架构图
redis高可用实战(主从、哨兵、集群)_第3张图片
主节点(10.0.8.149):

首先进入到redis解压文件中,将哨兵文件复制到/etc/redis的目录下
cd /usr/software/redis-5.0.14
cp sentinel.conf /etc/redis/
编辑哨兵配置文件
vim sentinel.conf
关闭保护模式
redis高可用实战(主从、哨兵、集群)_第4张图片
增加哨兵监听的主节点,和选举节点数例如2(只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行,即2个以上同意才能进行故障迁移)

sentinel monitor mymaster 10.0.8.149 6379 2

保存配置文件
将以上修改好的配置文件发送给所有从节点
从节点 10.0.8.150

scp sentinel.conf root@10.0.8.150:/etc/redis/

从节点 10.0.8.152

scp sentinel.conf root@10.0.8.152:/etc/redis/

配置文件修改完毕
接下来就是开启所有服务器哨兵模式(所有主从服务器上逐一开启)

redis-sentinel /etc/redis/sentinel.conf

1)停掉现在的Redis-master info 查看 replication 信息

[root@server2 ~]# redis-cli -p 26379
127.0.0.1:26379> info
master0:name=mymaster,status=ok,address=10.0.8.149:6379,slaves=2,sentinels=3[root@server2 ~]# redis-cli
127.0.0.1:6379> SHUTDOWN
not connected>
[root@server2 ~]# redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>
[root@server2 ~]# redis-cli -p 26379
127.0.0.1:26379> info
master0:name=mymaster,status=ok,address=10.0.8.152:6379,slaves=2,sentinels=3
127.0.0.1:26379>

2)查看任意一台redis主机的监控日志

[root@server4 ~]# redis-sentinel /etc/redis/sentinel.conf

+switch-master :配置变更,主服务器的 IP 和地址已经改变 由之前的10.0.8.149 更改为10.0.8.152。
+sdown :给定的实例 server2现在处于主观下线状态。
在原先的master被停掉后,通过选举产生新的master 10.0.8.152 6379

redis高可用集群

Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存。Redis 在3.0版本前只支持单实例模式,虽然支持主从模式、哨兵模式部署来解决单点故障,但是现在互联网企业动辄大几百G的数据,可完全是没法满足业务的需求,所以,Redis 在 3.0 版本以后就推出了集群模式。

Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot,每个 Redis 实例负责其中一部分 slot 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。
Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。
搭建redis 集群最少需要3台,然后需要有主从机制,所以最少需要6个redis实例
redis高可用实战(主从、哨兵、集群)_第5张图片
1、创建集群文件夹

 //创建集群文件夹
 mkdir /usr/software/redis-cluster/
 //创建 不同实例文件夹
 mkdir  redis9001 redis9002
 //将安装好的redis文件拷贝到实例文件夹下
 cp -r ../../redis-5.0.14/*  redis9001/
 cp -r ../../redis-5.0.14/*  redis9002/
 //新建数据集群文件夹
 mkdir redis9001/data    redis9002/data

2、复制执行脚本

//创建执行集群脚本目录
mkdir  /usr/software/redis-cluster/bin
//复制执行文件
cp -f  mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-sentinel redis-cli redis-server redis-trib.rb /usr/software/redis-cluster/bin/

3、修改各实例redis.conf,采用搜索模式更改

port 9001(每个节点的端口号)
daemonize yes
bind 192.168.119.131(绑定当前机器 IP)
dir /usr/local/redis-cluster/9001/data/(数据文件存放位置)
pidfile /var/run/redis_9001.pid(pid 9001和port要对应)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes9001.conf(9001和port要对应)
cluster-node-timeout 15000
appendonly yes
//**后面SpringBoot集成时对密码为强制要求,需建议密码统一**
masterauth redis123456(主节点密码)
requirepass redis123456 

更改后复制到其他实例
本机实例9002:

 cp redis.conf  ../redis9002/

修改端口号:采用替换模式命令行出%s/9001/9002/g,前面9001标识查找的内容,后面9002为需要替换的内容
redis高可用实战(主从、哨兵、集群)_第6张图片
其他机器。以其中一台机器为例
1、新建集群文件夹

 //创建集群文件夹
 mkdir /usr/software/redis-cluster/

2、使用scp命令复制10.0.8.149上的文件,以其中一台举例
scp /usr/software/redis-cluster/* [email protected]:/usr/software/redis-cluster/
修改文件夹名称

mv redis9001 redis9003
mv redis9002 redis9004

修改配置不同实例下配置文件,采用替换方式,替换端口号,替换ip
实例9003

vim redis.conf
%s/9001/9003/g
%s/10.0.8.149/10.0.8.150/g

实例9004

vim redis.conf
%s/9002/9004/g
%s/10.0.8.149/10.0.8.150/g

另外一台机器同上操作,只是修改为不同的端口和ip
6个节点搭建完成,启动6个节点
redis-server …/redis.conf
找到其中一个节点测试

/usr/software/redis-cluster/bin/redis-cli -h 10.0.8.149 -p 9001
set name mafly

执行发现报错
(error) CLUSTERDOWN Hash slot not served(不提供集群的散列槽),这是什么鬼?
这是因为虽然我们配置并启动了 Redis 集群服务,但是他们暂时还并不在一个集群中,互相直接发现不了,而且还没有可存储的位置,就是所谓的slot(槽)。
3.安装集群所需软件
由于 Redis 集群需要使用 ruby 命令,所以我们需要安装 ruby 和相关接口。

yum install ruby
yum install rubygems
gem install redis 

创建真正的集群

 redis-cli --cluster create 10.0.8.149:9001 10.0.8.149:9002 10.0.8.150:9003 10.0.8.150:9004 10.0.8.152:9005 10.0.8.152:9006 --cluster-replicas 1

查看集群是否创建成功

//客户端连接
redis-cli -c -h 10.0.8.149 -p 9001
//查看集群信息
cluster info
//查看节点信息
cluster nodes

redis高可用实战(主从、哨兵、集群)_第7张图片
查看节点信息
在这里插入图片描述
设置值,校验是否集群成功
在这里插入图片描述

你可能感兴趣的:(Redis,redis,缓存,数据库)