一般是一个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便可启动。