redis集群配置:
建立6個redis服務器,配置如下:
Port分別為7000, 7001, 7002, 7003, 7004, 7005
Cluster_config_file分別為:nodes_7000.conf,nodes_7001.conf, nodes_7002.conf, nodes_7003.conf, nodes_7004.conf,nodes_7005.conf
Pidfile分別為: “/var/run/redis_7000.pid”,“/var/run/redis_7001.pid”, “/var/run/redis_7002.pid”, “/var/run/redis_7003.pid”,“/var/run/redis_7004.pid”, “/var/run/redis_7005.pid”
然后分別啟動這6個redis服務器.
再使用如下命令將6個redis實例進行主從關聯與數據分片:
redis-trib.rb? create?--replicas? 1? IP:7000 IP:7001? IP:7002 IP:7003? IP:7004? IP:7005
//create? --replicas 1表示為每臺主服務器分配一臺從服務器.
Redis集群報錯:
Error:ERR Slot 5798 is already busy (Redis::CommandError)
Solution:用redis-cli登錄到每個節點執行flushall和cluster reset
運行redis-trib.rb 命令時報錯:
Solution:yum -y?install?ruby
ruby-devel rubygems rpm-build
gem?install?redis
效果圖:
Redis主從配置:
在未設置bind?? IP與requirepass??password兩項配置時,需要將protected-mode設置為no, 從而允許遠程訪問.
主服務器配置:
從服務器配置:
Slaveof? IP? port?---------添加從屬服務器,參數為IP地址、端口號
主備切換配置:
Sentinel.conf:
sentinel monitor master-6379 127.0.0.1 6379 1--------哨兵監視服務器,參數為被監視服務器的名稱(自己設定)、IP、端口號、主備切換條件(同意切換主備的哨兵個數)
sentinel failover-timeout master-6379 900000---------哨兵切換主備的條件,參數為被監視服務器名稱、時間間隔(在被監視服務器失去聯系900000毫秒后切換主備服務器)
down-after-milliseconds 選項指定了Sentinel 認為服務器已經斷線所需的毫秒數。
parallel-syncs 選項指定了在執行故障轉移時,最多可以有多少個從服務器同時對新的主服務器進行同步,這個數字越小,完成故障轉移所需的時間就越長。