web安全入门-redis服务器集群的搭建

现在的服务都设立集群模式,既是我们以前的主备冗余,当我们通过某种方式获得某服务器的控制权之后,使其宕机已经对用户没有什么影响了。

这时代,信息和数据才是核心的资产。(加密与解密会是未来安全方向)

下面我们来学习下redis服务的一主二从三哨兵。

redis服务

Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

集群架构

简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。这些服务器之间可以彼此通信,协同向用户提供应用程序,系统资源和数据,并以单一系统的模式加以管理。当用户请求集群系统时,集群给用户的感觉就是一个单一独立的服务器,而实际上用户请求的是一组集群服务器。

web安全入门-redis服务器集群的搭建

不同的业务会有若干秒的切换时间,DB业务明显长于Web业务切换时间。

redis服务安装

我们安装三台redis服务,操作系统为centos 7

web安全入门-redis服务器集群的搭建

IP地址段规划为这样

一主,二备,三哨兵(哨兵每个机器上设置)

安装依赖包

yum install -y gcc

安装gcc编译环境

web安全入门-redis服务器集群的搭建

安装中

web安全入门-redis服务器集群的搭建

安装完成

下载安装包

我们联网使用wget下载安装包

wget https://download.redis.io/releases/redis-7.0.2.tar.gz

web安全入门-redis服务器集群的搭建

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

web安全入门-redis服务器集群的搭建

解压安装包

tar -zxf redis-7.0.2.tar.gz

web安全入门-redis服务器集群的搭建

解压之后,查看目录

web安全入门-redis服务器集群的搭建

cd redis-7.0.2/

进行编译

make

web安全入门-redis服务器集群的搭建

编译安装

make install

默认安装在 /usr/local/bin/目录,这个目录默认就在系统环境变量中。

需要更改可以在后面接PREFIX = 安装路径

web安全入门-redis服务器集群的搭建

安装完成

启动redis

redis-server

web安全入门-redis服务器集群的搭建

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

web安全入门-redis服务器集群的搭建

ctrl + c 终止服务

关闭服务

./redis-cli shutdown

设置开机启动

systemctl enable redis

启动服务

systemctl start redis

停止服务

systemctl stop redis

查看服务状态

systemctl status redis

redis服务的一主二备三哨兵

默认redis支持分布式部署。

要修改模式,就要修改配置文件。

web安全入门-redis服务器集群的搭建

主从模式

web安全入门-redis服务器集群的搭建

哨兵监控

web安全入门-redis服务器集群的搭建

一主二从三哨兵模式

配置文件

修改原redis.conf配置文件

目录在

web安全入门-redis服务器集群的搭建

我们按照网上大神的配置

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后默认开启

允许远程连接

web安全入门-redis服务器集群的搭建

设置后台启动

web安全入门-redis服务器集群的搭建

关闭保护模式

web安全入门-redis服务器集群的搭建

开启AOF持久化配置

appendonly yes

配置参数可以参考

web安全入门-redis服务器集群的搭建

主机配置

# 所有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

效果如下

web安全入门-redis服务器集群的搭建

从机效果

web安全入门-redis服务器集群的搭建

主机效果

有两个从机。

发表评论

相关文章