现在的服务都设立集群模式,既是我们以前的主备冗余,当我们通过某种方式获得某服务器的控制权之后,使其宕机已经对用户没有什么影响了。
这时代,信息和数据才是核心的资产。(加密与解密会是未来安全方向)
下面我们来学习下redis服务的一主二从三哨兵。
redis服务
Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
集群架构
简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。这些服务器之间可以彼此通信,协同向用户提供应用程序,系统资源和数据,并以单一系统的模式加以管理。当用户请求集群系统时,集群给用户的感觉就是一个单一独立的服务器,而实际上用户请求的是一组集群服务器。

不同的业务会有若干秒的切换时间,DB业务明显长于Web业务切换时间。
redis服务安装
我们安装三台redis服务,操作系统为centos 7

IP地址段规划为这样
一主,二备,三哨兵(哨兵每个机器上设置)
安装依赖包
安装gcc编译环境

安装中

安装完成
下载安装包
我们联网使用wget下载安装包
wget https://download.redis.io/releases/redis-7.0.2.tar.gz

也可以提前进行下载好安装包

解压安装包
tar -zxf redis-7.0.2.tar.gz

解压之后,查看目录

进行编译

编译安装
默认安装在 /usr/local/bin/目录,这个目录默认就在系统环境变量中。
需要更改可以在后面接PREFIX = 安装路径

安装完成
启动redis

如果出现如上图所示,代表服务成功

ctrl + c 终止服务
关闭服务
设置开机启动
启动服务
停止服务
查看服务状态
redis服务的一主二备三哨兵
默认redis支持分布式部署。
要修改模式,就要修改配置文件。

主从模式

哨兵监控

一主二从三哨兵模式
配置文件
修改原redis.conf配置文件
目录在

我们按照网上大神的配置
1.先在网络部分注释掉单机连接那一行,即注释掉bind 127.0.0.1
2.同样我们要将后台运行打开:daemonize no,设置为yes。
3.将 保护模式关闭:protected-mode yes 改为:protected-mode no
4.打开RDB持久化配置:
#RDB持久化策略 默认三种方式,[900秒内有1次修改],
#[300秒内有10次修改],[60秒内有10000次修改]即触发RDB持久化,
#我们可以手动修改该参数或新增策略
save 900 1
save 300 10
save 60 10000
#RDB文件名
dbfilename dump.rdb
#RDB文件存储路径
dir ./
策略配置:
#在seconds秒内有changes次数据修改就触发RDB持久化
5.开启AOF持久化配置
appendonly yes
#AOF文件名
appendfilename "appendonly.aof"
#AOF文件存储路径 与RDB是同一个参数,共用一个文件路径
dir ./ #即bin目录下
#AOF策略,一般都是选择第一种[always:每个命令都记录],
#[everysec:每秒记录一次],[no:看机器的心情高兴了就记录,linux一般半个小时同步一次]
#appendfsync always
appendfsync everysec
# appendfsync no
#aof文件大小比起上次重写时的大小,增长100%(配置可以大于100%)时,触发重写。
#[假如上次重写后大小为10MB,当AOF文件达到20MB时也会再次触发重写,以此类推
auto-aof-rewrite-percentage 100
#aof文件大小超过64MB*2时,触发重写,
#为何要乘以2,因为auto-aof-rewrite-percentage 100 是翻倍即100%,
#达到翻倍时才重写
auto-aof-rewrite-min-size 64mb
6.打开混合持久化:
#6.aof-use-rdb-preamble yes # 检查混合持久化是否打开,redis5.0后默认开启
允许远程连接

设置后台启动

关闭保护模式

开启AOF持久化配置
配置参数可以参考

主机配置
# 所有ip均可访问
bind 0.0.0.0
# 启动端口6379
port 6379
# redis进程是否以守护进程的方式运行,yes为是,no为否(不以守护进程的方式运行会占用一个终端)
protected-mode no
# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码,开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和bind,可以开启。否则最好关闭设置为no
daemonize yes
# 日志
logfile ./redis.log
# 设置redis连接密码,如果配置了连接密码,客户端在连接redis是需要通过auth <password>命令提供密码,默认关闭
requirepass 123456
# 当master设置了密码保护时,slave服务连接master的密码(主从配置时,必须要设置此密码)
masterauth 123456
从机配置
注意:老版本使用slaveof指定主机的IP和端口,新版本使用replicaof指定主机的IP和端口
注意:由于搭建的集群需要自动容灾切换,主数据库可能会变成从数据库,所以三台机器上都需要同时设置 requirepass 和 masterauth 配置项
bind 0.0.0.0
port 6379
protected-mode no
daemonize yes
logfile ./redis.log
requirepass 123456
masterauth 123456
# 指定当本机为 slave 服务时,设置 master 服务的IP地址及端口,在 redis 启动的时候会自动跟 master 进行数据同步,所以两台从机同样配置。(主从配置时,必须要设置此密码)
slaveof 192.168.130.1 6379
哨兵配置
哨兵模式需要修改sentinel.conf文件,三台服务器均为此配置
# 端口默认为26379。
port 26379
# 关闭保护模式,可以外部访问。
protected-mode no
# 设置为后台启动。
daemonize yes
# 日志文件。
logfile ./sentinel.log
# 指定主机IP地址和端口(三台配置均为指定主机ip),并且指定当有2台哨兵认为主机宕机,则对主机进行容灾切换。mymaster:设置master名字,必须在其它有用到该名字的命令之前设置
sentinel monitor mymaster 192.168.130.1 6379 2
# 当在Redis实例中开启了requirepass,这里就需要提供密码。
sentinel auth-pass mymaster 123456
# 这里设置了主机多少秒无响应,则认为挂了。此处3秒
sentinel down-after-milliseconds mymaster 3000
# 主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。
snetinel parallel-syncs mymaster 1
# 故障转移的超时时间,这里设置为三分钟。
sentinel failover-timeout mymaster 180000
启动哨兵模式
./redis-sentinel ../sentinel.conf
登录:
./redis-cli -p 26379
1、登录主机redis:./redis-cli -p 6379
2、手动下线:shutdown
3、若有新的主机被选举出,则表示成功
防火墙配置
查看防火墙是否开启:
systemctl status firewalld
开启防火墙:
systemctl start firewalld
开放端口:
firewall-cmd --add-port=6379/tcp --permanent --znotallow=public
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
# 关闭防火墙
systemctl stop firewalld
效果如下

从机效果

主机效果
有两个从机。