Redis的高级特性哨兵
一、哨兵介紹
Redis Sentinel,即Redis哨兵,在Redis 2.8版本開始引入。哨兵的核心功能是主節(jié)點(diǎn)的自動(dòng)故障轉(zhuǎn)移。下面是Redis官方文檔對(duì)于哨兵功能的描述:
簡(jiǎn)單來(lái)說(shuō),主從模式下為了使主從具備高可用性,就需要用哨兵進(jìn)行監(jiān)控,在主節(jié)點(diǎn)下線后,會(huì)通過(guò)投票選出新的主節(jié)點(diǎn),在主節(jié)點(diǎn)上線后,也只能作為新節(jié)點(diǎn)的從節(jié)點(diǎn)。哨兵環(huán)境也需要高可用,所以一般是三個(gè)以上的集群。
架構(gòu)圖如下:
?
<mxfile userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36" version="8.5.3" editor="www.draw.io" type="device"><diagram>7Vldc+IgFP01PLYTQr58VJt2X3amM33Y9jGbYGSKwSVYdX/9goGYEJx1OqbrtOuDwoHchHMu994gQPPV7oFn6+V3VmAKfK/YAXQHfB8GMJI/Ctk3SOInDVByUuhJR+CJ/MYa9DS6IQWuexMFY1SQdR/MWVXhXPSwjHO27U9bMNq/6zor8QB4yjM6RH+QQizNKuIj/g2TcmnuDKNJM/Izy19LzjaVvh/w0eLwaYZXmbGlF1ovs4JtOxBKAZpzxkTTWu3mmCpuDW3NdfcnRtvn5rgS51zgNxe8ZXSjlw7SAMxmIElBmoBkChKJxOp7ppdYi72hSdqSisjObLskAj+ts1yNbKVTSGwpVlT2oGxm9bqRaUF2WN56tiCUzhll/GAIxek0Sj2Fs0pod4CB7A/Xo5f4hrnAuw6k1/eA2QoLvpdTzKjhWvti4On+tqOshpYdUQ2WaV8qW8tHPmVDU+qmF7npTRTDn4Telqe91f8AeoPP771B8O+8NxzS60dU6IX2yIx+bZgZuKkPFEzlBBitd8dB2Sr178EKMUAt+SEVpjeSi3nb8W/Vp+1W5jL52MQ2JbHmmQxsaX0IyUq7O+/veteCs9c28KOh4Gl0fz+fjxOeYDAUOIAOheMLKBw5FLZ3SVVMVUaVvZxmdU3yPlm2z+MdEc+aZ9V+0fMkQ3z/3O286FknSazZhue4F0lFxksserkLF71cPiS6Q2To4NFgHNNMkLd+BeAiV9/hkZHDJjBx0N6ogaVPsxp9VTcl24YmfUNoYhlqOBgYOmjdLvss+ePx5Ien5PcuJX9wVfLb2zi0VTtXfhhbhmw/upz8iSN9hmAagORONRJZpkQDh5BhTbjCpQmPFauwFTE1lFFSVsqPpNBY4jMVJIksuqd6YEWKgp7Kx/0IPkYhg6x9Fw8DscuB0AXi8OS/Eh0lkFVSoiT8MCVMpr1oTGxj3214dvS73kwHI6vih+hCoc4bLdRBeIWyXlcGC+wXOei/T1Zk+Uc0oqyO84sxZW2L29tAxmSrwpHtR8yJfHwVU8+vbcKhZ6Cr8gxkHrH1jPfWNpaLhdF4nuE6eonBZAYmEKSROiGYxl8npULP2tyO4iYaK6W6jmm+rhS+nT4dL/yjSeE40vnCUgTWS1sbMC8vheweT/WbeHb86wSlfwA=</diagram></mxfile> 1545458228541.drawio.html 24.62KB?
二、哨兵集群搭建
2.1搭建Redis主從集群
方法請(qǐng)看上一篇博客,redis主從集群搭建。
不同的是我在三個(gè)配置文件加了訪問(wèn)密碼,requirepass "XXX",所以需要在這里也加上master的密碼
masterauth "XXX",否則主服務(wù)器會(huì)拒絕從服務(wù)器的復(fù)制請(qǐng)求。
2.2修改哨兵配置文件
默認(rèn)的配置文件是sentinel.conf在主目錄下,首先復(fù)制兩份出來(lái)
cp sentinel.conf sentinel-27000.conf
cp sentinel.conf sentinel-27001.conf
然后要修改的內(nèi)容如下(相同的省略):
| port 26379 | port 27000 | port 27001 |
| pidfile "/var/run/redis-sentinel.pid" | pidfile "/var/run/redis-sentinel2.pid" | pidfile "/var/run/redis-sentinel3.pid" |
| sentinel monitor mymaster 127.0.0.1 6379 2 | sentinel monitor mymaster 127.0.0.1 6379 2 | sentinel monitor mymaster 127.0.0.1 6379 2 |
| sentinel down-after-milliseconds mymaster 3000 | 略 | 略 |
| sentinel failover-timeout mymaster 10000 | 略 | 略 |
| sentinel auth-pass mymaster XXX | 略 | 略 |
| sentinel myid xxx | sentinel myid xxx | sentinel myid xxx |
注意:
2.3啟動(dòng)
src/redis-sentinel sentinel.conf
src/redis-server sentinel.conf --sentinel
2.4測(cè)試故障自動(dòng)轉(zhuǎn)移
可以看到master是端口6379的,有兩個(gè)slaves,三個(gè)哨兵。
6379掛了后進(jìn)行了一輪的選舉投票,最后6380端口的成為了新的master,來(lái)看看現(xiàn)在的集群情況是不是這樣的。
日志顯示6379重新加入了集群,只不過(guò)變成了從服務(wù)器。
轉(zhuǎn)載于:https://www.cnblogs.com/2YSP/p/10161219.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Redis的高级特性哨兵的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 补全一段jQuery代码
- 下一篇: ES5原生api(2)