redis哨兵模式,用現(xiàn)在流行的話可以說(shuō)就是一個(gè)“哨兵機(jī)器人”,給“哨兵機(jī)器人”進(jìn)行相應(yīng)的配置之后,這個(gè)"機(jī)器人"可以7*24小時(shí)工作,它能能夠自動(dòng)幫助你做一些事情,如監(jiān)控,提醒,自動(dòng)處理故障等。
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到易門網(wǎng)站設(shè)計(jì)與易門網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋易門地區(qū)。
Redis-sentinel簡(jiǎn)介
Redis-sentinel是Redis的作者antirez,因?yàn)镽edis集群的被各大公司使用,每個(gè)公司要寫自己的集群管理工具,于是antirez花了幾個(gè)星期寫出了Redis-sentinel。
Redis 的 Sentinel 系統(tǒng)用于管理多個(gè) Redis 服務(wù)器(instance),Redis 的 Sentinel 為Redis提供了高可用性。使用哨兵模式創(chuàng)建一個(gè)可以不用人為干預(yù)而應(yīng)對(duì)各種故障的Redis部署。
該系統(tǒng)執(zhí)行以下三個(gè)任務(wù):
sentinel的分布式特性
Redis Sentinel 是一個(gè)分布式系統(tǒng), 你可以在一個(gè)架構(gòu)中運(yùn)行多個(gè) Sentinel 進(jìn)程(progress), 這些進(jìn)程使用流言協(xié)議(gossip protocols)來(lái)接收關(guān)于主服務(wù)器是否下線的信息, 并使用投票協(xié)議(agreement protocols)來(lái)決定是否執(zhí)行自動(dòng)故障遷移, 以及選擇哪個(gè)從服務(wù)器作為新的主服務(wù)器。
單個(gè)sentinel進(jìn)程來(lái)監(jiān)控redis集群是不可靠的,當(dāng)sentinel進(jìn)程宕掉后(sentinel本身也有單點(diǎn)問(wèn)題,single-point-of-failure)整個(gè)集群系統(tǒng)將無(wú)法按照預(yù)期的方式運(yùn)行。所以有必要將sentinel集群,這樣有幾個(gè)好處:
一個(gè)健壯的部署至少需要三個(gè)哨兵實(shí)例。
三個(gè)哨兵實(shí)例應(yīng)該放置在客戶使用獨(dú)立方式確認(rèn)故障的計(jì)算機(jī)或虛擬機(jī)中。例如不同的物理機(jī)或不同可用區(qū)域的虛擬機(jī)?!颈敬沃v解是一個(gè)機(jī)器上進(jìn)行搭建,和多級(jí)是一個(gè)道理
背景
最近項(xiàng)目需求,接觸到了Redis的搭建,簡(jiǎn)單記錄下搭建過(guò)程中遇到的坑
總體配置
192.168.1.100:6379 -> master 192.168.1.101:6379 -> slave 192.168.1.102:6379 -> slave 192.168.1.100:26379 -> sentinel 192.168.1.101:26379 -> sentinel 192.168.1.102:26379 -> sentinel
搭建步驟
1.安裝redis
# 解壓 tar -xvf /usr/local/redis-3.2.11.tar.gz mkdir -p /usr/local/redis/bin cp /usr/local/redis/src/{redis-benchmark,redis-check-aof,redis-check-rdb,redis-cli,redis-sentinel,redis-server,redis-trib.rb} /usr/local/redis/bin mkdir -p /u01/redis/{6379/{log,data,pid,conf},26379/{log,data,pid,conf} # 添加環(huán)境變量 echo "export PATH=/usr/local/redis/bin:$PATH" >> /etc/profile source /etc/profile
2.redis-6379配置
redis節(jié)點(diǎn)配置基本如下,把如下配置分別cp到三臺(tái)虛擬機(jī)的/u01/redis/6379/conf/redis_6379.conf
bind 0.0.0.0 protected-mode no daemonize yes pidfile "/u01/redis/6379/pid/redis_6379.pid" port 6379 tcp-backlog 511 timeout 0 tcp-keepalive 0 loglevel notice logfile "/u01/redis/6379/log/redis_6379.log" databases 16 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename "dump.rdb" dir "/u01/redis/6379/data" slave-serve-stale-data yes slave-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-disable-tcp-nodelay no slave-priority 100 min-slaves-to-write 1 min-slaves-max-lag 10 appendonly no appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512
啟動(dòng)服務(wù)
# 在三臺(tái)虛擬機(jī)上分別執(zhí)行 redis-server /u01/redis/6379/conf/redis_6379.conf
建立主從關(guān)系
# 在192.168.1.101 redis-cli -p 6379 SLAVEOF 192.168.1.100 6379 # 在192.168.1.102 redis-cli -p 6379 SLAVEOF 192.168.1.100 6379
查看Replication
192.168.1.101:6379> info replication # Replication role:master connected_slaves:2 min_slaves_good_slaves:2 slave0:ip=192.168.1.102,port=6379,state=online,offset=9577826,lag=1 slave1:ip=192.168.1.103,port=6379,state=online,offset=9577965,lag=0 master_repl_offset:9577965 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:8529390 repl_backlog_histlen:1048576 192.168.1.102:6379> info replication # Replication role:slave master_host:192.168.1.101 master_port:6379 master_link_status:up master_last_io_seconds_ago:0 master_sync_in_progress:0 slave_repl_offset:9600220 slave_priority:100 slave_read_only:1 connected_slaves:0 min_slaves_good_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 192.168.1.103:6379> info replication # Replication role:slave master_host:192.168.1.101 master_port:6379 master_link_status:up master_last_io_seconds_ago:0 master_sync_in_progress:0 slave_repl_offset:9612675 slave_priority:100 slave_read_only:1 connected_slaves:0 min_slaves_good_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0
3.sentinel-6379配置
sentinel節(jié)點(diǎn)配置基本如下,把如下配置分別cp到三臺(tái)虛擬機(jī)的/u01/redis/26379/conf/sentinel_26379.conf
sentinel monitor mymaster 后監(jiān)控的是redis中的master節(jié)點(diǎn),也就是192.168.1.100,所以這個(gè)文件在三臺(tái)機(jī)器上是相同的
port 26379 bind 0.0.0.0 daemonize yes protected-mode no dir "/u01/redis/26379/tmp" logfile "/u01/redis/26379/log/sentinel_26379.log" sentinel monitor mymaster 192.168.1.100 6379 1
等待啟動(dòng)完畢后觀察/u01/redis/26379/conf/sentinel_26379.conf文件變化
查看sentinel狀態(tài)用info sentinel
redis-cli -h 192.168.1.100 -p 26379 info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=zhuanche01,status=ok,address=192.168.1.100:6379,slaves=2,sentinels=3
總結(jié)
我搭建的時(shí)候遇到了192.168.1.101、192.168.1.102上的sentinel啟動(dòng)后一段時(shí)間出錯(cuò)的問(wèn)題,后來(lái)發(fā)現(xiàn)是沒(méi)有監(jiān)控master
再就是出問(wèn)題了多看log
來(lái)年要多寫筆記,年紀(jì)大了,記憶力越來(lái)越差!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
文章名稱:RedisSentinel實(shí)現(xiàn)哨兵模式搭建小結(jié)
URL標(biāo)題:http://jinyejixie.com/article18/pddhdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、服務(wù)器托管、網(wǎng)站設(shè)計(jì)、響應(yīng)式網(wǎng)站、App開發(fā)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)