1、结构规划
三台机器为例
2、地址和端口对应
A : 192.168.1.1:7000
C1 : 192.168.1.1:7001
B : 192.168.1.2:7000
A1 : 192.168.1.2:7001
C : 192.168.1.3:7000
B1 : 192.168.1.3:7001
C2 : 192.168.1.3:7002
3、配置
所有节点,除了端口号,配置是一样的配置:
mkdir /etc/redis/cluster/7000(对应端口修改)
vim /etc/redis/cluster/7000/redis-7000.conf
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
appendonly yes
cluster-require-full-coverage no
daemonize yes
dir ./
cluster-migration-barrier 1
redis-server /opt/redis/conf/redis-7000.conf > /opt/redis/logs/redis-7000.log 2>&1 &
redis-server /opt/redis/conf/redis-7001.conf > /opt/redis/logs/redis-7001.log 2>&1 &
#C3
redis-server /opt/redis/conf/redis-7002.conf > /opt/redis/logs/redis-7002.log 2>&1 &
4、集群配置
redis-trib.rb create --replicas 1 192.168.1.1:7000 192.168.1.2:7000 192.168.1.3:7000 192.168.1.1:7001 192.168.1.2:7001 192.168.1.3:7001
检查状态
redis-trib.rb check 1 192.168.1.1:7000
输出如下内容则为成功:
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
5、给C添加C2从节点
之所以要多添加一个从节点,是因为:当集群中某一个master宕机了,其从升级为主后,会出现这个新主没有从的情况,此时,这个C2会自动分配为这个新主的Slave.
安装配置和前面的实例是一样的,只需修改配置文件的端口。添加步骤:登录集群执行cluster nodes
获取C的节点ID-登录C2将其设置为C的Slave(也可以是A或者B的)。例如:
cluster replicate 2b9ebcbd627ff0fd7a7bbcc5332fb09e72788835
6、总结
这是官方集群的基本配置,客户端需要支持ask/move访问节点,便可以访问其中一个主节点来使用集群。当集群中不可用节点超过半数,整个集群将不可用,当集群中Master宕机,其对应的Slave会提升为Master,原本的Master再次加入启动连接到集群中时,会成为Slave。