1. 实验用的集群的结构
应用服务器
|
Redis集群管理器
| | |
主节点1 从节点1 主节点2 从节点2 主节点3 从节点3
2. 原理
(1)集群管理器将16384个哈希槽点平均分配到三台master上,只有master会有槽点。具体算法是对key进行哈希求余,得到的余数落在那个节点的哈希槽点范围内,就分到那台master上
(2)只有master才有槽点
(3)一个从节点只对应一个master节点,即只会复制那个master节点的数据。如果master节点坏了,其中一个slave节点会升级为master。如果master和从节点都坏了,那么master对应的数据就丢了。
(4)只有主节点可以被写入,从节点只是同步。
(5)AOF同步保存,RDB有保存的规则。
3. 创建集群步骤(用一台机器来模拟)
(1)创建六个文件夹
(2)将redis.conf文件复制到六个文件夹中
(3)依次修改如下配置:port,bind,pidfile,logfile,cluster-enabled yes, cluster-config-file, cluster-node-timeout
(4)对六个文件夹,分别运行 sudo ./redis-server redis.conf (注意,此时只是将六个redis运行起来了,并没有组成集群)
(5)安装ruby: sudo apt install Ruby
(6)安装redis接口:sudo gem install redis
(7)创建集群./redis-trib.rb create --replicas 1 (1分拷贝) <6个ip:port>
(8)集群就创建好了
(9)打开client: ./redis-cli -c -h <ip> -p <port> 可以是任何节点中的ip port
(10)通过client添加数据,如果key正好落在client对应的节点,就没有转发消息。否则,你会看到有一个转发消息。