linux Redis sentinel(哨兵模式)搭建

一、選擇版本并下載

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

二、編譯安裝

tar xzf redis-4.0.10.tar.gz
cd redis-4.0.10
make PREFIX=/usr/local/redis install

三、創(chuàng)建配置文件

cp redis.conf  /usr/local/redis/
cp sentinel.conf  /usr/local/redis/
mkdir workspace

1. 部署預(yù)期

  • 單機(jī)1主,2從進(jìn)程
    slaver ip:30001
    master ip:30002
    slaver ip:30003
  • 哨兵進(jìn)程
    sentinel ip:40000

2.創(chuàng)建預(yù)處理配置文件

cd /usr/local/redis/
#1主2從配置
cp redis.conf redis30001.conf
cp redis.conf redis30002.conf
cp redis.conf redis30003.conf
#哨兵配置
cd  sentinel.conf  sentinel40000.conf

3.創(chuàng)建自動(dòng)修改配置腳本

vim autoEdit.sh

#bin/sh
【參數(shù)1】操作的目標(biāo)文件
【參數(shù)2】配置的端口號(hào)
#本機(jī)IP
IP=110.110.110.110
#也可以使用下面自動(dòng)獲取本機(jī)ip的命令,個(gè)別機(jī)器可能不支持,請(qǐng)自行選擇
#IP=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
#設(shè)置端口號(hào)【第二個(gè)參數(shù)】
PORT=$2
#密碼
REQUIREPASS=www.liudaye.com
#主庫IP
MASTERIP=110.110.110.110
#主庫密碼
MASTERPASS=www.liudaye.com
#主庫端口
MASTERPORT=30002
#取消綁定ip設(shè)置
sed -i "s/bind 127.0.0.1/bind 127.0.0.1 $IP/g" $1
#設(shè)置密碼
sed -i "s/# masterauth <master-password>/masterauth $MASTERPASS/g" $1
#設(shè)置密碼
sed -i "s/# requirepass foobared/requirepass $REQUIREPASS/g" $1
#設(shè)置端口號(hào)
sed -i "s/port 6379/port $PORT/g"  $1
#設(shè)置后臺(tái)執(zhí)行
sed -i "s/daemonize no/daemonize yes/g"  $1
#設(shè)置進(jìn)程號(hào)
sed -i "s/pidfile \/var\/run\/redis_6379.pid/pidfile \/var\/run\/redis_$PORT.pid/g" $1
#設(shè)置日志文件
sed -i "s/logfile \"\"/logfile \"\/usr\/local\/redis\/workspace\/$PORT.log\"/g"  $1
#設(shè)置rdb文件
sed -i "s/dbfilename dump.rdb/dbfilename dump$PORT.rdb/g"  $1
#設(shè)置工作目錄
sed -i "s/dir .\//dir \/usr\/local\/redis\/workspace/g"  $1
#設(shè)置AOP文件
sed -i "s/appendfilename \"appendonly.aof\"/appendfilename \"appendonly$PORT.aof\"/g"  $1
#設(shè)置appendonly
sed -i "s/appendonly no/appendonly yes/g" $1
#設(shè)置主庫地址
echo "slaveof $MASTERIP $MASTERPORT" >>$1

4. 修改redis具體配置

sh autoEdit.sh  redis30001.conf 30001
sh autoEdit.sh  redis30002.conf 30002
sh autoEdit.sh  redis30003.conf 30003
#刪除master中的slaveof 配置(最后一行)
sed -i '$d' redis30002.conf

5.查看最終詳細(xì)配置

cat redis30001.conf |grep -Ev "#|^$"

bind 127.0.0.1 110.110.110.110
protected-mode yes
port 30001
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_30001.pid
loglevel notice
logfile "/usr/local/redis/workspace/30001.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump30001.rdb
dir /usr/local/redis/workspace
masterauth liudaye.com
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
requirepass liudaye.com
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly yes
appendfilename "appendonly30001.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble no
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-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
slaveof 110.110.110.110 30002

6. 修改哨兵配置

#修改綁定IP
bind 127.0.0.1 110.110.110.110
#修改端口
port 40000
#修改工作目錄
dir "/usr/local/redis/workspace"
#設(shè)置監(jiān)聽主庫地址、端口,和選舉勝出票數(shù) (1主,2從時(shí)配置1)
sentinel monitor mymaster 110.110.110.110 30002 1
#設(shè)置master名字mymaster 和密碼
sentinel auth-pass mymaster www.liudaye.com
sentinel config-epoch mymaster 8
#后臺(tái)執(zhí)行
daemonize yes
#日志文件
logfile "/usr/local/redis/workspace/sentinel40000.log"

四、啟動(dòng)服務(wù)

啟動(dòng)主從庫服務(wù)

cd /usr/local/redis
#啟動(dòng)主庫
bin/redis-server  redis30002.conf
#啟動(dòng)從庫
bin/redis-server  redis30001.conf
#啟動(dòng)從庫
bin/redis-server  redis30003.conf

啟動(dòng)哨兵監(jiān)控進(jìn)程

cd /usr/local/redis
#啟動(dòng)哨兵
bin/redis-sentinel sentinel40000.conf
#bin/redis-server sentinel40000.conf --sentinel

五、連接客戶端

登錄哨兵

bin/redis-cli -h 110.110.110.110 -p 40000

Sentinel 可接受的命令官網(wǎng)

PING :返回 PONG 。
SENTINEL masters :列出所有被監(jiān)視的主服務(wù)器,以及這些主服務(wù)器的當(dāng)前狀態(tài)。
SENTINEL master <master name>:特定主服務(wù)器的當(dāng)前狀態(tài)。
SENTINEL slaves <master name>:列出給定主服務(wù)器的所有從服務(wù)器,以及這些從服務(wù)器的當(dāng)前狀態(tài)。
SENTINEL sentinels <master name> Show a list of sentinel instances for this master, and their state.
SENTINEL get-master-addr-by-name <master name> : 返回給定名字的主服務(wù)器的 IP 地址和端口號(hào)。 如果這個(gè)主服務(wù)器正在執(zhí)行故障轉(zhuǎn)移操作, 或者針對(duì)這個(gè)主服務(wù)器的故障轉(zhuǎn)移操作已經(jīng)完成, 那么這個(gè)命令返回新的主服務(wù)器的 IP 地址和端口號(hào)。
SENTINEL reset <pattern>: 重置所有名字和給定模式 pattern 相匹配的主服務(wù)器。 pattern 參數(shù)是一個(gè) Glob 風(fēng)格的模式。 重置操作清楚主服務(wù)器目前的所有狀態(tài), 包括正在執(zhí)行中的故障轉(zhuǎn)移, 并移除目前已經(jīng)發(fā)現(xiàn)和關(guān)聯(lián)的, 主服務(wù)器的所有從服務(wù)器和 Sentinel 。
SENTINEL failover : 當(dāng)主服務(wù)器失效時(shí), 在不詢問其他 Sentinel 意見的情況下, 強(qiáng)制開始一次自動(dòng)故障遷移 (不過發(fā)起故障轉(zhuǎn)移的 Sentinel 會(huì)向其他 Sentinel 發(fā)送一個(gè)新的配置,其他 Sentinel 會(huì)根據(jù)這個(gè)配置進(jìn)行相應(yīng)的更新)。

登錄主從庫

#從庫
bin/redis-cli -h 110.110.110.110 -p 30001
#主庫
bin/redis-cli -h 110.110.110.110 -p 30002
#認(rèn)證
auth www.liudaye.com
#查看信息
info replication
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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