redis安裝在后端兩臺(tái)服務(wù)器上,以下的步驟在兩臺(tái)后端上都操作一遍
我這邊是兩臺(tái),也可以選擇用三臺(tái)服務(wù)器部署,三臺(tái)的話就三臺(tái)都操作,一臺(tái)放兩個(gè)redis
(1)版本:6.2.12
(2)下載地址:http://download.redis.io/releases/
(二)解壓到/mnt,重命名
tar -zxvf redis-6.2.12.tar.gz -C /mnt
mkdir /mnt/redis
(三)編譯安裝
cd /mnt/redis-6.2.12
make
make install PREFIX=/mnt/redis
(四)增加配置文件目錄,在配置文件目錄下新增一個(gè)cluster目錄,存放集群redis啟動(dòng)的配置文件。
cd /mnt/redis
mkdir -pv /mnt/redis/conf/cluster/{7001,7002,7003}
cd /mnt/redis/conf/cluster/7001
vim redis-7001.conf
(五)增加配置文件/mnt/redis/conf/cluster/7001/redis-7001.conf
#綁定主機(jī)IP,默認(rèn)值為127.0.0.1
bind 0.0.0.0
#設(shè)置密碼
requirepass cYdNO6yByamPr5d
masterauth cYdNO6yByamPr5d
#要是配置里沒(méi)有指定bind和密碼,開(kāi)啟該參數(shù)后,redis只能本地進(jìn)行訪問(wèn),要是開(kāi)啟了密碼和bind,可以開(kāi)啟.否則最好設(shè)置為no。
protected-mode yes
#端口號(hào)
port 7001
# 差異
tcp-keepalive 300
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
rdb-del-sync-files no
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del yes
lazyfree-lazy-user-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes
aof-use-rdb-preamble yes
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
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes
maxmemory 134217728
maxmemory-policy allkeys-random
#和內(nèi)核參數(shù)/proc/sys/net/core/somaxconn值一樣,redis默認(rèn)511,而內(nèi)核默認(rèn)值128,高并發(fā)場(chǎng)景將其增大,內(nèi)核參數(shù)也增大
tcp-backlog 1024
#客戶端閑置多少秒后,斷開(kāi)連接為0,則服務(wù)端不會(huì)主動(dòng)斷開(kāi)連接
timeout 0
#是否在后臺(tái)執(zhí)行
daemonize yes
supervised no
#redis進(jìn)程文件
pidfile /mnt/redis/conf/cluster/7001/redis-7001.pid
#日志的級(jí)別,包括:debug,verbose,notice(默認(rèn)適合生成環(huán)境),warn(只有非常重要的信息)
loglevel notice
#指定日志文件
logfile "/mnt/redis/conf/cluster/7001/redis-7001.log"
#數(shù)據(jù)庫(kù)的數(shù)量,默認(rèn)使用的數(shù)據(jù)庫(kù)是DB 0,可以通過(guò)”SELECT “命令選擇一個(gè)db
databases 16
# -------------------- SLOW LOG --------------------
#slog log是用來(lái)記錄慢查詢,執(zhí)行時(shí)間比slowlog-log-slower-than大的請(qǐng)求記錄到slowlog里面,1000000=1秒
slowlog-log-slower-than 1000
#慢查詢?nèi)罩鹃L(zhǎng)度。當(dāng)一個(gè)新的命令被寫(xiě)進(jìn)日志的時(shí)候,最老的那個(gè)記錄會(huì)被刪掉。這個(gè)長(zhǎng)度沒(méi)有限制。只要有足夠的內(nèi)存就行。你可以通過(guò) SLOWLOG RESET 來(lái)釋放內(nèi)存。
slowlog-max-len 128
# -------------------- rdb Persistence --------------------
#當(dāng)有一條Keys數(shù)據(jù)被改變時(shí),900秒刷新到disk一次
save 900 1
#當(dāng)有10條Keys數(shù)據(jù)被改變時(shí),300秒刷新到disk一次
save 300 10
#當(dāng)有1w條keys數(shù)據(jù)被改變時(shí),60秒刷新到disk一次
save 60 10000
#當(dāng)RDB持久化出現(xiàn)錯(cuò)誤后,是否依然進(jìn)行繼續(xù)進(jìn)行工作
stop-writes-on-bgsave-error yes
#使用壓縮rdb文件,壓縮需要一些cpu的消耗,不壓縮需要更多的磁盤(pán)空間
rdbcompression yes
##是否校驗(yàn)rdb文件,校驗(yàn)會(huì)有大概10%的性能損耗
#rdbchecksum yes
##rdb文件的名稱
dbfilename dump7001.rdb
##數(shù)據(jù)目錄,數(shù)據(jù)庫(kù)的寫(xiě)入會(huì)在這個(gè)目錄。rdb、aof文件也會(huì)寫(xiě)在這個(gè)目錄
dir /mnt/redis/conf/cluster/7001
# -------------------- AOF Persistence --------------------
#Append Only File是另一種持久化方式,可以提供更好的持久化特性.Redis會(huì)把每次寫(xiě)入的數(shù)據(jù)在接收后都寫(xiě)入 appendonly.aof 文件,每次啟動(dòng)時(shí)Redis都會(huì)先把這個(gè)文件的數(shù)據(jù)讀入內(nèi)存里,先忽略RDB文件
appendonly yes
#aof文件名
appendfilename "appendonly7001.aof"
#aof持久化策略,no表示不執(zhí)行fsync,由操作系統(tǒng)保證數(shù)據(jù)同步到磁盤(pán),速度最快.
#always表示每次寫(xiě)入都執(zhí)行fsync,以保證數(shù)據(jù)同步到磁盤(pán)
#everysec表示每秒執(zhí)行一次fsync,可能會(huì)導(dǎo)致丟失這1s數(shù)據(jù)
appendfsync everysec
#設(shè)置為yes表示rewrite期間對(duì)新寫(xiě)操作不fsync,暫時(shí)存在內(nèi)存中,等rewrite完成后再寫(xiě)入,默認(rèn)為no最安全,建議yes.Linux的默認(rèn)fsync策略是30秒.可能丟失30秒數(shù)據(jù).
no-appendfsync-on-rewrite no
#aof自動(dòng)重寫(xiě)配置,前AOF文件大小是上次AOF文件大小的二倍(設(shè)置為100)時(shí),自動(dòng)啟動(dòng)新的日志重寫(xiě)過(guò)程
auto-aof-rewrite-percentage 100
#設(shè)置允許重寫(xiě)的最小aof文件大小,避免了達(dá)到約定百分比但尺寸仍然很小的情況還要重寫(xiě)
auto-aof-rewrite-min-size 64mb
#aof文件可能在尾部是不完整的,如果選擇的是yes,當(dāng)截?cái)嗟腶of文件被導(dǎo)入的時(shí)候,會(huì)自動(dòng)發(fā)布一個(gè)log給客戶端然后load
aof-load-truncated yes
# 如果達(dá)到最大時(shí)間限制(毫秒),redis會(huì)記個(gè)log,然后返回error。當(dāng)一個(gè)腳本超過(guò)了最大時(shí)限。只有SCRIPT KILL和SHUTDOWN NOSAVE可以用。第一個(gè)可以殺沒(méi)有調(diào)write命令的東西。要是已經(jīng)調(diào)用了write,只能用第二個(gè)命令殺。
lua-time-limit 5000
# -------------------- REDIS CLUSTER --------------------
##集群開(kāi)關(guān),默認(rèn)是不開(kāi)啟集群模式。
cluster-enabled yes
#集群配置文件的名稱,每個(gè)節(jié)點(diǎn)都有一個(gè)集群相關(guān)的配置文件,持久化保存集群的信息。這個(gè)文件并不需要手動(dòng)配置,這個(gè)配置文件有Redis生成并更新,每個(gè)Redis集群節(jié)點(diǎn)需要一個(gè)單獨(dú)的配置文件,請(qǐng)確保與實(shí)例運(yùn)行的系統(tǒng)中配置文件名稱不沖突
cluster-config-file /mnt/redis/conf/cluster/7001/nodes-7001.conf
#節(jié)點(diǎn)互連超時(shí)的閥值。集群節(jié)點(diǎn)超時(shí)毫秒數(shù)
cluster-node-timeout 5000
#在進(jìn)行故障轉(zhuǎn)移的時(shí)候,全部slave都會(huì)請(qǐng)求申請(qǐng)為master,但是有些slave可能與master斷開(kāi)連接一段時(shí)間了,導(dǎo)致數(shù)據(jù)過(guò)于陳舊,這樣的slave不應(yīng)該被提升為master。
##如果節(jié)點(diǎn)超時(shí)時(shí)間為三十秒, 并且slave-validity-factor為10,假設(shè)默認(rèn)的repl-ping-slave-period是10秒,即如果超過(guò)310秒slave將不會(huì)嘗試進(jìn)行故障轉(zhuǎn)移
cluster-slave-validity-factor 10
#當(dāng)某個(gè)主節(jié)點(diǎn)的從節(jié)點(diǎn)掛掉裸奔后,會(huì)從其他富余的主節(jié)點(diǎn)分配一個(gè)從節(jié)點(diǎn)過(guò)來(lái),確保每個(gè)主節(jié)點(diǎn)都有至少一個(gè)從節(jié)點(diǎn)
#分配后仍然剩余migration barrier個(gè)從節(jié)點(diǎn)的主節(jié)點(diǎn)才會(huì)觸發(fā)節(jié)點(diǎn)分配,默認(rèn)是1,生產(chǎn)環(huán)境建議維持默認(rèn)值,這樣才能最大可能的確保集群穩(wěn)定
cluster-migration-barrier 1
(六)使用以下命令增加多份配置文件
sed 's@7001@7002@g' /mnt/redis/conf/cluster/7001/redis-7001.conf > /mnt/redis/conf/cluster/7002/redis-7002.conf
sed 's@7001@7003@g' /mnt/redis/conf/cluster/7001/redis-7001.conf > /mnt/redis/conf/cluster/7003/redis-7003.conf
(七)啟動(dòng)redis
/mnt/redis/bin/redis-server /mnt/redis/conf/cluster/7001/redis-7001.conf
/mnt/redis/bin/redis-server /mnt/redis/conf/cluster/7002/redis-7002.conf
/mnt/redis/bin/redis-server /mnt/redis/conf/cluster/7003/redis-7003.conf
(八)當(dāng)后端兩臺(tái)服務(wù)器的redis都啟動(dòng)后,創(chuàng)建集群,-a后面的是密碼
/mnt/redis/bin/redis-cli --cluster create 192.168.10.50:7001 192.168.10.50:7002 192.168.10.50:7003 192.168.10.206:7001 192.168.10.206:7002 192.168.10.206:7003 --cluster-replicas 1 -a cYdNO6yByamPr5d
(九)驗(yàn)證
/mnt/redis/bin/redis-cli -h 192.168.10.50 -p 7001
#進(jìn)入后,驗(yàn)證密碼
auth cYdNO6yByamPr5d
#輸入查看集群命令
cluster info
cluster nodes