redis集群代理
集群代理方式介绍
redis主流代理有哪些:
目前市面上主流的代理包含:predixy、twemproxy、codis、redis-cerberus四款,这四款各有各的优势,我们逐个对比进行对比分析。
特性 | predixy | twemproxy | codis | redis-cerberus |
---|---|---|---|---|
高可用 | Redis Sentinel或Redis Cluster | 一致性哈希 | Redis Sentinel | Redis Cluster |
可扩展 | Key哈希分布或Redis Cluster | Key哈希分布 | Key哈希分布 | Redis Cluster |
开发语言 | C++ | C | GO | C++ |
多线程 | 是 | 否 | 是 | 是 |
事务 | Redis Sentinel模式单Redis组下支持 | 不支持 | 不支持 | 不支持 |
BLPOP/BRPOP/BLPOPRPUSH | 支持 | 不支持 | 不支持 | 支持 |
Pub/Sub | 支持 | 不支持 | 不支持 | 支持 |
Script | 支持load | 不支持 | 不支持 | 不支持 |
Scan | 支持 | 不支持 | 不支持 | 不支持 |
Select DB | 支持 | 不支持 | 支持 | Redis Cluster只有一个DB |
Auth | 支持定义多个密码,给予不同读写及管理权限和Key访问空间 | 不支持 | 同redis | 不支持 |
读从节点 | 支持,可定义丰富规则读指定的从节点 | 不支持 | 支持,简单规则 | 支持,简单规则 |
多机房支持 | 支持,可定义丰富规则调度流量 | 不支持 | 有限支持 | 有限支持 |
统计信息 | 丰富 | 丰富 | 丰富 | 简单 |
一、搭建redis-cluster-proxy
1.1 介绍
redis cluster是redis的官方集群方案,但是他要求客户端自己做重定向,所以连接单机redis和集群redis的客户端会有些不同,连接集群版redis的时候要客户端连接6个redis实例。官方为了屏蔽这种差异,做了一个redis-cluster-proxy,经过这个proxy的代理后,连接redis集群就和连接单机redis一样了。
1.2 优缺点
建议不要在生产环境使用,目前官方已经很久不更新,并且不能够友好的动态支持故障转移问题
集群某个机器down后,如果不更新代理连接集群,还是可以正常使用的;
如果down的是主库,则通过代理无法访问该主库节点
如果down的是从库,则不影响
代理在启动重新、拉取集群连接信息时,如果在配置文件中配置的任意实例无法连接,则整个代理不可用;
如果redis 集群没有启动成功,redis-cluster-proxy 启动是无法连接到 redis 节点的;
如果出现 redis 集群启动 Waiting for the cluster to join 的情况,redis-cluster-proxy 可以启动成功,但是无法操作。
无法支持故障转移
1.3 docker安装
docker安装
#获取镜像
docker pull ableuler/redis-cluster-proxy
#启动
docker run -d -p 7777:7777 -v /path/proxy.conf:/redis-cluster-proxy/proxy.conf ableuler/redis-cluster-proxy
配置文件修改(源文件在docker里的/redis-cluster-proxy里的proxy.conf ):
增加集群的地址:
cluster 192.168.1.31:7001
cluster 192.168.1.31:7002
cluster 192.168.1.31:7003
cluster 192.168.1.31:7004
cluster 192.168.1.31:7005
cluster 192.168.1.31:7006
启动容器的时候映射好配置文件即可