一般是一個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
一、使用該模式須要用到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
主要修改的配置文件爲(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便可啓動。