一膝迎、選擇版本并下載
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
#主庫(kù)IP
MASTERIP=110.110.110.110
#主庫(kù)密碼
MASTERPASS=www.liudaye.com
#主庫(kù)端口
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è)置主庫(kù)地址
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)聽(tīng)主庫(kù)地址浅缸、端口轨帜,和選舉勝出票數(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)主從庫(kù)服務(wù)
cd /usr/local/redis
#啟動(dòng)主庫(kù)
bin/redis-server redis30002.conf
#啟動(dòng)從庫(kù)
bin/redis-server redis30001.conf
#啟動(dòng)從庫(kù)
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í)婿斥, 在不詢問(wèn)其他 Sentinel 意見(jiàn)的情況下劝篷, 強(qiáng)制開(kāi)始一次自動(dòng)故障遷移 (不過(guò)發(fā)起故障轉(zhuǎn)移的 Sentinel 會(huì)向其他 Sentinel 發(fā)送一個(gè)新的配置,其他 Sentinel 會(huì)根據(jù)這個(gè)配置進(jìn)行相應(yīng)的更新)民宿。
登錄主從庫(kù)
#從庫(kù)
bin/redis-cli -h 110.110.110.110 -p 30001
#主庫(kù)
bin/redis-cli -h 110.110.110.110 -p 30002
#認(rèn)證
auth www.liudaye.com
#查看信息
info replication