redis的主从复制与哨兵模式的搭建

目录

1.主从复制的原理

2.实战redis主从复制

2.1 安装redis

2.2 配置主服务器

2.3 测试

3. 哨兵模式

3.1 哨兵模式的定义

3.2 哨兵模式的架构框图

 3.3 功能作用

3.4 故障切换的过程

3.5 工作方式

4. 搭建哨兵模式

4.1 三个节点修改哨兵配置文件sentinel.conf 

4.2 开启sentinel

4.2.1 常见报错与警告

5. 在master上查看信息

6. 模拟主机宕机

7. 再次查看配置文件

8.故障转移的具体步骤介绍

9. sentinel 模拟下的几个事件

1.主从复制的原理

slave启动成功连接到master后会发一个sync命令。

master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步。

redis的主从复制与哨兵模式的搭建_第1张图片

2.实战redis主从复制

192.168.150.19 主服务器
192.168.150.10 从服务器
192.168.150.11 从服务器

注意防火墙 selinux iptables 时间同步等。

2.1 安装redis

首先给三台服务器分别安装 redis.

2.2 配置主服务器

1 、进入主服务器,打开 redis 配置文件,修改 protected yes no ,即关闭保护模式让其他主机也能连接
2 、将 bind 127.0.0.1 这行注释或者指定 ip 。(本例是注释,即所有 ip 都能连接)
3、开启守护进程 daemonize yes
4 、设置访问密码(由于 redis 性能非常高,撞库风险极大,建议线上把密码设置非常复杂,最好能在第 2 步中指定ip)。
、 
5、保护模式关闭 protected-mode no
 
启动 redis 服务。
2.3 配置从服务器
1-5 步与主服务器配置基本一致
6、配置所属主服务器 ip 和端口
redis的主从复制与哨兵模式的搭建_第2张图片

 

7、 配置所属主服务器的密码
redis的主从复制与哨兵模式的搭建_第3张图片

 

2.3 测试

进入主服务器
[root@192 redis-6.2.3]# src/redis-cli
127.0.0.1:6379> auth 201104
OK
127.0.0.1:6379> keys *
1) "name"
2) "num"
127.0.0.1:6379> set key1 1
OK
127.0.0.1:6379>
如果从服务器可以查询到主服务器的数据代表配置成功, 如果在从服务器上写,则会报错,如下图
[root@192 redis-6.2.3]# src/redis-cli
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 201104
OK
127.0.0.1:6379> keys *
1) "key1"
2) "name"
3) "num"
127.0.0.1:6379> set key2 2
(error) READONLY You can't write against a read only replica.
127.0.0.1:6379> get key1
"1"
[root@192 redis-6.2.3]# src/redis-cli
127.0.0.1:6379> auth 201104
OK
127.0.0.1:6379> keys *
1) "num"
2) "name"
3) "key1"
127.0.0.1:6379> set key2 2
(error) READONLY You can't write against a read only replica.
127.0.0.1:6379> get key2
(nil)
127.0.0.1:6379> get key1
"1"
至此,redis主从复制配置并验证完成

3. 哨兵模式

主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事 费力,还会造成一段时间内服务不可用 。哨兵模式就是为了解决此类问题而产生的。

3.1 哨兵模式的定义

Sentinel( 哨兵 ) 是用于监控 redis 集群中 Master 状态的工具,是 Redis 的高可用性解决方案, sentinel 哨兵模式已经被集成在redis2.4 之后的版本中。 sentinel 系统可以监视一个或者多个 redis master 服务,以及这些 master 服务的所有slave ;当某个 master 服务下线时,自动将该 master 下的 slave 升级为 master 服务替代已下线的 master 服务继续处理请求。

sentinel可以让redis实现主从复制,当一个集群中的master失效之后,sentinel可以选举出一个新的master用于自动接替master的工作,集群中的其他redis服务器自动指向新的master同步数据。一般建议sentinel采取奇数台,防止某一台sentinel无法连接到master导致误切换。

3.2 哨兵模式的架构框图

redis的主从复制与哨兵模式的搭建_第4张图片

 3.3 功能作用

监控 (monitoring) Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
提醒 (Notifation) :当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障转移 (Automatic failover) :当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。

3.4 故障切换的过程

假设主服务器宕机,哨兵 1 先检测到这个结果,系统并不会马上进行 failover 过程, 仅仅是哨兵 1 主观的认为主服务器不可用,这个现象称为 主观下线
当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵 之间就会进行一次投票,投票的结果由一个哨兵发起,进行 failover 操作。切换成功后,就会通过发布订阅模式, 让各个哨兵把自己监控的从服务器实现切换主机 ,这个过程称为 客观下线
这样对于客户端而言,一切都是不透明的,客户端并不知晓。切换后,主备redis 配置文件 redis.conf 和主备 redis sentinel.conf 的内容都会发生改变,即主redis redis.conf 中会多一行 slaveof 的配置, sentinel.conf 的监控目标会随之调换。
监控同一个 Master Sentinel 会自动连接,组成一个分布式的 Sentinel 系统,互相通信并交换彼此关于被监视服务器的信息。

3.5 工作方式

redis的主从复制与哨兵模式的搭建_第5张图片

4. 搭建哨兵模式

在主从复制的基础上搭建哨兵模式

192.168.150.19 slave
192.168.150.10 master
192.168.150.11 slave

4.1 三个节点修改哨兵配置文件sentinel.conf 

redis的主从复制与哨兵模式的搭建_第6张图片

 可使用scp命令将主节点的cp过去,都不用变

scp sentinel 192.168.150.11:/root/redis-6.2.3/

4.2 开启sentinel

注意启动的顺序。首先是主机(server1)的Redis服务进程,然后启动从机的Redis服务进程src/redis-server redis.conf,最后启动3个哨兵的服务进程。

src/redis-server redis.conf

src/redis-server sentinel.conf --sentinel

4.2.1 常见报错与警告

redis的主从复制与哨兵模式的搭建_第7张图片

 提示socket连接数设置的太低了,需要修改后重启服务就不会有警告提示了

echo 1024 > /proc/sys/net/core/somaxconn
REDIS 哨兵启动报 MASTER SDOWN 的解决办法

原因是没有设置节点认证的密码,也就是我的redis设置了节点通信的密码,那么在哨兵里面也是需要配置的。

 redis的主从复制与哨兵模式的搭建_第8张图片

主节点可以查看到如下信息,slave两个节点已经加入

redis的主从复制与哨兵模式的搭建_第9张图片 

5. 在master上查看信息

[root@192 redis-6.2.3]# src/redis-cli
127.0.0.1:6379> auth 201104
OK
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.150.19,port=6379,state=online,offset=102691,lag=1
slave1:ip=192.168.150.11,port=6379,state=online,offset=102834,lag=0
master_failover_state:no-failover
master_replid:21d1d39c51f28ec83b4f2336e5a09b3202d91152
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:102834
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:102834

6. 模拟主机宕机

redis的主从复制与哨兵模式的搭建_第10张图片

此时我们,在slave上,可以看到订阅的消息 

redis的主从复制与哨兵模式的搭建_第11张图片

此时,我们可以看到192.168.150.19变为master 

 我们在将192.168.150.10的redis恢复

src/redis-server redis.conf

 此时,在10上,我们可以看到,10重新上线后,是192.168.42.19)的备机。

7. 再次查看配置文件

查看slave(192.168.150.10)redis.conf

redis的主从复制与哨兵模式的搭建_第12张图片

 说明10是19的slave

redis的主从复制与哨兵模式的搭建_第13张图片

 哨兵文件自动添加

查看192.168.150.11的文件

redis的主从复制与哨兵模式的搭建_第14张图片

说明11是19的slave

redis的主从复制与哨兵模式的搭建_第15张图片 

8.故障转移的具体步骤介绍

  • 从下线的主服务的所有从服务里面挑选一个从服务,将其转成主服器
  • 已下线主服务的所有从服务改为复制新的主服务
  • 将已下线的主服务设置成新的主服务的从服务,当其回复正常时,复制新的主服务,变成新的主服务的从服务

9. sentinel 模拟下的几个事件

redis的主从复制与哨兵模式的搭建_第16张图片

 

你可能感兴趣的:(redis,数据库,缓存,运维,服务器)