|NO.Z.00036|——————————|^^ 部署 ^^|——|Hadoop&Redis.V04|——|Redis.v04|高可用|哨兵模式|高可用配置|

一、哨兵模式
### --- 哨兵

~~~     哨兵(sentinel)是Redis的高可用性(High Availability)的解决方案:
~~~     由一个或多个sentinel实例组成sentinel集群可以监视一个或多个主服务器和多个从服务器。
~~~     当主服务器进入下线状态时,sentinel可以将该主服务器下的
~~~     某一从服务器升级为主服务器继续提供服务,从而保证redis的高可用性。
二、部署方案
三、搭建配置
### --- 部署流程

~~~     在一台机器上采用伪分布式的方式部署。(生产环境应该是多台机器)
~~~     根据上面的部署方案搭建如下:
    Redis-Master :127.0.0.1 6379
### --- 采用安装的方式,正常安装和配置

~~~     # 安装redis5.0
[root@hadoop servers]# mkdir -p redis-ms/redis-master
[root@hadoop software]# cd redis-5.0.5/src/
[root@hadoop src]# make
[root@hadoop src]# make install PREFIX=/opt/yanqi/servers/redis-ms/redis-master/
[root@hadoop src]# cp /opt/yanqi/software/redis-5.0.5/redis.conf /opt/yanqi/servers/redis-ms/redis-master/bin/
~~~     # 修改redis.conf

[root@hadoop src]# vim /opt/yanqi/servers/redis-ms/redis-master/bin/redis.conf
daemonize yes                       # 将`daemonize`由`no`改为`yes`
#bind 127.0.0.1                     # 注销:默认绑定的是回环地址,默认不能被其他机器访问
protected-mode no                   # 是否开启保护模式,由yes该为no
### --- Redis-Slaver1:127.0.0.1 6380

~~~     # 安装redis-slaver1
[root@hadoop ~]# mkdir /opt/yanqi/servers/redis-ms/redis-slaver1
[root@hadoop ~]# cp -r /opt/yanqi/servers/redis-ms/redis-master/* /opt/yanqi/servers/redis-ms/redis-slaver1/
~~~     # 修改配置文件
[root@hadoop ~]# vim /opt/yanqi/servers/redis-ms/redis-slaver1/bin/redis.conf
port 6380
replicaof 127.0.0.1 6379
### --- Redis-Slaver2:127.0.0.1 6381

~~~     # 安装redis-slaver2
[root@hadoop ~]# mkdir /opt/yanqi/servers/redis-ms/redis-slaver2/
[root@hadoop ~]# cp -r /opt/yanqi/servers/redis-ms/redis-master/* /opt/yanqi/servers/redis-ms/redis-slaver2/
~~~     # 修改配置文件
[root@hadoop ~]# vim /opt/yanqi/servers/redis-ms/redis-slaver2/bin/redis.conf
port 6381
replicaof 127.0.0.1 6379
### --- Redis-Sentinel1:127.0.0.1 26379

~~~     # 安装redis-sentinel1
[root@hadoop ~]# mkdir /opt/yanqi/servers/redis-ms/redis-sentinel1
[root@hadoop ~]# cp -r /opt/yanqi/servers/redis-ms/redis-master/* /opt/yanqi/servers/redis-ms/redis-sentinel1/
~~~     # 拷贝sentinel.conf 配置文件并修改

[root@hadoop ~]# cp /opt/yanqi/software/redis-5.0.5/sentinel.conf /opt/yanqi/servers/redis-ms/redis-sentinel1/bin
[root@hadoop ~]# vim /opt/yanqi/servers/redis-ms/redis-sentinel1/bin/sentinel.conf
port 26379                                  #  哨兵sentinel实例运行的端口 默认26379
daemonize yes                               #  将`daemonize`由`no`改为`yes`
~~~     #  哨兵sentinel监控的redis主节点的 ip port
~~~     #  master-name 可以自己命名的主节点名字 只能由字母A-z、数字0-9 、这三个字符".-_"组成。
~~~     #  quorum 当这些quorum个数sentinel哨兵认为master主节点失联 那么这时 客观上认为主节点失联了
~~~     #  sentinel monitor <master-name> <ip> <redis-port> <quorum>
sentinel monitor mymaster 127.0.0.1 6379 2
~~~     #  当在Redis实例中开启了requirepass foobared 授权密码 这样所有连接Redis实例的客户端都要提供密码
~~~     #  设置哨兵sentinel 连接主从的密码 注意必须为主从设置一样的验证密码
~~~     #  sentinel auth-pass <master-name> <password>
sentinel auth-pass mymaster MySUPER--secret-0123passw0rd
~~~     #  指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒,改成3秒
~~~     #  sentinel down-after-milliseconds <master-name> <milliseconds>
sentinel down-after-milliseconds mymaster 3000
~~~     #  这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步,
~~~     #  这个数字越小,完成failover所需的时间就越长,
~~~     #  但是如果这个数字越大,就意味着越 多的slave因为replication而不可用。
~~~     #  可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态。
~~~     # sentinel parallel-syncs <master-name> <numslaves>
sentinel parallel-syncs mymaster 1
~~~     # 故障转移的超时时间 failover-timeout 可以用在以下这些方面:
~~~     #1. 同一个sentinel对同一个master两次failover之间的间隔时间。
~~~     #2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。
~~~     #3.当想要取消一个正在进行的failover所需要的时间。
~~~     #4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了
~~~     # 默认三分钟
~~~     # sentinel failover-timeout <master-name> <milliseconds>
sentinel failover-timeout mymaster 180000
### --- Redis-Sentinel2:127.0.0.1 26380

~~~     # 安装redis-sentinel2
[root@hadoop ~]# mkdir /opt/yanqi/servers/redis-ms/redis-sentinel2
[root@hadoop ~]# cp -r /opt/yanqi/servers/redis-ms/redis-sentinel1/* /opt/yanqi/servers/redis-ms/redis-sentinel2/bin

~~~     # 修改sentinel.conf
[root@hadoop ~]# vim /opt/yanqi/servers/redis-ms/redis-sentinel2/bin/sentinel.conf 
port 26380
### --- Redis-Sentinel3:127.0.0.1 26381

~~~     # 安装redis-sentinel3
[root@hadoop ~]# mkdir /opt/yanqi/servers/redis-ms/redis-sentinel3
[root@hadoop ~]# cp -r /opt/yanqi/servers/redis-ms/redis-sentinel1/* /opt/yanqi/servers/redis-ms/redis-sentinel3/bin
~~~     # 修改sentinel.conf
[root@hadoop ~]# vim /opt/yanqi/servers/redis-ms/redis-sentinel3/bin/sentinel.conf
port 26381
四、配置好后依次执行
### --- redis-master、redis-slaver1、redis-slaver2、redis-sentinel1、redis-sentinel2、redis-sentinel3

~~~     # 启动redis-master和redis-slaver
[root@hadoop ~]# cd /opt/yanqi/servers/redis-ms/
[root@hadoop redis-ms]# cd redis-master/bin            // 启动redis-master
[root@hadoop bin]# ./redis-server redis.conf 
[root@hadoop redis-ms]# cd redis-slaver1/bin/          // 启动redis-slave1
[root@hadoop bin]# ./redis-server redis.conf 
[root@hadoop redis-ms]# cd redis-slaver2/bin/          // 启动redis-slave2
[root@hadoop bin]# ./redis-server redis.conf 
~~~     # 启动redis-sentinel
[root@hadoop redis-ms]# cd redis-sentinel1/bin/        // 启动redis-sentinel1
[root@hadoop bin]# ./redis-sentinel sentinel.conf
[root@hadoop redis-ms]# cd redis-sentinel2/bin/        // 启动redis-sentinel2
[root@hadoop bin]# ./redis-sentinel sentinel.conf
[root@hadoop redis-ms]# cd redis-sentinel3/bin/        // 启动redis-sentinel3
[root@hadoop bin]# ./redis-sentinel sentinel.conf
~~~     # 查看启动状态
[root@linux123 redis-ms]# ps -ef |grep redis
root      12102      1  0 17:49 ?        00:00:25 ./redis-server *:6379
root      21837      1  0 23:05 ?        00:00:00 ./redis-server *:6380
root      21843      1  0 23:06 ?        00:00:00 ./redis-server *:6381
root      21869      1  0 23:11 ?        00:00:00 ./redis-sentinel *:26379 [sentinel]
root      21879      1  0 23:13 ?        00:00:00 ./redis-sentinel *:26380 [sentinel]
root      21886      1  0 23:14 ?        00:00:00 ./redis-sentinel *:26381 [sentinel]
五、验证启动状态
### --- 验证集群主从复制:主写从只能读
~~~     # 在redis-master下set一个数据

[root@hadoop ~]# cd /opt/yanqi/servers/redis-ms/redis-master/bin/
[root@hadoop bin]# ./redis-cli 
127.0.0.1:6379> set age 18
OK
~~~     # 在redis-slave1下验证数据是否同步过来
~~~     当前状态:两从只能读,不能写

[root@hadoop bin]# ./redis-cli -p 6380
127.0.0.1:6380> get age
"18"
127.0.0.1:6380> set age 19
(error) READONLY You can't write against a read only replica.

[root@hadoop ~]# cd /opt/yanqi/servers/redis-ms/redis-slaver2/bin/
[root@hadoop bin]# ./redis-cli -p 6381
127.0.0.1:6381> get age
"18"
127.0.0.1:6381> set age 20
(error) READONLY You can't write against a read only replica.
### --- 验证集群主节点宕机,从节点接管服务
~~~     # 停止主节点服务

[root@hadoop bin]# ps -ef | grep redis
root      12102      1  0 17:49 ?        00:00:26 ./redis-server *:6379
[root@hadoop bin]# kill -9 12102
~~~     # 验证redis-slave1是否接管服务
127.0.0.1:6380> set age 21               // 6380接管为主服务,可以读写
OK
127.0.0.1:6381> get age
"21"

~~~     # 验证redis-slave2是否接管服务
127.0.0.1:6381> set age 22               // 6381还是只能读,不能写
(error) READONLY You can't write against a read only replica.
### --- 启动原来的主节点,验证是否接管服务
~~~     # 启动redis-master服务

[root@hadoop bin]# ./redis-server redis.conf 
[root@hadoop bin]# ps -ef | grep redis
root      21917      1  0 23:29 ?        00:00:00 ./redis-server *:6379
~~~     # 验证redis-master是否接管服务
~~~     说明:原主起来后不会接管服务,只能读,不能写,作为从使用
[root@hadoop bin]# ./redis-cli 
127.0.0.1:6379> get age
"21"    
127.0.0.1:6379> set age 23                 // 只能读不能写
(error) READONLY You can't write against a read only replica.

~~~     # 验证redis-slave2是否放弃写服务
127.0.0.1:6380> set age 23                 // redis-slave1可读可写
OK

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(26)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示