redis集群模式及哨兵


一、主從復制(讀寫分離)

通常是一個master,多個slave。

master進行寫操作,slave進行讀操作。

缺點:當master宕機時,redis將無法進行寫操作,僅能讀。

master(端口9000)核心配置:

daemonize yes
port 9000
logfile 9000.log
dir ./
requirepass 123
masterauth 123
bind 192.168.0.115

# AOF 數據持久化
appendonly yes
appendfilename aof-9000.aof
appendfsync everysec
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

slave(端口9001)核心配置:

port 9001
daemonize yes
logfile 9001.log
dir ./
requirepass 123
#配置主節點 slaveof 192.168.0.115 9000 masterauth 123 bind 192.168.0.115 # AOF 數據持久化 appendonly yes appendfilename aof-9001.aof appendfsync everysec no-appendfsync-on-rewrite yes auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb

思考一個問題:當單機redis服務數據量過大怎么辦?

redis3.0過后為此提供了解決方案。

二、cluster模式(分區)(至少需要3個主節點)

1、使用該模式需要用到src目錄下的redis-trib.rb

使用之前需要安裝ruby語言

本人測試時用的redis版本為4.0.10,至少需要2.2以上版本的ruby,而yum install ruby僅為2.0版本,使得運行redis-trib.rb會提示版本過低。

在這里使用另一種簡單的安裝方式(參考https://www.cnblogs.com/ding2016/p/7903147.html

yum install centos-release-scl-rh    //會在/etc/yum.repos.d/目錄下多出一個CentOS-SCLo-scl-rh.repo源
yum install rh-ruby24  -y    //直接yum安裝即可  
scl  enable  rh-ruby24 bash    //必要一步
ruby -v    //查看安裝版本

當ruby -v能運行時,則表示安裝成功。

2、接下來就是創建6個(最少)不同端口號的redis服務,可參考網上修改端口號的方法

關鍵

cluster-enabled  yes

這個要打開。然后啟動6個服務就ok了。

3、運行命令

./redis-trib.rb  create  --replicas  1  192.168.0.189:7000 192.168.0.189:7001  192.168.0.189:7002 192.168.0.189:7003  192.168.0.189:7004  192.168.0.189:7005

replicas 1的意思是自動分配master,並為每個master創建1個slave。

運行,可能會讓你輸入yes。

如果報錯,以下提供3種解決方案:

①刪除dump.rdb和nodes.conf

②進入各個端口的客戶端(如 ./redis-cli -h 192.168.0.189 -p 7000),運行reflushdb

③進入各個端口客戶端,運行cluster reset

4、創建成功后就可以使用了。

常用命令:

ps -ef | grep redis #查看redis進程
redis客戶端命令:
    cluster info
    cluster nodes

三、哨兵模式(sentinel)

主要修改的配置文件為(sentinel.conf)參考(https://www.cnblogs.com/guolianyu/p/10249687.html

port 8000
daemonize yes
logfile "8000.log"
dir "./"
#監控的主節點,后面的1表示指明當有多少個sentinel認為一個master失效時,master才算真正失效
sentinel monitor mymaster 192.168.0.189 7000 1
sentinel down-after-milliseconds mymaster 30000
#這個配置項指定了在發生failover主備切換時最多可以有多少個slave同時對新的master進行 同步,這個數字越小,完成failover所需的時間就
越長,但是如果這個數字越大,就意味着越多的slave因為replication而不可用。可以通過將這個值設為 1 來保證每次只有一個slave 處於不能處理命令請求的狀態。 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 15000 #如果主節點有密碼就寫,沒密碼就注掉 sentinel auth-pass mymaster 123 #哨兵ip bind 192.168.0.198

通過./redis-centinel ../sentinel.conf即可啟動。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM