Redis系列:搭建Redis集群(集群模式)

建议搭建步骤:

  • 1、安装6台单机redis
  • 2、修改配置文件:redis.conf
  • 3、在某一台上执行集群命令

效果

  • 1、集群搭建成功后,从节点宕机,不会影响集群的使用,从节点启动后,会自动加入集群,还是从节点。
  • 2、主节点宕机后, 不会影响集群的使用,从节点会自动生成主节点,原主节点启动后,会自动加入集群,成为原从节点的从节点
  • 上述效果不需要使用哨兵

搭建步骤及脚本:

  • 常见中间件安装语句中的Redis安装脚本。

  • 注意事项:

    • 在 redis.conf 中一定要加入 masterauth 和 requirepass,不然主从切换会出现问题,尽量保持这两者密码一致。
  • 集群命令

    • redis-cli --cluster create --cluster-replicas 1 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 -a 123456
    • 注意到最后的-a 输入密码:ljfirst或者你自己的密码
    • redis5以后,不需要额外安装ruby
  • 校验

    • 安装时会出现提示,并且会询问是否同意set above configuration? 你输入yes就行
    • 输入redis-cli,输入AUTH 密码验证,输入cluster nodes 或者cluster info查看集群信息。

使用

  • 命令行使用(集群模式需要加 -c)
    • redis-cli -c
  • 客户端使用
@Test
public void testJedisCluster() throws Exception {
	// 第一步:使用JedisCluster对象。需要一个Set参数。Redis节点的列表。
	Set<HostAndPort> nodes = new HashSet<>();
	nodes.add(new HostAndPort("192.168.204.134", 7001));
	nodes.add(new HostAndPort("192.168.204.134", 7002));
	nodes.add(new HostAndPort("192.168.204.134", 7003));
	nodes.add(new HostAndPort("192.168.204.134", 7004));
	nodes.add(new HostAndPort("192.168.204.134", 7005));
	nodes.add(new HostAndPort("192.168.204.134", 7006));
	JedisCluster jedisCluster = new JedisCluster(nodes);
	// 第二步:直接使用JedisCluster对象操作redis。在系统中单例存在。
	jedisCluster.set("hello", "100");
	String result = jedisCluster.get("hello");
	// 第三步:打印结果
	System.out.println(result);
	// 第四步:系统关闭前,关闭JedisCluster对象。
	jedisCluster.close();
}

新增节点

  • redis一对主从同时宕机,slot并不会重新分配,导致部分redis不可以用,需要重新分配slot.
  • 解决办法:原主从可以修复的话,从新上线,会自动加入集群,原主从不可以加入的话,新申请机器,手动分配slot
  • 步骤
    • 手动加入主节点(此时是0 slot),在给这个主节点陪个从节点
    • 通过指令redis-cli --cluster add-node加入,具体参考redis 5.0中使用 redis-cli 添加cluster node 并 reshard,只能移动空的slot,出现问题,使用fix指令。
  • 参考博客
    • redis集群给新添加的节点分配槽道的操作

你可能感兴趣的:(高并发,高可用,高性能专题,Redis系列,redis,redis集群,redis集群模式)