redis哨兵模式

環(huán)境準(zhǔn)備

IP 角色
172.16.144.91 master
172.16.144.13 slave
服務(wù)器系統(tǒng)參數(shù)優(yōu)化
修改系統(tǒng)文件最大打開數(shù)
echo '* soft nofile 102400' >> /etc/security/limits.conf
echo '* hard nofile 102400' >> /etc/security/limits.conf
ulimit -n 102400

修改somaxconn大小
echo 65535 > /proc/sys/net/core/somaxconn;

關(guān)閉 Pansparent Hugepage
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local --添加

到開啟啟動(dòng)
echo never > /sys/kernel/mm/transparent_hugepage/enabled --臨時(shí)生效
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
echo "net.core.somaxconn=32767" >> /etc/sysctl.conf

redis配置

下載tar包

wget http://download.redis.io/releases/redis-4.0.10.tar.gz

安裝REDIS

yum -y install gcc gcc-c++ tcl --安裝依賴包
tar -zxvf redis-4.0.10.tar.gz -C /usr/local/ --解壓包
cd /usr/local
mv redis-4.0.10 redis
cd redis
make
make MALLOC=
cd redis/src
make test
make install
【圖1】
cd /usr/local/redis/src/
cp redis-server redis-cli redis-sentinel /usr/bin/
1.png

修改redis.conf配置

vim /usr/local/redis/redis.conf
daemonize yes --redis服務(wù)后臺(tái)運(yùn)行
bind 0.0.0.0 --bind配置項(xiàng)來指定要綁定的IP
port 6379 --端口
pidfile "/var/run/redis.pid"
protected-mode no
tcp-backlog 1024
logfile "/var/log/redis.log" --redis日志路徑
dir /data/redis --持久化文件保存路徑
masterauth "test2123456" --設(shè)置校驗(yàn)密碼
requirepass "test2123456" --密碼認(rèn)證
appendonly yes --開啟持久化
maxclients 10000 --設(shè)置最大連接數(shù)
maxmemory-policy noeviction --此參數(shù)內(nèi)存淘汰機(jī)制,noeviction :當(dāng)內(nèi)存使用達(dá)到閾值的時(shí)候,
所有引起申請(qǐng)內(nèi)存 的命令會(huì)報(bào)錯(cuò)。默認(rèn)值
maxmemory 1024mb --設(shè)置內(nèi)存占用,此設(shè)置和你服務(wù)器內(nèi)存大小有關(guān),最大配置服務(wù)器內(nèi)存的
75%。
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec

修改sentinel.conf哨兵監(jiān)控文件參數(shù)如下:

daemonize yes --后臺(tái)運(yùn)行
bind 0.0.0.0
protected-mode no
port 26379 --端口號(hào)
logfile "/data/redis/logs/sentinel.log" --日志路徑
dir "/data/redis/sdata" ----數(shù)據(jù)路徑
sentinel monitor test2redis 172.16.143.16 6379 1 監(jiān)控名稱 監(jiān)控服務(wù)器ip 監(jiān)控服務(wù)端口 選舉數(shù)量
sentinel down-after-milliseconds test2redis 8000
sentinel failover-timeout test2redis 15000
sentinel auth-pass test2redis test2123456

啟動(dòng)redis

vim /etc/init.d/redis.sh
#!/bin/bash
/usr/local/redis/src/redis-server /usr/local/redis/redis.conf
/usr/local/redis/src/redis-sentinel /usr/local/redis/sentinel.conf

驗(yàn)證

Redis-cli
AUTH redis123
info replication


在master寫數(shù)據(jù) slave是否同步



sentinel.conf文件詳解

sentinel monitor <master-name> <ip> <redis-port> <quorum>
告訴sentinel去監(jiān)聽地址為ip:port的一個(gè)master,這里的master-name可以自定義,
quorum是一個(gè)數(shù)字,指明當(dāng)有多少個(gè)sentinel認(rèn)為一個(gè)master失效時(shí),master才算
真正失效
sentinel auth-pass <master-name> <password>
設(shè)置連接master和slave時(shí)的密碼,注意的是sentinel不能分別為master和slave設(shè)置不
同的密碼,因此master和slave的密碼應(yīng)該設(shè)置相同。
sentinel down-after-milliseconds <master-name> <milliseconds>
這個(gè)配置項(xiàng)指定了需要多少失效時(shí)間,一個(gè)master才會(huì)被這個(gè)sentinel主觀地認(rèn)為是不
可用的。 單位是毫秒,默認(rèn)為30秒
sentinel parallel-syncs <master-name> <numslaves>
這個(gè)配置項(xiàng)指定了在發(fā)生failover主備切換時(shí)最多可以有多少個(gè)slave同時(shí)對(duì)新的
master進(jìn)行 同步,這個(gè)數(shù)字越小,完成failover所需的時(shí)間就越長,但是如果這個(gè)數(shù)
字越大,就意味著越 多的slave因?yàn)閞eplication而不可用??梢酝ㄟ^將這個(gè)值設(shè)為 1 來
保證每次只有一個(gè)slave 處于不能處理命令請(qǐng)求的狀態(tài)。
sentinel failover-timeout <master-name> <milliseconds>
failover-timeout 可以用在以下這些方面:
1. 同一個(gè)sentinel對(duì)同一個(gè)master兩次failover之間的間隔時(shí)間。
2. 當(dāng)一個(gè)slave從一個(gè)錯(cuò)誤的master那里同步數(shù)據(jù)開始計(jì)算時(shí)間。直到slave被糾正為
向正確的master那里同步數(shù)據(jù)時(shí)。
3.當(dāng)想要取消一個(gè)正在進(jìn)行的failover所需要的時(shí)間。
4.當(dāng)進(jìn)行failover時(shí),配置所有slaves指向新的master所需的最大時(shí)間。不過,即使過
了這個(gè)超時(shí),slaves依然會(huì)被正確配置為指向master,但是就不按parallel-syncs所配
置的規(guī)則來了。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容