基于虚拟机高可用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
- 把redis-5.0.8中的redis.conf 拷贝到8001和8004 目录下。进入8001,cp /usr/local/redis-5.0.8/redis.conf redis.conf。
- 使用vim redis.conf命令对8001redis.conf进行配置修改。
- 将daemonize 改为yes,让redis可以在后台启动。
- port 8001(分别对每个机器的端口号进行设置)将端口号6379改为对应的端口。
- dir /usr/local/redis-cluster/8001/(指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据)
- cluster-enabled yes(启动集群模式)
- cluster-config-file nodes-8001.conf(集群节点信息文件,这里800x最好和port对应上)
- cluster-node-timeout 5000 (根据机器性能修改)
- # bind 127.0.0.1(去掉bind绑定访问ip信息)让本机以外的用户也能访问集群。
- protected-mode no (关闭保护模式)
- appendonly yes 打开aof
- requirepass zhuge (设置redis访问密码)
- masterauth zhuge (设置集群节点间访问密码,跟上面一致) 以上两条保证安全性,自己尝试时可以不进行设置。
- 把修改后的配置文件copy 到8004文件夹下,并修改相应的端口。
- 另外两台机器也需要做上面几步操作,第二台机器用8002和8005,第三台机器用8003和8006。
- 分别启动六个实例服务,可以进入redis-5.0.8/src 目录下,使用./redis-server /usr/local/redisCluster/800x/redis.conf 执行配置文件启动
- 使用ps -ef | grep redis 查看三台机器redis是否启动成功
- 最后,我们便进行最重要的一步,启动我们的集群。./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 代表为每个创建的主服务器节点创建一个从服务器节点。
- 连接任意一个客户端即可:./redis-cli -c -h -p (-a访问服务端密码,-c表示集群模式,指定ip地址和端口号)如:./redis-cli -a zhuchen -c -h 192.168.197.136 -p 8001
- 进行验证: cluster info(查看集群信息)、cluster nodes(查看节点列表)
- 关闭集群则需要逐个进行关闭,使用命令:
/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集群搭建相关推荐
- 使用Docker Compose部署基于Sentinel的高可用Redis集群
大家一定非常熟悉如何利用Docker启动单个Redis容器用于开发环境,本文将介绍如何利用Docker Compose模板在本机和云端部署基于Sentinel的高可用Redis 3集群. Redis集 ...
- 【15W字长文】主从复制高可用Redis集群,完整包含Redis所有知识点
往期文章一览 分布式会话与单点登录SSO系统CAS,包含完整示例代码实现 [7W字长文]使用LVS+Keepalived实现Nginx高可用,一文搞懂Nginx 主从复制高可用Redis集群 分布式架 ...
- (七)centos7案例实战——nginx+keepalived高可用服务器集群搭建
前言 本节内容延续之前的内容,往期博客已经介绍了如何安装nginx服务器以及将nginx安装成为一个系统服务,本节内容是在前期内容的基础上,搭建一个高可用的nginx服务器集群,主要使用Keepali ...
- 【有料】4 种高可用 RocketMQ 集群搭建方案!
背景 笔者所在的业务线,最初化分为三个服务,由于业务初期业务复杂度相对简单,三个业务服务都能很好的独立完成业务功能. 随着产品迭代,业务功能越来越多后慢慢也要面对高并发.业务解耦.分布式事务等问题,所 ...
- springcloud高可用服务器集群搭建
服务器健壮是非常重要的, 但是有很多种原因可能会导致服务注册中心宕机,如果宕机就会有一些灾难性的问题出现,所以保证服务注册中心处于活着运行状态显得尤为重要!!! 我们必须保证,哪怕某些服务器宕机了我们 ...
- Linux搭建高并发高可用Redis集群
安装Redis Redis 是一个高性能的key-value数据库.常用作缓存服务器使用. 1. 下载redis安装包,redis-3.2.11.tar.gz(http://download.redi ...
- flink HA高可用Standalone集群搭建
flink 1.9.2版本搭建的HA JM存在bug: 明明在node01, node02两个节点上都有JM,但是孰是activing,孰是standby状态无法区分.Spark是有明确的状态显示的. ...
- activeMq-2 高可用以及集群搭建
Activemq 的集群方法可以有多种实现方式,我们这里使用zookeeper来实现 要搭建集群,请确保已经搭建好zookeeper环境.这里不再演示. 基本原理: 使用ZooKeeper(集群)注册 ...
- MySQL服务MySQL+MHA高可用服务集群搭建
MySQL MHA MySQL MHA 一.MHA概念 1.MHA 的组成 2.MHA 的特点 二.搭建MySQL+MHA 1.所有服务器,关闭系统防火墙和安全机制 2.修改 master(192.1 ...
最新文章
- 好玩的东西,测试一下
- java设置access-allow_Java Web如何设置多个Access-Control-Allow-Origin
- 乐享计算机会计学院,EMBA
- Linux两种定时器
- oracle的exp和imp,oracle exp和imp
- hive序列生成_常见的序列化框架及Protobuf原理
- CEF与快速交换的比较
- Excel数据转换成SQL
- html 倒计时弹出框,javascript实现倒计时提示框
- 计算机应用与维修电竞与管理,电子竞技运动与管理-五年制高技招生专业-广州市白云工商技师学院_广州市白云工商高级技工学校_信息工程系(计算机系)...
- oracle datamodeler,查看您的 Oracle SQL Developer Data Modeler 设计
- 夜思 | 听说你单身?“替代性恋爱”了解一下
- 网站分析实战——如何以数据驱动决策,提升网站价值(大数据时代的分析利器)
- 留言赠书|GitHub收获1W星标《迁移学习导论》重新整理升级
- c#winform使用EntityFramework导入数据库
- 烤仔的朋友们 | 从薯片到卫生纸,进入NFT市场的10大传统品牌大盘点
- android 黑科技软件,一波Android黑科技工具推荐
- Android Amazon S3 功能接入
- java.lang.IllegalArgumentException: Unknown entity解决办法
- python实现对密码的加密和解密
热门文章
- centos下rpm与yum包的安装与卸载
- C语言使用开源库libusb进行USB设备操作
- QT文本转语音模块(TTS)QTextToSpeech
- [网络安全自学篇] 三十七.Web渗透提高班之hack the box在线靶场注册及入门知识
- 企业这样操作发福利,满足所有员工需求
- TimeUnit 用法
- wpa_supplicant 移植
- Zuora在线测试题解之Three Page Path
- mediawiki 将默认主题调为 MinervaNeue 后报错 “哎呀!您在 $wgDefaultSkin 定义的wiki默认皮肤 MinervaNeue 不可用。”
- bes2300之led配置(三)