搭建Redis高可用的三种方式

Redis主从复制

当master出现问题时需要手动切换master

在从机的配置文件中做如下配置:

replicaof <masterip> <masterport>

或者在启动从机实例时使用

redis-server /etc/redis/6379.conf --replicaof 192.168.157.11 6379

或者使用redis-cli连接从机实例后执行 REPLICAOF 192.168.157.11 6379 命令

也可以调用命令:REPLICAOF no one手动切换从机为master,取消对之前master的跟随

Redis哨兵

Redis哨兵替代了手动操作,可以监控并切换master

Redis哨兵会发现主身上的多个从,还会发现监控同样master的其他哨兵。多个哨兵通过主redis的发布/订阅发现其他哨兵,可以使用PSUBSCRIBE * 来订阅主master上的所有channel,观察哨兵之间的通信。

编写哨兵配置文件

这里需要注意的是,如果哨兵与当前master处于同一主机,并且两个哨兵启动后疯狂刷修改ip相关日志,则使用本机ip而不是127.0.0.1。

#哨兵占用端口
port 26379
#哨兵要监控的master
#mymaster是哨兵监控的master命名,最少给这个redis实例投2票
sentinel monitor mymaster 192.168.157.11 6379 2

哨兵启动后会根据情况修改该配置文件。

更多配置参数:http://www.redis.cn/topics/sentinel.html

启动哨兵

以哨兵方式启动redis实例,哨兵会监控master并对其他从进行投票,选出新的master。

redis-server ./sentinel.conf --sentinel

Redis Cluster集群

Redis 集群可以使数据分片,每个reids实例持有不同槽位的数据,可以将槽转移到其他实例上,还可以从集群中添加或删除节点。

启动实例

编写/etc/redis/cluster.conf配置文件

#该节点占用端口
port 7000
#是否以集群方式启动
cluster-enabled yes
#节点配置文件,自动创建,无需配置
cluster-config-file nodes.conf
cluster-node-timeout 5000
#开启AOF
appendonly yes
#根据实际情况配置
protected-mode no

启动redis实例,可以在不同机器上开多个实例。这里假设分别在三台机器上开启三台redis实例:192.168.157.11、192.168.157.12、192.168.157.13

redis-server /etc/redis/cluster.conf

创建集群

redis-cli --cluster create 192.168.157.11:7000 192.168.157.12:7000 192.168.157.13:7000

假设创建6台实例,3主3从,在上面命令的最后加上 --cluster-replicas 1,表示一共6台实例,每个主有一个从。如果参数设置为2则为每个主两个从。

客户端连接集群

redis-cli -c -h 192.168.157.11 -p 7000

其中-c表示用来连接cluster的客户端。如果使用普通客户端连接集群,当向集群中set值时会以报错的方式返回应该重定向的节点。使用-c直接将客户端重定向到指定节点并执行相应命令。

集群操作

关于对集群的操作可以使用redis-cli --cluster help命令查看

[root@localhost ~]# redis-cli --cluster help
Cluster Manager Commands:
  create         host1:port1 ... hostN:portN
                 --cluster-replicas <arg>
  check          host:port
                 --cluster-search-multiple-owners
  info           host:port
  fix            host:port
                 --cluster-search-multiple-owners
  reshard        host:port
                 --cluster-from <arg>
                 --cluster-to <arg>
                 --cluster-slots <arg>
                 --cluster-yes
                 --cluster-timeout <arg>
                 --cluster-pipeline <arg>
                 --cluster-replace
  rebalance      host:port
                 --cluster-weight <node1=w1...nodeN=wN>
                 --cluster-use-empty-masters
                 --cluster-timeout <arg>
                 --cluster-simulate
                 --cluster-pipeline <arg>
                 --cluster-threshold <arg>
                 --cluster-replace
  add-node       new_host:new_port existing_host:existing_port
                 --cluster-slave
                 --cluster-master-id <arg>
  del-node       host:port node_id
  call           host:port command arg arg .. arg
  set-timeout    host:port milliseconds
  import         host:port
                 --cluster-from <arg>
                 --cluster-copy
                 --cluster-replace
  help           

参考:

Redis中文官方网站

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值