redis-cluster
多主集群 负责可扩展性
主从模式 负责高可用性
集群为什么不高可用呢, 因为集群中的每个节点是有hash插槽的, 丢一个就丢了一个插槽. 是分区的概念
config:
cluster-enabled yes
server:
redis-server redis-6371.conf
redis-server redis-6372.conf
redis-server redis-6373.conf
redis-server redis-6374.conf
redis-server redis-6375.conf
redis-server redis-6376.conf
client: //主要是客户端的命令启动集群
redis-cli --cluster create \
192.168.10.101:6371
192.168.10.101:6372
192.168.10.102:6373
192.168.10.102:6374
192.168.10.103:6375
192.168.10.103:6376
--cluster-replicas 1 //比例1 , 1主1从
redis-cli -c -a 123456 -h 192.168.10.103 -p 6376
cluster info
在一致哈希算法中,
如果增加或者移除一个节点,仅影响该节点在哈希环上顺时针相邻的后继节点,其它数据也不会受到影响。(减少了数据迁移量)
映射的结果值往顺时针的方向的找到第一个节点,就是存储该数据的节点。(节点分布不均匀)
一致性哈希算法虽然减少了数据迁移量,但是存在节点分布不均匀的问题。节点越少, 这个缺点越明显. redis放弃了一致性哈希, 才用了哈希槽.
yaml:
cluster:
nodes:
添加主节点
redis-cli -a 123456 --cluster reshad 192.168.10.101:6372(//这里是随便的一个节点, 都代表集群) --cluster-from xxxxxxxxxxxxxxxx(//从哪取槽) --cluster-to xxxxxxxxxxxxxxxxxxxxxxxx(//给谁) --cluster-slots 2000(//给多少)
添加从节点
redis-cli -a 12345 --cluster add-node 192.158.10.103:6378 192.168.1.1:6377 --cluster-slave --cluster-master-id xxxxxxxxxxxxxxxxx
集群 三主三从
删除主节点 要把插槽从新转回去, 再删
or
/redis/bin/redis-cli -c -a 12345 -h 192.16710.101 -p 6371
192.168.10.101:6371> cluster failover //主从切换, 然后再删除从, 避免了转移槽的麻烦
集群的整体转移:
如果目标集群和源集群结构完全一致, 可以一个对应一个的迁移(拷贝RDB或AOF)
如果结构不一致, 先集中迁移到目标级群的一个节点上, 然后再分片
自动迁移工具: redis shark
自动检查工具: redisfullcheck

浙公网安备 33010602011771号