以下全是在CentOS-7中安装的 ,注意所有的redis服务密码保持一致123456
这种方式的话,单纯的只是作用缓存,来减少数据库压力
Redis 版本为redis-6.0.6 一般将文件放入/usr/local/redis/下面
mkdir -p /usr/local/redis/
cd /usr/local/redis/
1、下载redis包:
yum -y install wget
wget http://download.redis.io/releases/redis-6.0.6.tar.gz
2、解压:
tar -zxvf redis-6.0.6.tar.gz
3、安装reids需要的依赖工具
1、安装gcc套装:
yum install cpp &&
yum install binutils &&
yum install glibc &&
yum install glibc-kernheaders &&
yum install glibc-common &&
yum install glibc-devel &&
yum install gcc &&
yum install make
2、升级gcc
yum -y install centos-release-scl &&
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils &&
scl enable devtoolset-9 bash
3、设置永久升级:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
4、安装reids
进入redis文件夹:
cd /usr/local/redis/redis-6.0.6
然后直接 make
出现下面信息就安装成功了
5、单机版修改redis配置文件
vi /usr/local/redis/redis-6.0.6/redis.conf
bind xx #必须注释掉否则只能当前本机访问
protected-mode 改为no #支持外网访问
daemonize no 改成daemonize yes # 后台运行
requirepass 123456 #redis的密码
6、到这里就已经安装完成了,可以启动了。
/usr/local/redis/redis-6.0.6/src/redis-server /usr/local/redis/redis-6.0.6/redis.conf &
这种方式的话,可能会在redis中存储一些持久化的内容,比如分布式锁,或者其他数据…
那么我们为了实现Redis高可用就需要实现Redis主从配置,Redis最低1主2从 主节点写 , 从节点读
注意: 如果要是在从节点进行写
的话就会报错: (error) READONLY You can’t write against a read only replica.
master and slave | ip | port |
---|---|---|
master | 192.168.81.145 | 6379 |
slave1 | 192.168.81.146 | 6379 |
slave2 | 192.168.81.147 | 6381 |
主服务器配置
修改redis.conf文件如下
vi /usr/local/redis/redis-6.0.6/redis.conf
bind xxx #必须注释掉否则只能当前本机访问
protected-mode 改为no #支持外网访问
requirepass "123456" # 设置密码
daemonize no 改成daemonize yes # 后台运行
appendonly yes # 开启持久化
appendfsync 是always # 意思是每写一次就将该操作追加到aof的日志中,防止主节点宕机后数据丢失
2个从服务器配置
修改redis.conf文件如下
vi /usr/local/redis/redis-6.0.6/redis.conf
bind xxx #必须注释掉否则只能当前本机访问
protected-mode 改为no #支持外网访问
requirepass "123456" # 设置密码
daemonize 改成daemonize yes # 后台运行
# 指定主服务器,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
slaveof 192.168.81.145 6379
# 主服务器密码 没有的话跳过,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
masterauth 123456
上述内容主要是配置Redis从服务器,从服务器比主服务器多一个slaveof的配置和masterauth密码配置。
检查是否配置成功
进入192.168.81.145的控制台中输入下面命令
info replication
而从节点的话会显示 role:slave 自行检查
确认是否真从节点复制主节点的数据
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。
一、哨兵模式概述
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
这里的哨兵有两个作用
然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式。
用文字描述一下**故障切换(failover)**的过程。假设主服务器宕机,哨兵1先检测到这个结果,
系统并不会马上进行failover(故障切换)过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线。
当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。这样对于客户端而言,一切都是透明的。
一般哨兵模式都是配置3个哨兵和1主2从的Redis服务器来演示这个过程。
服务类型 | 是否是主服务器 | IP地址 | 端口 |
---|---|---|---|
Redis | 是 | 192.168.11.128 | 6379 |
Redis | 否 | 192.168.11.129 | 6379 |
Redis | 否 | 192.168.11.130 | 6379 |
Sentinel | - | 192.168.11.128 | 26379 |
Sentinel | - | 192.168.11.129 | 26379 |
Sentinel | - | 192.168.11.130 | 26379 |
主服务,修改redis.conf文件如下
vi /usr/local/redis/redis-6.0.6/redis.conf
bind xxx #必须注释掉否则只能当前本机访问
protected-mode 改为no #支持外网访问
requirepass "123456" # 设置密码
daemonize no 改成daemonize yes # 后台运行
appendonly yes # 开启持久化
appendfsync 是always # 意思是每写一次就将该操作追加到aof的日志中,防止主节点宕机后数据丢失
配置3个Redis的主从服务器,修改redis.conf文件如下
vi /usr/local/redis/redis-6.0.6/redis.conf
bind xxx #必须注释掉否则只能当前本机访问
protected-mode yes 改为no #支持外网访问
requirepass "123456" # 设置密码
daemonize 改成daemonize yes # 后台运行
# 指定主服务器,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
slaveof 192.168.81.145 6379
# 主服务器密码 没有的话跳过,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
masterauth 123456
配置3个哨兵,每个哨兵的配置都是一样的。在Redis安装目录下有一个sentinel.conf文件
vi /usr/local/redis/redis-6.0.6/sentinel.conf
# 禁止保护模式
protected-mode no
# 配置监听的主服务器,这里sentinel monitor代表监控,mymaster代表服务器的名称,可以自定义,
# 192.168.11.128代表监控的主服务器,6379代表端口,
# 2 代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。
sentinel monitor mymaster 192.168.11.128 6379 2
# sentinel author-pass定义服务的密码,mymaster是服务名称,123456是Redis服务器密码
sentinel auth-pass mymaster 123456
启动哨兵服务
/usr/local/redis/redis-6.0.6/src/redis-sentinel /usr/local/redis/redis-6.0.6/sentinel.conf &
注意启动的顺序。首先是主机的Redis服务,然后启动从机的服务,最后启动3个哨兵的服务。
Redis-cluster集群概念
一般是作用于数据分片,当一个redis不够用了, 需要多个master同时运转
集群节点复制
故障转移
Redis集群的主节点内置了类似Redis Sentinel的节点故障检测和自动故障转移功能,当集群中的某个主节点下线时,集群中的其他在线主节点会注意到这一点,并对已下线的主节点进行故障转移。
集群进行故障转移的方法和Redis Sentinel进行故障转移的方法基本一样,不同的是,在集群里面,故障转移是由集群中其他在线的主节点负责进行的,所以集群不必另外使用Redis Sentinel(哨兵)。
集群分片策略
Redis-cluster分片策略,是用来解决key存储位置的。
集群将整个数据库分为16384个槽位slot,所有key-value数据都存储在这些slot中的某一个上。一个slot槽位可以存放多个数据,key的槽位计算公式为:slot_number=crc16(key)%16384,其中crc16为16位的循环冗余校验和函数。
集群中的每个主节点都可以处理0个至16383个槽,当16384个槽都有某个节点在负责处理时,集群进入上线状态,并开始处理客户端发送的数据命令请求。
集群redirect转向
redis-cluster集群配置
服务类型 | 是否是主服务器 | IP地址 | 端口 |
---|---|---|---|
Redis1 | 是 | 192.168.11.128 | 6379 |
Redis2 | 是 | 192.168.11.129 | 6379 |
Redis3 | 是 | 192.168.11.130 | 6379 |
slave1 | 否 | 192.168.11.131 | 6379 |
slave2 | 否 | 192.168.11.132 | 6379 |
slave3 | 否 | 192.168.11.133 | 6379 |
每一个主节点必须对应一个子节点
主服务器配置
修改redis.conf文件如下
vi /usr/local/redis/redis-6.0.6/redis.conf
bind xxx #必须注释掉否则只能当前本机访问
protected-mode 改为no #支持外网访问
requirepass "123456" # 设置密码
daemonize no 改成daemonize yes # 后台运行
appendonly yes # 开启持久化
appendfsync 是always # 意思是每写一次就将该操作追加到aof的日志中,防止主节点宕机后数据丢失
cluster-enabled yes # 开启集群
从服务器配置
修改redis.conf文件如下
vi /usr/local/redis/redis-6.0.6/redis.conf
bind xxx #必须注释掉否则只能当前本机访问
protected-mode 改为no #支持外网访问
requirepass "123456" # 设置密码
daemonize 改成daemonize yes # 后台运行
# 指定主服务器,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
slaveof 192.168.81.145 6379
# 主服务器密码 没有的话跳过,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
masterauth 123456
上述内容主要是配置Redis从服务器,从服务器比主服务器多一个slaveof的配置和masterauth密码配置。
ps -aux | grep redis
结果如下图:
redis-cli是连接本地redis服务的一个命令,通过该命令后可以既然怒redis的脚本控制台。如下图
打开本地redis(客户端)
/usr/local/redis/redis-6.0.6/src/redis-cli
输入exit可以退出redis脚本控制台
如果是集群的话
客户端启动方式有些改变
/usr/local/redis/redis-6.0.6/src/redis-cli --cluster create 172.16.1.105:6379 172.16.1.105:6380 172.16.1.105:6381 172.16.1.105:6382 172.16.1.105:6383 172.16.1.105:6384 --cluster-replicas 1
在redis-cli 里输入 CONFIG get requirepass
会出现 (error) NOAUTH Authentication required.
决办法输入配置文件中,我们设置的密码
AUTH 123456
我们在配置文件中的密码就行这个
然后在输入 CONFIG get requirepass 就能出现你在配置文件中的密码了
查询redis程序: ps -aux | grep redis
杀死redis程序 kill -9 xxxid号 (root后面的就是 id)
kill -9 127170
firewall-cmd --zone=public --add-port=6379/tcp --permanent
redis里基本能让外网访问的配置都配了怎么外网还是访问不了??
我遇到问题是防火墙没有, 我从新安装一个防火墙,然后开启了对应的端口号就好了
永久解决办法:
如果没有防火墙的话先下载(有防火墙跳过)
1) yum install iptables
2) yum install iptables-services
然后执行下面命令
3)systemctl start firewalld
4)firewall-cmd --zone=public --add-port=6379/tcp --permanent
点赞 -收藏-关注-便于以后复习和收到最新内容有其他问题在评论区讨论-或者私信我-收到会在第一时间回复如有侵权,请私信联系我感谢,配合,希望我的努力对你有帮助^_^
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_45203607/article/details/124096194
内容来源于网络,如有侵权,请联系作者删除!