Redis集群配置
Redis Cluster 是什么
Redis Cluster 是 Redis 的分布式实现,官网说明中阐述了以下几点目标:
- 高性能和线性可扩展性高达 1000 个节点。没有代理,使用异步复制,不对值执行合并操作。
- 可接受的写入安全程度:系统尝试(以最大努力的方式)保留所有来自与大多数主节点连接的客户端的写入。通常有一些小窗口,其中确认的写入可能会丢失。当客户端位于少数分区中时,丢失已确认写入的窗口更大。
- 可用性:Redis 集群能够在大多数主节点可访问的分区中存活下来,并且每个不再可访问的主节点至少有一个可访问
环境
centos7.5,Redis5.0.0
Redis 下载后安装在合适的目录,我是安装在/usr/local/Redis-5.0.0下,过程比较简单,就不赘述了。【官网提及3.0之后的版本即可支持集群操作】
配置
同级下新建cluster文件夹,拷贝 redis.conf 文件进来,copy 4个文件Redis_2001.conf、Redis_2002.conf、Redis_2003.conf、Redis_2004.conf,修改对应配置,主要是端口,节点配置 rdb aof 等。
可参考配置如下:
# 端口号
port 2001
# 后台启动
daemonize yes
# 开启集群
cluster-enabled yes
# 集群节点配置文件
cluster-config-file nodes-2001.conf
# 进程pid的文件位置
pidfile /var/run/Redis-2001.pid
# 持久化配置
# 开启aof
appendonly yes
# aof文件路径
appendfilename "appendonly-2001.aof"
# rdb文件路径
dbfilename dump-2001.rdb
启动
根据上述配置文件依次启动Redis进程
redis-server cluster/Redis-2001.conf
redis-server cluster/Redis-2002.conf
redis-server cluster/Redis-2003.conf
redis-server cluster/Redis-2004.conf
启动完成后,照着某个文章说明连接构建Redis集群:
./Redis-trib.rb create –replicas 1 127.0.0.1:2001 127.0.0.1:2002 127.0.0.1:2003 127.0.0.1:2004
抛出警告:
WARNING: Redis-trib.rb is not longer available!
查看文档发现:Redis 5.0彻底抛弃了ruby【优先看官方文档,优先看官方文档,优先看官方文档】
You should use redis-cli instead.
行,换redis-cli:
redis-cli –cluster create 127.0.0.1:2001 127.0.0.1:2002 127.0.0.1:2003 127.0.0.1:2004 –cluster-replicas 1
又有错误,输出如下:
*** ERROR: Invalid configuration for cluster creation.
*** Redis Cluster requires at least 3 master nodes.
*** This is not possible with 4 nodes and 1 replicas per node.
*** At least 6 nodes are required.
因为是单机测试而已,去掉复制,至少6个节点 我们先忽略。
Redis-cli –cluster create 127.0.0.1:2001 127.0.0.1:2002 127.0.0.1:2003 127.0.0.1:2004
然后有个保存配置的确认,yes之后启动成功!
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
进入客户端
redis-cli -p 2001
查看节点:
cluster nodes
90a734c7716a00060584acb82cb3dd7e437a5459 127.0.0.1:2003@12003 master - 0 1541042930063 3 connected 8192-12287
7ac1fab72c275ba9549a9da71245fdd29a3920a6 127.0.0.1:2002@12002 master - 0 1541042930563 2 connected 4096-8191
490035c372472798a224b6d00c249d8b41508b78 127.0.0.1:2001@12001 myself,master - 0 1541042928000 1 connected 0-4095
9101d285b991c6dcb086cf3da4cd0eae7777ece0 127.0.0.1:2004@12004 master - 0 1541042929563 4 connected 12288-16383
可以看出集群已搭建成功!你可以进行测试了。
当然需要说明的是,这只是我们自己测试用,产线上还是需要开启复制,且按需配置节点,至少 6 个,不然叫啥高可用,还不如单机使用。