redis主从复制哨兵模式

为什么需要哨兵模式?
主从切换技术做法是,当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费时费力,还会造成一段时间的服务不可用,所以需要引入哨兵模式。一方面监控各服务器的运行状态,一方面当主服务器宕机时,能实现主从切换

配置文件

#主服务器配置
bind ip
port 7000
requirepass "123456"
daemonize yes
dir "/usr/local/redis/master/"
save 900 1
save 300 10
save 60 100
maxmemory 3gb
masterauth "123456"
#从服务配置
bind ip
port 7001
slaveof masterIP 7000
requirepass "123456"
daemonize yes
dir "/usr/local/redis/slave/"
save 900 1
save 300 10
save 60 100
maxmemory 3gb
masterauth "123456"
#哨兵配置
bind ip
port 7002
dir "/usr/local/redis/sentinel/"
daemonize yes
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster masterIP 7000 2
sentinel down-after-milliseconds mymaster 5000
sentinel auth-pass mymaster 123456

配置说明

配置说明
bind绑定主机IP,用于区分服务器多网卡
port指定Redis监听的端口,服务器部署多台redis时要区分不同端口
requirepass设置Redis连接密码
timeout配置客户端连接超时时间
daemonize是否以守护进程方式运行,默认no
logfile指定日志输出文件,默认为stdout即输出到命令行终端
maxclients最大连接数
maxmemory-policy内存到达最大值时Redis删除策略
pidfile指定pid输出文件,多个服务需要配置不同路径
dir指定rdb/aof文件目录位置
saverdb备份方式
appendonlyaof 备份方式
maxmemory指定Redis最大内存限制 3gb 64mb
slaveof当本机为从服务器时,设置master服务器的IP地址和端口
sentinel monitor mymasterSentinel监听的主服务器mymaster的地址 端口 ,并设置有多少个sentinel认为master
sentinel auth-pass设置sentinel连接master和slave时的密码
sentinel down-after-milliseconds mymaster主节点在指定时间没有ping回复,便认为该节点主观下线
sentinel parallel-syncs在故障转移期间,多少个副本节点进行数据同步
sentinel failover-timeout故障转移超时时间
slave-serve-stable-data表示master与slave失去通讯时,slave是否继续为客户提供服务,yes表示继续,no表示停止

启动顺序
主服务器->从服务器->从服务器 ->(slaveof masterip masterport 从服务器配置了slaveof 可以不执行这个指令 )->哨兵服务器
./redis-server …/master.conf

# Replication
role:master
connected_slaves:1
slave0:ip=salveip,port=7001,state=online,offset=42216726,lag=0
master_replid:0251915ed1cacc539fc5ca9d5e5679a45b2973e6
master_replid2:c752926e335652d69c431b3c8b78e50d204147eb
master_repl_offset:42216869
second_repl_offset:3232448
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:41168294
repl_backlog_histlen:1048576

./redis-server …/slave.conf

# Replication
role:slave
master_host:masterip
master_port:7000
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:43399638
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:0251915ed1cacc539fc5ca9d5e5679a45b2973e6
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:43399638
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:42351063
repl_backlog_histlen:1048576

./redis-sentinel …/sentinel.conf

# 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=ok,address=masterip:masterhost,slaves=1,sentinels=3

一些命令
服务启动完毕后,可以查看各节点的运行状态
./redis-cli -h ip - p port
如何设置了密码输入
auth 密码
再输入info/info replication 即可查看节点额状态息
info replication

备注

  • 从服务启动的时候,主服务器会生成快照文件,并传输到从服务器中,同时新命令会先缓存起来,等从服务器同步完快照文件后,再同步缓存起来的数据。
  • 从服务只提供读的功能,接收到的写命令会转发到主服务器,主服务器执行完毕后再异步同步到所有从服务器。
  • 由于主服务器异步同步到从服务过程中存在时间差,可能会导致数据在某一刻的不一致。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值