栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

redis教程篇(七)-redis主从模式、sentinel、集群部署教程

redis教程篇(七)-redis主从模式、sentinel、集群部署教程

主从模式 作用

独写分离,保证高并发场景下性能不会下降

图解主从模式

如下图所示,除了master以外,其他的redis示例不可进行写操作,但所有redis实例都可以进行读操作。

部署步骤 创建conf文件并加以配置 6379.conf
bind 127.0.0.1
port 6379
logfile "6379.log"
dbfilename "dump-6379.rdb"
6380.conf
bind 127.0.0.1
port 6380
logfile "6380.log"
dbfilename "dump-6380.rdb"
slaveof 127.0.0.1 6379
6381.conf
bind 127.0.0.1
port 6381
logfile "6381.log"
dbfilename "dump-6381.rdb"
slaveof 127.0.0.1 6379
启动
/usr/local/bin/redis-server 6379.conf &
/usr/local/bin/redis-server 6380.conf &
/usr/local/bin/redis-server 6381.conf &

尝试slave写操作会报READonLY You can’t write against a read only replica.
set aa "1"

(error) READonLY You can't write against a read only replica.


master进行写操作并查看slave是否会同步该数据 master写
set aa "123"

slave查看
get aa
"123"

sentinel 作用

主从复制保证了高并发访问下,性能不会下降,但master随时都有宕机的可能,一旦宕机,就无法进行写操作,两个slave就一无是处,所以我们需要在主从复制基础上增加哨兵保证当master宕机后从slave中选举心的master

图解

如下图所示,该示例笔者使用三个哨兵,只要半数以上的哨兵认为master挂了,那么就会从slave中选举新的master,即使原master复活也只能以slave身份加入集群。

部署步骤 创建sentinel-26379.conf,sentinel-26380.conf和sentinel-26381.conf sentinel-26379.conf
port 26379
daemonize yes   
logfile "26379.log"   
dir /opt/soft/redis/data   
sentinel monitor mymaster 127.0.0.1 6379 2 
sentinel down-after-milliseconds mymaster 30000   
sentinel parallel-syncs mymaster 1   
sentinel failover-timeout mymaster 180000 
sentinel myid mm55d2d712b1f3f312b637f9b546f00cdcedc787
sentinel-26380.conf
port 26380
daemonize yes   
logfile "26380.log"   
dir /opt/soft/redis/data   
sentinel monitor mymaster 127.0.0.1 6379 2 
sentinel down-after-milliseconds mymaster 30000   
sentinel parallel-syncs mymaster 1   
sentinel failover-timeout mymaster 180000 
sentinel myid mm55d2d712b1f3f312b637f9b546f00cdcedc788
sentinel-26381.conf
port 26381
daemonize yes   
logfile "26381.log"   
dir /opt/soft/redis/data   
sentinel monitor mymaster 127.0.0.1 6379 2 
sentinel down-after-milliseconds mymaster 30000   
sentinel parallel-syncs mymaster 1   
sentinel failover-timeout mymaster 180000 
sentinel myid mm55d2d712b1f3f312b637f9b546f00cdcedc789
启动
 /usr/local/bin/redis-sentinel sentinel-26379.conf
 /usr/local/bin/redis-sentinel sentinel-26380.conf
 /usr/local/bin/redis-sentinel sentinel-26381.conf

查看哨兵搭建是否成功

如下所示,连接客户端后查看哨兵状态

/usr/local/bin/redis-cli -p 26379

127.0.0.1:26379> info sentinel

若sentinels=3则说明哨兵部署成功了

# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=odown,address=127.0.0.1:6379,slaves=0,sentinels=3

查看当前master为79
[root@VM-0-13-centos myredis]# /usr/local/bin/redis-cli -p 638179
127.0.0.1:6379> info replication


# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=700,lag=1
slave1:ip=127.0.0.1,port=6379,state=online,offset=700,lag=1
master_failover_state:no-failover
master_replid:bdedf5e127208fafedf2fd67939884de2325c089
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:700
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:700
杀死master查看哨兵是否会选举新的master

如下所示,之后通过其他客户端查看会发现新的master

127.0.0.1:6381> SHUTDOWN

集群 作用

解决读写分离,和避免单体故障,接下来就是解决高并发大数据存储问题,集群的道理很简单,即增加大量redis实例,通过均匀分配槽赖保证大数据均匀存储在各个redis实例中

图解

如下图所示,三组主从复制组成一个集群,保证健壮性以及解决大数据写存储的问题

部署步骤 创建6个配置文件
# 指定Redis节点端口
port 6370 
# 指定对应进程文件
pidfile /var/run/redis_6370.pid 
# 每个节点的rdb持久化文件
dbfilename dump6370.rdb 
# 开启集群,这个比较重要
cluster-enabled yes 
 #指定每个节点的集群配置文件,这个比较重要
cluster-config-file nodes-6370.conf
启动
/usr/local/bin/redis-server cluster-6379.conf
/usr/local/bin/redis-server cluster-6379.conf &
 /usr/local/bin/redis-server cluster-6380.conf &
 /usr/local/bin/redis-server cluster-6381.conf &
 /usr/local/bin/redis-server cluster-6390.conf &
 /usr/local/bin/redis-server cluster-6391.conf &


创建集群
/usr/local/bin/redis-cli --cluster create --cluster-replicas 1 127.0.0.1:6370 127.0.0.1:6380 127.0.0.1:6390 127.0.0.1:6371 127.0.0.1:6381 127.0.0.1:6391
进入任意一台客户端使用命令查看当前集群是否起来

cluster info
存储数据

如下所示,由于创建了集群,所以需要加 -c,保证存储数据时,保证对应数据不属于当前的槽会跳转到别的槽

/usr/local/bin/redis-cli -c  -p 6370

挂掉master查看效果,15s后会诞生新的master 参考文献

Redis 单例、主从模式、sentinel 以及集群的配置方式及优缺点对比
Redis集群搭建很easy

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/354989.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号