溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

redis3.0集群安裝部署

發(fā)布時(shí)間:2020-06-22 10:37:23 來(lái)源:網(wǎng)絡(luò) 閱讀:497 作者:aaron428 欄目:數(shù)據(jù)庫(kù)

wget http://download.redis.io/releases/redis-3.0.0.tar.gz && tar zxvf redis-3.0.0.tar.gz && cd redis-3.0.0 && make PREFIX=/usr/local/redis MALLOC=libc install


mkdir -p /usr/local/redis/run

mkdir -p /usr/local/redis/logs

mkdir -p /usr/local/redis/rdb

mkdir -p /usr/local/redis/etc

mkdir -p /usr/local/redis/nodes


1、###redis集群配置文件,根據(jù)實(shí)例端口區(qū)分


#Redis默認(rèn)不是以守護(hù)進(jìn)程的方式運(yùn)行,可以通過(guò)該配置項(xiàng)修改,使用yes啟用守護(hù)進(jìn)程

daemonize yes

#當(dāng) Redis 以守護(hù)進(jìn)程的方式運(yùn)行的時(shí)候,Redis 默認(rèn)會(huì)把 pid 文件放在/var/run/redis.pid,當(dāng)運(yùn)行多個(gè) redis 服務(wù)時(shí),需要指定不同的 pid 文件和端口

pidfile /usr/local/redis/run/redis_6381.pid

#配置redis端口

port 6381

tcp-backlog 511

#客戶端連接的超時(shí)時(shí)間,單位為秒,超時(shí)后會(huì)關(guān)閉連接

timeout 300

tcp-keepalive 0

#日志記錄等級(jí),4個(gè)可選值debug、verbose、notice、warning

loglevel notice

#配置 log 文件地址,默認(rèn)打印在命令行終端的窗口上,也可設(shè)為/dev/null屏蔽日志

logfile "/usr/local/redis/logs/6381.log"

#設(shè)置數(shù)據(jù)庫(kù)的個(gè)數(shù),可以使用 SELECT 命令來(lái)切換數(shù)據(jù)庫(kù)

databases 16

#設(shè)置 Redis 進(jìn)行數(shù)據(jù)庫(kù)鏡像的頻率。保存數(shù)據(jù)到disk的策略 900秒之內(nèi)有1個(gè)keys發(fā)生變化時(shí)

save 900 1

#設(shè)置 Redis 進(jìn)行數(shù)據(jù)庫(kù)鏡像的頻率。保存數(shù)據(jù)到disk的策略 30秒之內(nèi)有10個(gè)keys發(fā)生變化時(shí)

save 300 10 

#設(shè)置 Redis 進(jìn)行數(shù)據(jù)庫(kù)鏡像的頻率。保存數(shù)據(jù)到disk的策略 60秒之內(nèi)有10000個(gè)keys發(fā)生變化時(shí)

save 60 10000 

stop-writes-on-bgsave-error yes 

#在進(jìn)行鏡像備份時(shí),是否進(jìn)行壓縮

rdbcompression yes 

rdbchecksum yes

#鏡像備份文件的文件名

dbfilename dump6381.rdb 

#數(shù)據(jù)庫(kù)鏡像備份的文件放置的路徑,默認(rèn)值為 ./

dir /usr/local/redis/rdb 

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

#限制同時(shí)連接的客戶數(shù)量,當(dāng)連接數(shù)超過(guò)這個(gè)值時(shí),redis 將不再接收其他連接請(qǐng)求,客戶端嘗試連接時(shí)將收到 error 信息

maxclients 10000 

#最大可使用內(nèi)存。如果超過(guò),Redis會(huì)試圖刪除EXPIRE集合中的keys

maxmemory 1G 

#volatile-lru使用LRU算法來(lái)刪除過(guò)期的set,allkeys-lru刪除任何遵循LRU算法的key,volatile-ttl刪除最近即將過(guò)期的key,volatile-random ->隨機(jī)地刪除過(guò)期set中的key

maxmemory-policy volatile-ttl 

#對(duì)于處理redis內(nèi)存來(lái)說(shuō),LRU和minor TTL算法不是精確的,而是近似的(估計(jì)的)算法。所以我們會(huì)檢查某些樣本#來(lái)達(dá)到內(nèi)存檢查的目的。默認(rèn)的樣本數(shù)是3,你可以修改它。

maxmemory-samples 3 


#默認(rèn)情況下,Redis會(huì)異步的把數(shù)據(jù)保存到硬盤。如果你的應(yīng)用場(chǎng)景允許因?yàn)橄到y(tǒng)崩潰等極端情況而導(dǎo)致最新數(shù)據(jù)丟失#的話,那這種做法已經(jīng)很ok了。否則你應(yīng)該打開(kāi)‘a(chǎn)ppend only’模式,開(kāi)啟這種模式后,Redis會(huì)在#appendonly.aof文件中添加每一個(gè)寫操作,這個(gè)文件會(huì)在Redis啟動(dòng)時(shí)被讀取來(lái)在內(nèi)存中重新構(gòu)建數(shù)據(jù)集。

appendonly no

appendfilename "appendonly6381.aof"

#no:不fsync,只是通知OS可以flush數(shù)據(jù)了具體是否flush取決于OS性能更好; always: 每次寫入append only 日志文件后都會(huì)fsync性能差,但很安全;everysec: 沒(méi)間隔1秒進(jìn)行一次fsync折中.

appendfsync everysec 

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

lua-time-limit 5000

cluster-enabled yes

cluster-config-file /usr/local/redis/nodes/6381.conf

cluster-node-timeout 5000

slowlog-log-slower-than 10000

slowlog-max-len 1024

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

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


2、啟動(dòng)redis實(shí)例

/usr/local/redis/bin/redis-server /usr/local/redis/etc/6380.conf &


3、復(fù)制redis-trib.rb

cp /root/redis-3.0.0/src/redis-trib.rb /usr/local/redis/bin


4、啟動(dòng)集群

/usr/local/redis/bin/redis-trib.rb create 10.144.8.86:7000 10.144.8.86:7001 10.144.8.86:7002

如果是6個(gè)實(shí)例,create 后加參數(shù)--replicas 1會(huì)產(chǎn)生3個(gè)主節(jié)點(diǎn),3個(gè)slave節(jié)點(diǎn)



執(zhí)行上面的命令的時(shí)候會(huì)報(bào)錯(cuò),因?yàn)槭菆?zhí)行的ruby的腳本,需要ruby的環(huán)境

錯(cuò)誤內(nèi)容:/usr/bin/env: ruby: No such file or directory

所以需要安裝ruby的環(huán)境,這里推薦使用yum install ruby安裝

yum install ruby

 

然后再執(zhí)行第6步的創(chuàng)建集群命令,還會(huì)報(bào)錯(cuò),提示缺少rubygems組件,使用yum安裝

 

錯(cuò)誤內(nèi)容:

./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)

from ./redis-trib.rb:24

yum install rubygems

6.3再次執(zhí)行第6步的命令,還會(huì)報(bào)錯(cuò),提示不能加載redis,是因?yàn)槿鄙賠edis和ruby的接口,使用gem 安裝

錯(cuò)誤內(nèi)容:

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)

from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

from ./redis-trib.rb:25



使用gem 安裝 :gem install redis


5、通過(guò)redis-trib.rb工具的check子命令來(lái)查看集群信息

/usr/local/redis/bin/redis-trib.rb check 127.0.0.1:6379


6、通過(guò)redis客戶端實(shí)現(xiàn)對(duì)Redis Cluster的讀寫。當(dāng)前,redis客戶端同樣實(shí)現(xiàn)了對(duì)集群的支持,但使用方法略有不同,即在啟動(dòng)的時(shí)候需要添加一個(gè)-c參數(shù)。

/usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 6379




http://blog.csdn.net/xu470438000/article/details/42972123

http://blog.csdn.net/myrainblues/article/details/25881535

Redis集群添加節(jié)點(diǎn)

1:首先把需要添加的節(jié)點(diǎn)啟動(dòng)


2:執(zhí)行以下命令,將這個(gè)新節(jié)點(diǎn)添加到集群中

cd /usr/local/redis3.0/src/

./redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000


3:執(zhí)行命令redis-cli -c -p 7000 cluster nodes,查看剛才新增的節(jié)點(diǎn)


4:增加了新的節(jié)點(diǎn)之后,這個(gè)新的節(jié)點(diǎn)可以成為主節(jié)點(diǎn)或者是從節(jié)點(diǎn)

4.1 把這個(gè)節(jié)點(diǎn)變成主節(jié)點(diǎn),使用redis-trib程序,將集群中的某些哈希槽移動(dòng)到新節(jié)點(diǎn)里面, 這個(gè)新節(jié)點(diǎn)就成為真正的主節(jié)點(diǎn)了。

執(zhí)行下面的命令對(duì)集群中的哈希槽進(jìn)行移動(dòng)

cd /usr/local/redis3.0/src

./redis-trib.rb reshard 127.0.0.1:7000

系統(tǒng)會(huì)提示我們要移動(dòng)多少哈希槽,這里移動(dòng)1000個(gè)

然后還需要指定把這些哈希槽轉(zhuǎn)移到哪個(gè)節(jié)點(diǎn)上,

輸入我們剛才新增的節(jié)點(diǎn)的ID

f32dc088c881a6b930474fc5b52832ba2ff71899

然后需要我們指定轉(zhuǎn)移哪幾個(gè)幾點(diǎn)的哈希槽

輸入all 表示從所有的主節(jié)點(diǎn)中隨機(jī)轉(zhuǎn)移,湊夠1000個(gè)哈希槽

然后再輸入yes,redis集群就開(kāi)始分配哈希槽了。

至此,一個(gè)新的主節(jié)點(diǎn)就添加完成了,執(zhí)行命令查看現(xiàn)在的集群中節(jié)點(diǎn)的狀態(tài)

redis-cli -c -p 7000 cluster nodes

4.2:把這個(gè)節(jié)點(diǎn)變成從節(jié)點(diǎn)

前面我們已經(jīng)把這個(gè)新節(jié)點(diǎn)添加到集群中了,現(xiàn)在我們要讓新節(jié)點(diǎn)成為127.0.0.1:7001的從節(jié)點(diǎn),只需要執(zhí)行下面的命令就可以了,命令后面的節(jié)點(diǎn)ID就是127.0.0.1:7001的節(jié)點(diǎn)ID

redis-cli -c -p 7006 cluster replicate 0b00721a509444db793d28448d8f02168b94bd38

使用下面命令來(lái)確認(rèn)一下127.0.0.1:7006是否已經(jīng)成為127.0.0.1:7001的從節(jié)點(diǎn)

 redis-cli -p 7000 cluster nodes | grep slave | grep 0b00721a509444db793d28448d8f02168b94bd38

看到下面圖片中的情況就表示添加成功

 

 

 

 

Redis集群刪除節(jié)點(diǎn)

1:如果刪除的節(jié)點(diǎn)是主節(jié)點(diǎn),這里我們刪除127.0.0.1:7006節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)有1000個(gè)哈希槽

首先要把節(jié)點(diǎn)中的哈希槽轉(zhuǎn)移到其他節(jié)點(diǎn)中,執(zhí)行下面的命令

cd /usr/local/redis3.0/src

./redis-trib.rb reshard 127.0.0.1:7000

系統(tǒng)會(huì)提示我們要移動(dòng)多少哈希槽,這里移動(dòng)1000個(gè),因?yàn)?27.0.0.1:7006節(jié)點(diǎn)有1000個(gè)哈希槽

然后系統(tǒng)提示我們輸入要接收這些哈希槽的節(jié)點(diǎn)的ID,這里使用127.0.0.1:7001的節(jié)點(diǎn)ID

然后要我們選擇從那些節(jié)點(diǎn)中轉(zhuǎn)出哈希槽,這里一定要輸入127.0.0.1:7006這個(gè)節(jié)點(diǎn)的ID,最后輸入 done  表示輸入完畢

最后一步,使用下面的命令把這個(gè)節(jié)點(diǎn)刪除

cd /usr/local/redis3.0/src/

./redis-trib.rb del-node 127.0.0.1:7006 127.0.0.1:7006

2:如果節(jié)點(diǎn)是從節(jié)點(diǎn)的,直接使用下面的命令刪除即可。

cd /usr/local/redis3.0/src/

./redis-trib.rb del-node 127.0.0.1:7006 127.0.0.1:7006


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI