简介
集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果
作用
- 分散单台服务器的访问压力,实现负载均衡
- 分散单台服务器的存储压力,实现可扩展性
- 降低单台服务器宕机带来的业务灾难
集群结构设计
数据存储设计
- 将所有的存储空间计划切割成16384份,每台主机保存一部分,每份代表的是一个存储空间,称作槽,不是一个key的保存空间。
- 将key按照
CRC16(key) %16384
计算出的结果放到对应的存储空间
集群内部通讯设计
- 各个数据库相互通信,保存各个库中槽的编号数据
- 一次命中,直接返回
- 一次未命中,告知具体位置
Cluster集群结构搭建
现拟搭建一个三主三从集群的例子。
- 修改配置文件,以其中一个配置文件为例,其他配置文件相应复制修改
[root@localhost conf]# vim redis-6379.conf
port 6379
#如果打印日志就把以下注释掉
#daemonize no
#logfile "6379.log"
#loglevel verbose
dir /redis-5.0.7/data
dbfilename dump-6379.rdb
rdbcompression yes
rdbchecksum yes
stop-writes-on-bgsave-error yes
save 10 2
appendonly yes
appendfsync everysec
appendfilename appendonly-6379.aof
auto-aof-rewrite-min-size 10mb
auto-aof-rewrite-percentage 100
bind 127.0.0.1
databases 16
#maxclients 0
timeout 300
# 添加节点
cluster-enabled yes
# cluster配置文件名,该文件属于自动生成,仅用于快速查找文件并查询文件内容
cluster-config-file node-6379.conf
# 节点服务响应超时时间,用于判定该节点是否下线或切换为从节点
cluster-node-timeout 10000
# master连接的slave最小数量
#cluster-migration-barrier <count>
- 通过sed命令复制修改其他配置文件
[root@localhost conf]# sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf
...
- 将三主三从6个redis服务启动
[root@localhost conf]# ps -ef|grep "redis-"
root 6751 6723 0 06:30 pts/0 00:00:00 ./src/redis-server 127.0.0.1:6379 [cluster]
root 6773 6500 0 06:35 pts/1 00:00:00 ./src/redis-server 127.0.0.1:6380 [cluster