下载redis安装文件
地址:redis5.0.14下载地址
架构图
//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(如下图所示)
/etc/init.d/redis_6379 restart
主服务器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解压文件中,将哨兵文件复制到/etc/redis的目录下
cd /usr/software/redis-5.0.14
cp sentinel.conf /etc/redis/
编辑哨兵配置文件
vim sentinel.conf
关闭保护模式
增加哨兵监听的主节点,和选举节点数例如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 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存。Redis 在3.0版本前只支持单实例模式,虽然支持主从模式、哨兵模式部署来解决单点故障,但是现在互联网企业动辄大几百G的数据,可完全是没法满足业务的需求,所以,Redis 在 3.0 版本以后就推出了集群模式。
Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot,每个 Redis 实例负责其中一部分 slot 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。
Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。
搭建redis 集群最少需要3台,然后需要有主从机制,所以最少需要6个redis实例
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为需要替换的内容
其他机器。以其中一台机器为例
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