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是最基本的搭建,不管什么环境下搭建都是依赖于他的。

平淡学习–加油。

基于虚拟机高可用redis集群搭建相关推荐

  1. 使用Docker Compose部署基于Sentinel的高可用Redis集群

    大家一定非常熟悉如何利用Docker启动单个Redis容器用于开发环境,本文将介绍如何利用Docker Compose模板在本机和云端部署基于Sentinel的高可用Redis 3集群. Redis集 ...

  2. 【15W字长文】主从复制高可用Redis集群,完整包含Redis所有知识点

    往期文章一览 分布式会话与单点登录SSO系统CAS,包含完整示例代码实现 [7W字长文]使用LVS+Keepalived实现Nginx高可用,一文搞懂Nginx 主从复制高可用Redis集群 分布式架 ...

  3. (七)centos7案例实战——nginx+keepalived高可用服务器集群搭建

    前言 本节内容延续之前的内容,往期博客已经介绍了如何安装nginx服务器以及将nginx安装成为一个系统服务,本节内容是在前期内容的基础上,搭建一个高可用的nginx服务器集群,主要使用Keepali ...

  4. 【有料】4 种高可用 RocketMQ 集群搭建方案!

    背景 笔者所在的业务线,最初化分为三个服务,由于业务初期业务复杂度相对简单,三个业务服务都能很好的独立完成业务功能. 随着产品迭代,业务功能越来越多后慢慢也要面对高并发.业务解耦.分布式事务等问题,所 ...

  5. springcloud高可用服务器集群搭建

    服务器健壮是非常重要的, 但是有很多种原因可能会导致服务注册中心宕机,如果宕机就会有一些灾难性的问题出现,所以保证服务注册中心处于活着运行状态显得尤为重要!!! 我们必须保证,哪怕某些服务器宕机了我们 ...

  6. Linux搭建高并发高可用Redis集群

    安装Redis Redis 是一个高性能的key-value数据库.常用作缓存服务器使用. 1. 下载redis安装包,redis-3.2.11.tar.gz(http://download.redi ...

  7. flink HA高可用Standalone集群搭建

    flink 1.9.2版本搭建的HA JM存在bug: 明明在node01, node02两个节点上都有JM,但是孰是activing,孰是standby状态无法区分.Spark是有明确的状态显示的. ...

  8. activeMq-2 高可用以及集群搭建

    Activemq 的集群方法可以有多种实现方式,我们这里使用zookeeper来实现 要搭建集群,请确保已经搭建好zookeeper环境.这里不再演示. 基本原理: 使用ZooKeeper(集群)注册 ...

  9. MySQL服务MySQL+MHA高可用服务集群搭建

    MySQL MHA MySQL MHA 一.MHA概念 1.MHA 的组成 2.MHA 的特点 二.搭建MySQL+MHA 1.所有服务器,关闭系统防火墙和安全机制 2.修改 master(192.1 ...

最新文章

  1. 好玩的东西,测试一下
  2. java设置access-allow_Java Web如何设置多个Access-Control-Allow-Origin
  3. 乐享计算机会计学院,EMBA
  4. Linux两种定时器
  5. oracle的exp和imp,oracle exp和imp
  6. hive序列生成_常见的序列化框架及Protobuf原理
  7. CEF与快速交换的比较
  8. Excel数据转换成SQL
  9. html 倒计时弹出框,javascript实现倒计时提示框
  10. 计算机应用与维修电竞与管理,电子竞技运动与管理-五年制高技招生专业-广州市白云工商技师学院_广州市白云工商高级技工学校_信息工程系(计算机系)...
  11. oracle datamodeler,查看您的 Oracle SQL Developer Data Modeler 设计
  12. 夜思 | 听说你单身?“替代性恋爱”了解一下
  13. 网站分析实战——如何以数据驱动决策,提升网站价值(大数据时代的分析利器)
  14. 留言赠书|GitHub收获1W星标《迁移学习导论》重新整理升级
  15. c#winform使用EntityFramework导入数据库
  16. 烤仔的朋友们 | 从薯片到卫生纸,进入NFT市场的10大传统品牌大盘点
  17. android 黑科技软件,一波Android黑科技工具推荐
  18. Android Amazon S3 功能接入
  19. java.lang.IllegalArgumentException: Unknown entity解决办法
  20. python实现对密码的加密和解密

热门文章

  1. centos下rpm与yum包的安装与卸载
  2. C语言使用开源库libusb进行USB设备操作
  3. QT文本转语音模块(TTS)QTextToSpeech
  4. [网络安全自学篇] 三十七.Web渗透提高班之hack the box在线靶场注册及入门知识
  5. 企业这样操作发福利,满足所有员工需求
  6. TimeUnit 用法
  7. wpa_supplicant 移植
  8. Zuora在线测试题解之Three Page Path
  9. mediawiki 将默认主题调为 MinervaNeue 后报错 “哎呀!您在 $wgDefaultSkin 定义的wiki默认皮肤 MinervaNeue 不可用。”
  10. bes2300之led配置(三)