前言
单机部署
检查安装 gcc 环境
- -- 检查版本
- gcc --version
- -- 安装 gcc
- yum install gcc
下载安装 Redis
- -- 创建目录,⽂件归类
- mkdir -p /opt/software/redis
- -- 进⼊redis⽂件夹,使⽤wget下载
- cd /opt/software/redis
- wget https://download./redis-stable.tar.gz
- -- 解压下载的redis包
- tar -xzf redis-stable.tar.gz
- -- 进⼊redis-stable⽬录,然后使⽤make install 编译并安装,安装完成后 /usr/local/bin 会⽣成相应的服务
- cd redis-stable
- make install
- -- 检查是否成功⽣成
- ll /usr/local/bin
文件介绍:
-
redis-benchmark:性能测试⼯具
-
redis-check-aof:修复有问题的 aof ⽂件
-
redis-check-rdb:修复有问题的rdb⽂件
-
redis-sentinel:Redis集群使⽤
-
redis-server:Redis服务器启动命令
-
redis-cli:客户端,操作⼊⼝
启动 Redis
在/opt/software/redis/redisstable/src 或者 /usr/local/bin ⽬录下的 redis-server 启动
- -- Redis 源码路径下启动
- ./src/redis-server
- -- 使⽤usr/local/bin 路径下启动(该⽬录下或者不在该目录下也可以启动)
- redis-server
关闭 Redis
- -- 退出 redis客户端
- quit
- 或
- ctrl + c
- -- 关闭 redis
- redis-cli shutdown
配置Redis
- -- 修改当前Redis⽬录下/opt/software/redis/redis-stable的 Reids.conf ⽂件
- vi redis.conf
配置如下:
- #88⾏,修改bind 项,* -::* ⽀持远程连接
- bind * -::*
- #310⾏,开启守护进程,后台运⾏
- daemonize yes
- #356⾏,指定⽇志⽂件⽬录
- logfile /opt/software/redis/redis-stable/redis.log
- #516⾏,指定⼯作⽬录
- dir /opt/software/redis
- #1051⾏,给默认⽤户设置密码,主要是使⽤ redis-cli 连接 redis-server时,需要通过密码校验。⾃⾏学习,可以不设置。
- #requirepass admin
- #112⾏,允许远程连接 如果不设置密码必须讲此设置关闭。
- protected-mode no
- #根据redis配置,启动redis
- redis-server redis.conf
- #连接 redis
- redis-cli
- #如果设置密码,则需要验证权限
- auth admin
主从部署
主从复制,是指将⼀台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且⼀个主节点可以有多个从节点(或没有从节点),但⼀个从节点只能有⼀个主节点。
整体架构图
主从复制的作⽤
- 数据冗余:主从复制实现了数据的热备份,是持久化之外的⼀种数据冗余⽅式。
- 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是⼀种服务的冗余。
- 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应⽤连接 主节点,读Redis数据时应⽤连接从节点),分担服务器负载;尤 其是在写少读多的场景下,通过多个从节点分担读负载,可以⼤ ⼤提⾼Redis服务器的并发量。
- ⾼可⽤基⽯:除了上述作⽤以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis⾼可⽤的基础。
主从复制缺点
- 复制延时,信号衰减
- master挂了如何办?
哨兵模式配置
- #6⾏,关闭保护模式
- protected-mode no
- #15⾏,指定sentinel为后台启动
- daemonize yes
- #34⾏,指定⽇志存放路径
- logfile /opt/software/redis/redis-stable/sentinel.log
- #73⾏,指定数据库存放路径
- dir /opt/software/redis
- #93⾏,修改 指定该哨兵节点监控20.0.0.20:6379这个主节点,该主节点的名称是mymaster,最后的2的含义#与主节点的故障判定有关:⾄少需要2个哨兵节点同意,才能判定主节点故障并进⾏故障转移
- sentinel monitor mymaster 192.168.18.201 6379 2
- #134⾏,判定服务器down掉的时间周期,默认30000毫秒(30秒)
- sentinel down-after-milliseconds mymaster 30000
- #234⾏,故障节点的最⼤超时时间为180000(180秒)
- sentinel failover-timeout mymaster 180000
注意: 哨兵的端口是 26379 , 防火墙需要开放端口.
启动哨兵
redis-sentinel sentinel.conf
redis-cli -p 26379 info sentinel
验证
- -- 直接停掉主节点服务
- redis-cli shutdown
- -- 观察哨兵⽇志,主节点下线,重新选举另一个节点为主节点
- tail -f sentinel.log
在另一台以前是从节点的服务器查询, 发现切换成主节点了
redis-cli info replication
拓展命令:
- -- 停⽌哨兵
- redis-cli -p 26379 shutdown
哨兵模式的作用
- 主从监控:监控reids主从是否正常运行
- 消息通知:哨兵可以将故障转移的结果发送给客户端
- 故障转移:如果Master异常,则会进行主从切换,将其中一个Slave作为新的Master
- 配置中心:客户端通过连接哨兵来获得当前Redis服务的主节点地址
集群部署(Cluster)
哨兵模式仍然面临内存容量和写入性能的限制,因为这种模式的写入能力仍然局限于单个节点。为了解决这一问题,Redis在3.x版本之后推出了Cluster集群模式。Cluster模式通过数据分片和节点的水平扩展,实现了更高效的内存利用和写入性能。
整体架构图
集群模式配置
三主三从模式配置
- -- 创建集群配置⽂件夹,另外两个机器重复这个过程
- mkdir -p /opt/software/redis/redis-stable/cluster
- mkdir -p /opt/software/redis/cluster
6379 配置
vim ./cluster/redis_6379.conf
将下面内容复制进redis_6379.conf文件
# 允许所有的IP地址bind * -::*# 后台运⾏daemonize yes# 允许远程连接protected-mode no# 开启集群模式cluster-enabled yes# 集群节点超时时间cluster-node-timeout 5000# 配置数据存储⽬录dir “/opt/software/redis/cluster”# 开启AOF持久化appendonly yes# 端⼝port 6379# log⽇志logfile “/opt/software/redis/redis-stable/cluster/redis6379.log”# 集群配置⽂件cluster-config-file nodes-6379.conf# AOF⽂件名appendfilename “appendonly6379.aof”# RBD⽂件名dbfilename “dump6379.rdb”
6380 配置
vim ./cluster/redis_6380.conf
将下面内容复制进redis_6380.conf文件
# 允许所有的IP地址bind * -::*# 后台运⾏daemonize yes# 允许远程连接protected-mode no# 开启集群模式cluster-enabled yes# 集群节点超时时间cluster-node-timeout 5000# 配置数据存储⽬录dir “/opt/software/redis/cluster”# 开启AOF持久化appendonly yes# 端⼝port 6380# log⽇志logfile “/opt/software/redis/redis-stable/cluster/redis6380.log”# 集群配置⽂件cluster-config-file nodes-6380.conf# AOF⽂件名appendfilename “appendonly6380.aof”# RBD⽂件名dbfilename “dump6380.rdb”
启动 Redis
- redis-server ./cluster/redis_6379.conf
- redis-server ./cluster/redis_6380.conf
其他两台机器重复上面的操作.
注意: 启动 redis 时, 要注意 以前启动的redis和哨兵需要关闭
- # 查看运行中的进程信息
- netstat -ntlp
然后使用kill pid 命令删除这个进程
- #关闭哨兵
- kill 29733
- #关闭redis
- kill 20317
创建集群模式
当三台机器的6台redis都启动完成, 则使用以下命令,创建集群.
- -- 创建三主三从集群模式,每⼀个主节点带⼀个从节点
- redis-cli --cluster create --cluster-replicas 1 192.168.75.129:6379 192.168.75.129:6380 192.168.75.131:6379 192.168.75.131:6380 192.168.75.132:6379 192.168.75.132:6380
查看集群信息
- -- 查看集群信息
- redis-cli cluster info
- -- 查看单个节点信息
- redis-cli info replication
- -- 查看集群节点身份信息
- redis-cli cluster nodes
注意: 集群用到的端口会加10000,所以16379和16380 端口的防火墙也要开放.
总结
edis主从:可实现高并发(读),典型部署方案:一主二从
redis哨兵:可实现高可用,典型部署方案:一主二从三哨兵
redis集群:可同时支持高可用(读与写)、高并发,典型部署方案:三主三从
三者之间对比: