搭建集群
建集群的第一件事情我们需要一些运行在 集群模式的Redis实例。这意味这集群并不是由一些普通的Redis实例组成的,集群模式需要通过配置启用,开启集群模式后的Redis实例便可以使用集群特有的命令和特性了。
下面是一个最少选项的集群的配置文件:
-
port 7000
-
-
# 打开集群模式
-
cluster-enabled
yes
-
-
# 设定节点配置文件名
-
cluster-config-file nodes.conf
-
-
# 设定节点失联时间,超过该时间(毫秒),集群自动进行主从切换。
-
cluster-node-timeout 5000
-
-
# 开启 AOF
-
appendonly
yes
文件中的 cluster-enabled 选项用于开实例的集群模式, 而 cluster-conf-file 选项则设定了保存节点配置文件的路径, 默认值为 nodes.conf,节点配置文件无须人为修改,它由 Redis 集群在启动时创建,并在有需要时自动进行更新。
要让集群正常运作至少需要三个主节点,不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。
准备好 6 个正在运行中的 Redis 实例,接下来需要使用这些实例来创建集群。
通过使用 Redis 集群命令行工具 redis-trib , 编写节点配置文件的工作可以非常容易地完成: redis-trib 位于 Redis 源码的 src 文件夹中, 它是一个 Ruby 程序, 这个程序通过向实例发送特殊命令来完成创建新集群, 检查集群, 或者对集群进行重新分片(reshared)等工作。
./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
或者还可以使用
./redis-cli --cluster create --cluster-replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
选项–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。
redis cluster 如何分配这六个节点?
- 一个集群至少要有三个主节点。
- 选项 --cluster-replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。
- 分配原则尽量保证每个主数据库运行在不同的IP地址,每个从库和主库不在一个IP地址上。
准备实例和配置
由于设备限制原因,在当前用例中配置的是一主两从,生产环境配置参考上述配置实现3主3从。集群结构如图:
首先在同一台虚拟机开启3个实例,必须先准备三份不同的配置文件。如图:
开启主从关系
现在三个实例还没有任何关系,要配置主从可以使用 replicaof 或者 slaveof(5.0以前)命令。
开启主从模式有临时和永久两种模式。
临时
- 使用 redis-cli 客户端连接到 redis 服务,执行 replicaof 命令。
永久
- 修改配置文件,在redis.conf中添加一行配置:replicaof <masterip> <masterport>
为了方便学习,使用了临时的方式。
通过 redis-cli 命令连接 6379 节点,并打开实时日志。
-
[root
@localhost utils]
# redis-cli -p 6379
-
127.0.
0.1:
6379>
再次通过 redis-cli 命令连接 6380,执行下面命令:
-
[root
@localhost utils]
# redis-cli -p 6380
-
127.0.0.1:6380> replicaof
127.0.
0.1
6379
-
OK
-
127.0.0.1:6380>
说明主从配置成功。
通过执行以下命令查看状态
127.0.0.1:6380> info replication
再次打开 6379 节点输出的日志,可以看到以下信息:
从日志中可以看出 6380 节点已经配置成功。
上边使用的是启动后配置主从关系,接下来启动 6381 节点时就指定主从关系
redis-server /etc/redis/6381.conf --replicaof 127.0.0.1 6379
再次打开 6379 节点输出的日志,可以看到以下信息:
到此,主从就配置完成了。
再次进入到 6379 节点为中查询状态,如图:
测试
执行下列操作以测试:
使用 redis-cli 分别连接 6379、6380、6381,执行 set k1 test 命令,只有 6379 才可以执行成功,其余两个节点为在做添加的时候出现:(error) READONLY You can't write against a read only replica。
Redis 集群优缺点
优点
- 实现扩容
- 分摊压力
- 无中心配置相对简单
缺点
- 多键操作是不被支持的
- 多键的Redis事务是不被支持的。lua脚本不被支持
- 由于集群方案出现较晚,很多公司已经采用了其他的集群方案,而代理或者客户端分片的方案想要迁移至redis cluster,需要整体迁移而不是逐步过渡,复杂度较大。
总结
主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。故障恢复无法自动化,写操作无法负载均衡,存储能力受到单机的限制。
以上操作虽然完成了主从集群搭建,实现了数据横向扩展,但还存在一个非常严重的问题。
主节点挂了会怎么样?
集群下常用命令
-
# 查看状态
-
info replication
-
-
# 查看当前集群信息
-
cluster info
-
-
# 查看集群里有多少个节点
-
cluster nodes
转载:https://blog.csdn.net/xhaimail/article/details/128443692