redis集羣模式及哨兵

1、主從複製(讀寫分離)

一般是一個master,多個slave。html

master進行寫操做,slave進行讀操做。node

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

master(端口9000)核心配置:centos

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)核心配置:ruby

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服務數據量過大怎麼辦?bash

redis3.0事後爲此提供瞭解決方案。app

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

一、使用該模式須要用到src目錄下的redis-trib.rb測試

使用以前須要安裝ruby語言ui

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

在這裏使用另外一種簡單的安裝方式(參考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能運行時,則表示安裝成功。

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

關鍵

cluster-enabled  yes

這個要打開。而後啓動6個服務就ok了。

三、運行命令

./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

四、建立成功後就可使用了。

經常使用命令:

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

3、哨兵模式(sentinel)

主要修改的配置文件爲(sentinel.conf)參考(http://www.javashuo.com/article/p-knctpmke-do.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便可啓動。

相關文章
相關標籤/搜索