集群的架构:集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果
集群的作用:
分散单台服务器的访问压力,实现负载均衡
分散单台服务器的存储压力,实现可扩展性
降低单台服务器宕机带来业务灾难
数据存储设计
集群内部通讯设计
在虚拟机中启动多个窗口进行集群搭建演示
主要命令在主命令操作客户端执行
修改redis.conf配置文件
添加如下内容
1 2 3 4 |
cluster-enabled yes # 启动为节点 cluster-config-file nodes-6379.conf # cluster配置文件名,该文件属于自动生成,仅用于快速查找文件并查询文件内容 cluster-node-timeout 10000 # 节点服务响应超时时间,用于判定该节点是否下线或切换为从节点 cluster-migration-barrier <count> # master连接的slave最小数量 |
快速复制5分配置文件并替换里面的端口
1 2 3 4 5 6 |
[root@localhost conf]# sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf [root@localhost conf]# sed "s/6379/6381/g" redis-6379.conf > redis-6381.conf [root@localhost conf]# sed "s/6379/6382/g" redis-6379.conf > redis-6382.conf [root@localhost conf]# sed "s/6379/6383/g" redis-6379.conf > redis-6383.conf [root@localhost conf]# sed "s/6379/6384/g" redis-6379.conf > redis-6384.conf [root@localhost conf]# sed "s/6379/6385/g" redis-6379.conf > redis-6385.conf |
全部执行后可以通过cat指令查看内容确保被修改
启动redis服务集群
1 2 3 4 5 6 7 |
# 在第一个窗口执行6379服务 redis-server redis-6379.conf # 在第二个窗口执行6380服务 redis-server redis-6380.conf # 在第三个窗口执行6381服务 redis-server redis-6381.conf # 下面的代码依次类推到6385 |
执行命令查看redis进程和端口
1 |
ps -ef | grep redis- |
连接节点
在src目录下查看redis-trib.rb
在高版本中已经将启动操作移动到redis-cli中
启动需要两个下载两个文件分别是ruby和gem
1
2
# 下载命令也会将gem一起
yum -y install rubygems
1 2 3 4 |
# --cluster create 创建集群 # --cluster-replicas 1 指定集群的内部结构(1代表一个master连接1个slave,2代表一个master连接两个save) # 后面的连接端口按数量实现master连接哪一个slave,1对1,1对2 redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1 |
执行的结果如下
查看配置信息的结果如下
执行yes命令后的信息如下
再次查看配置文件的信息,里面记录这所有集群信息
启动客户端存储数据
因为使用了集群部署,所以通过-c参数可以操作集群,如果不指定的是操作redis命令会提示(error) MOVED 5798 127.0.0.1:6380
注意:-c操作集群
1 2 3 4 5 |
redis-cli -c # 创建key,通过返回信息可以知道key存储到6380下了 127.0.0.1:6379> set name 123 -> Redirected to slot [5798] located at 127.0.0.1:6380 OK |
指定端口连接客户端
1 2 3 4 5 6 7 |
# 连接指定的集群客户端 [root@localhost data]# redis-cli -c -p 6382 # 获取key 127.0.0.1:6382> get name -> Redirected to slot [5798] located at 127.0.0.1:6380 "123" 127.0.0.1:6380> |
Cluster节点操作命令
查看集群节点信息
1 |
cluster nodes |
进入一个从节点 redis,切换其主节点
1 |
cluster replicate <master-id> |
发现一个新节点,新增主节点
1 |
cluster meet ip:port |
忽略一个没有solt的节点
1 |
cluster forget <id> |
手动故障转移
1 |
cluster failover |
redis-trib命令
添加节点
1 |
redis-trib.rb add-node |
删除节点
1 |
redis-trib.rb del-node |
重新分片
1 |
redis-trib.rb reshard |
1、模拟从机下线操作
在从机服务器执行Ctrl + C下载服务
观察连接的主机情况,主机会在10秒内连接不上从机就会标记从机失败,其他集群服务会连接上失败的,其他服务会接收到信息
再次启动从机,主机就会重新连接上从机
如果主机下线了,从机会某槽换位,当主机重新上线的时候,原来的主机就会变成从机