众所周知,redis是一个开源的高性能的keyvalue类型数据库,目前在生产中被广泛应用。为了保障生产系统的高可用性和稳定性,因此就需要一套高可用性的redis环境提供稳定的服务。本文将介绍比较常用的集群模式部署方式哨兵模式集群。 话不多说,开始动手环境信息 主机名 IP 系统 版本 备注 redis1656101 10。16。56。101 CentOS7。9 5。0。9 主 redis1656102 10。16。56。102 CentOS7。9 5。0。9 备 redis1656103 10。16。56。103 CentOS7。9 5。0。9 备 无特殊说明以下操作步骤需要在每个节点都执行redis安装下载wgethttps:download。redis。ioreleasesredis5。0。9。tar。gztarzxvfredis5。0。9。tar。gzcdredis5。0。9编译、安装makeMALLOCjemallocmakePREFIXusrlocalredisredis5install创建目录mkdirusrlocalredisredis5confmkdirusrlocalredisredis5datamkdirpusrlocallogsredis5初始化配置cpredis。confusrlocalredisredis5conf配置服务cputilsredisinitscriptetcinit。dredis6380chmodxetcinit。dredis6380环境变量catetcprofileEOFexportPATHPATH:usrlocalredisredis5binEOFsourceetcprofile内核参数catetcsysctl。confEOFTCP网络连接数net。core。somaxconn65535EOF加载内核参数生效sysctlpredis配置catusrlocalredisredis5conf6380。confEOFbind0。0。0。0protectedmodeyesport6380tcpbacklog511timeout0tcpkeepalive300daemonizeyessupervisednopidfilevarrunredis6380。pidloglevelnoticelogfileusrlocallogsredis5redis6380。logdatabases16alwaysshowlogoyessave9001save30010save6010000stopwritesonbgsaveerroryesrdbcompressionyesrdbchecksumyesdbfilenamedump。rdbdirusrlocalredisredis5datareplicaservestaledatayesreplicareadonlyyesrepldisklesssyncnorepldisklesssyncdelay5repldisabletcpnodelaynoreplicapriority100lazyfreelazyevictionnolazyfreelazyexpirenolazyfreelazyserverdelnoreplicalazyflushnoappendonlyyesappendfilenameappendonly。aofappendfsynceverysec如需要验证密码,将xxx改为指定密码requirepassxxxmasterauthxxxnoappendfsynconrewritenoautoaofrewritepercentage100autoaofrewriteminsize64mbaofloadtruncatedyesaofuserdbpreambleyesluatimelimit5000slowloglogslowerthan10000slowlogmaxlen128latencymonitorthreshold0notifykeyspaceeventshashmaxziplistentries512hashmaxziplistvalue64listmaxziplistsize2listcompressdepth0setmaxintsetentries512zsetmaxziplistentries128zsetmaxziplistvalue64hllsparsemaxbytes3000streamnodemaxbytes4096streamnodemaxentries100activerehashingyesclientoutputbufferlimitnormal000clientoutputbufferlimitreplica256mb64mb60clientoutputbufferlimitpubsub32mb8mb60hz10dynamichzyesaofrewriteincrementalfsyncyesrdbsaveincrementalfsyncyes备节点添加以下配置replicaof10。16。56。1016380EOF配置服务catetcinit。dredis6380EOF!binshSimpleRedisinit。dscriptconceivedtoworkonLinuxsystemsasitdoesuseoftheprocfilesystem。BEGININITINFOProvides:redis6380DefaultStart:2345DefaultStop:016ShortDescription:RedisdatastructureserverDescription:Redisdatastructureserver。Seehttps:redis。ioENDINITINFOREDISPORT6380EXECusrlocalredisredis5binredisserverCLIEXECusrlocalredisredis5binrediscliPIDFILEvarrunredis{REDISPORT}。pidCONFusrlocalredisredis5conf{REDISPORT}。confredis密码,和requirepassxxx一致REDISPASSWORDxxxcase1instart)if〔fPIDFILE〕thenechoPIDFILEexists,processisalreadyrunningorcrashedelseechoStartingRedisserver。。。EXECCONFfi;;stop)if〔!fPIDFILE〕thenechoPIDFILEdoesnotexist,processisnotrunningelsePID(catPIDFILE)echoStopping。。。CLIEXECaREDISPASSWORDpREDISPORTshutdownwhile〔xproc{PID}〕doechoWaitingforRedistoshutdown。。。sleep1doneechoRedisstoppedfi;;)echoPleaseusestartorstopasfirstargument;;esacEOF启动服务开启服务serviceredis6380start设置开机启动chkconfigredis6380onsentinel配置catusrlocalredisredis5confsentinel。confEOFdaemonizeyesprotectedmodenoport26380redismaster集群标识sentinelmonitorredismaster10。16。56。101638025s主库无响应,标记为挂起状态sdownsentineldownaftermillisecondsredismaster5000failover过期时间。当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel将会认为此次failoer失败。单位是毫秒sentinelfailovertimeoutredismaster30000sentinelparallelsyncsredismaster2sentinelauthpassredismasterxxxlogfileusrlocallogsredis5sentinel。logEOFsentinel启动redissentinelusrlocalredisredis5confsentinel。confsentinel添加到开机启动catetcrc。localEOFsudoredissentinelusrlocalredisredis5confsentinel。confsentinelEOF检查状态登录redis主节点查看sentinel日志tail100fusrlocallogsredis5sentinel。log28079:X19Feb17:31:45。844oO0OoO0OoO0OoRedisisstartingoO0OoO0OoO0Oo28079:X19Feb17:31:45。844Redisversion5。0。9,bits64,commit00000000,modified0,pid28079,juststarted28079:X19Feb17:31:45。844Configurationloaded28080:X19Feb17:31:45。849Runningmodesentinel,port26380。28080:X19Feb17:31:45。853SentinelIDis3bef209db7b40a075312e8563814e953f7da238728080:X19Feb17:31:45。853monitormasterredis165610110。16。56。1016380quorum228080:X19Feb17:34:36。654slaveslave10。16。56。102:638010。16。56。1026380redis165610110。16。56。101638028080:X19Feb17:35:28。576sentinelsentinelad55287c64d390d607d973eb78049d43a727f1e910。16。56。10226380redis165610110。16。56。101638028080:X19Feb17:39:47。843slaveslave10。16。56。103:638010。16。56。1036380redis165610110。16。56。101638028080:X19Feb17:40:05。324sentinelsentinel0a5a49c84ce9254eea9e6aff54ee8173bf99686210。16。56。10326380redis165610110。16。56。1016380 出现slave和sentinel表示成功发现从库和Sentinel 未完待续