基于虚拟机高可用redis集群搭建

redis集群搭建

介绍

刚开始学习 redis集群搭建可能会被繁琐的配置劝退,但重复配置是我们敲代码路上最平坦的一条路了,希望晨雨和大家以后都有足够的耐心,学好技术,装好B格。本文基于redis-5.0.8配置以及一些简单JedisCluster API操作,不涉及业务以及集群监控搭建。

使用xshell在虚拟机上安装redis

晨雨习惯了rz直接上传文件或者压缩包,在这就不介绍其他方式了。
虚拟机上直接yum install lrzsz后便可使用rz上传文件到你想要存放的文件夹。(晨雨采用/usr/local目录下)
在这里插入图片描述
随后我们使用tar -xzf redis.5.0.8.tar.gz(根据你压缩包的名字来解压),这样我们就在虚拟机上装好了redis。由于redis使用c语言编写,我们需要先安装c语言命令,yum install gcc,然后进入redis-5.0.8使用make && make install 命令对源码包进行编译并安装。
当然你可能会因为没有jemalloc报错,可手动分配,使用make MALLOC=libc && make install 编译安装。
在这里插入图片描述
这时候,我们进入src目录便可以看到相应的服务端,客户端以及一些执行快照和aof的命令了。
在这里插入图片描述
ok,redis安装已经完毕,在这就不讲解单体redis的一些配置修改,我们直接进入集群吧。

集群搭建

根据选举超过半票原理,集群搭建一般需要在三个节点及以上。我们需要连接三台虚拟机并安装完redis,在每台虚拟机上创建一个文件夹来管理我们的节点。这儿采用一主一从来构建集群。

mkdir -p /usr/local/redisCluster
mkdir 8001 mkdir 8004
  1. 把redis-5.0.8中的redis.conf 拷贝到8001和8004 目录下。进入8001,cp /usr/local/redis-5.0.8/redis.conf redis.conf。
    在这里插入图片描述
  2. 使用vim redis.conf命令对8001redis.conf进行配置修改。
  3. 将daemonize 改为yes,让redis可以在后台启动。
  4. port 8001(分别对每个机器的端口号进行设置)将端口号6379改为对应的端口。
  5. dir /usr/local/redis-cluster/8001/(指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据)
  6. cluster-enabled yes(启动集群模式)
  7. cluster-config-file nodes-8001.conf(集群节点信息文件,这里800x最好和port对应上)
  8. cluster-node-timeout 5000 (根据机器性能修改)
  9. # bind 127.0.0.1(去掉bind绑定访问ip信息)让本机以外的用户也能访问集群。
  10. protected-mode no (关闭保护模式)
  11. appendonly yes 打开aof
  12. requirepass zhuge (设置redis访问密码)
  13. masterauth zhuge (设置集群节点间访问密码,跟上面一致) 以上两条保证安全性,自己尝试时可以不进行设置。
  14. 把修改后的配置文件copy 到8004文件夹下,并修改相应的端口。
  15. 另外两台机器也需要做上面几步操作,第二台机器用8002和8005,第三台机器用8003和8006。
  16. 分别启动六个实例服务,可以进入redis-5.0.8/src 目录下,使用./redis-server /usr/local/redisCluster/800x/redis.conf 执行配置文件启动
  17. 使用ps -ef | grep redis 查看三台机器redis是否启动成功
    在这里插入图片描述
  18. 最后,我们便进行最重要的一步,启动我们的集群。./redis-cli -a zhuchen --cluster create --cluster-replicas 1 192.168.197.136:8001 192.168.197.135:8002 192.168.197.134:8003 192.168.197.136:8004 192.168.197.135:8005 192.168.197.134:8006 代表为每个创建的主服务器节点创建一个从服务器节点。
    在这里插入图片描述
  19. 连接任意一个客户端即可:./redis-cli -c -h -p (-a访问服务端密码,-c表示集群模式,指定ip地址和端口号)如:./redis-cli -a zhuchen -c -h 192.168.197.136 -p 8001
  20. 进行验证: cluster info(查看集群信息)、cluster nodes(查看节点列表)
  21. 关闭集群则需要逐个进行关闭,使用命令:
    /usr/local/redis-5.0.8/redis-cli -a zhuchen-c -h 192.168.197.136 -p 8001 shutdown
    (千万要记得关闭,别偷懒)
    (千万要记得关闭,别偷懒)
    (千万要记得关闭,别偷懒)

当然我们可能也会碰到一些问题,比如说集群启动时某机器宕机,从节点成为master单位分配slots情况。
在这里插入图片描述
redis5.0.x之后可以直接使用客户端命令修复。./redis-cli --cluster fix 192.168.197.136:8001 -a zhuchen
之后我们进入集群中一个节点,查看集群信息,如果是ok,便可以愉快的进行set、get啦,便可以露出欣慰的笑容了。
使用redis-cli操作集群较为麻烦,不适用生产环境,所以我们要学习无敌的JedisCluster,以及一些实现业务的相关cache,spring整合等等。

Jedis jedis = new Jedis();
        Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();
        jedisClusterNode.add(new HostAndPort("192.168.197.136", 8001));
        jedisClusterNode.add(new HostAndPort("192.168.197.135", 8002));
        jedisClusterNode.add(new HostAndPort("192.168.197.134", 8003));
        jedisClusterNode.add(new HostAndPort("192.168.197.136", 8004));
        jedisClusterNode.add(new HostAndPort("192.168.197.135", 8005));
        jedisClusterNode.add(new HostAndPort("192.168.197.134", 8006));

        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(100);
        config.setMaxIdle(10);
        config.setTestOnBorrow(true);
        //connectionTimeout:指的是连接一个url的连接等待时间
        //soTimeout:指的是连接上一个url,获取response的返回等待时间
        JedisCluster jedisCluster = new JedisCluster(jedisClusterNode, 6000, 5000, 10, "zhuchen", config);
        System.out.println(jedisCluster.set("student", "zhuchen"));
        System.out.println(jedisCluster.set("age", "19"));

        System.out.println(jedisCluster.get("student"));
        System.out.println(jedisCluster.get("age"));
        System.out.println("ok");

        jedisCluster.close();
        

在这里插入图片描述
集群的简单搭建就到这儿了,其实redis-cli是最基本的搭建,不管什么环境下搭建都是依赖于他的。

平淡学习–加油。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值