redis集群搭建

Redis学习笔记(5)—— Redis的持久化方案&Redis的集群搭建

喜夏-厌秋 提交于 2019-12-30 18:41:50
一、Redis的持久化方案   Redis的高性能是由于其将所有数据都存储在了 内存 中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。   Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合使用。 【RDB方式】   快照形式,定期把内存中当前时刻的数据保存到磁盘。Redis默认支持的持久化方案。   在redis.conf配置文件中配置:      Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存。根据数据量大小与结构和服务器性能不同,这个时间也不同。通常将记录一千万个字符串类型键、大小为1GB的快照文件载入到内存中需要花费20~30秒钟。   问题总结:   通过RDB方式实现持久化,一旦Redis异常退出,就会丢失最后一次快照以后更改的所有数据。这就需要开发者根据具体的应用场合,通过组合设置自动快照条件的方式来将可能发生的数据损失控制在能够接受的范围。如果数据很重要以至于无法承受任何损失,则可以考虑使用AOF方式进行持久化。 【AOF方式】   把所有对redis数据库操作的命令,增删改操作的命令。保存到文件中。数据库恢复时把所有的命令执行一遍即可。   默认情况下Redis没有开启AOF(append only file)方式的持久化

AirFlow 安装配置

六眼飞鱼酱① 提交于 2019-12-29 23:12:20
airflow 安装配置 airflow 相关软件安装 python 3.6.5 安装 安装依赖程序 ; [root@node01 ~]# yum -y install zlib zlib-devel bzip2 bzip2-devel ncurses ncurses-devel readline readline-devel openssl openssl-devel openssl-static xz lzma xz-devel sqlite sqlite-devel gdbm gdbm-devel tk tk-devel gcc 下载python ; 可以前往 https://www.python.org/ftp/python/查看Python各个版本,这里,我们选择安装Python-3.6.5.tgz版本。通过如下命令下载Python源码压缩包 : [root@node01 ~]# wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz 解压Python源码压缩包 ; [root@node01 ~]# tar -zxvf Python-3.6.5.tgz [root@node01 ~]# cd Python-3.6.5 安装python ; [root@node01 Python-3.6.5]# .

redis集群部署

荒凉一梦 提交于 2019-12-28 00:29:00
RedisCluster 部署条件 至少需要6个节点 安装ruby环境 ruby rubygams redis-3.0.0.gem redis-3.2.1.tar.gz 集群搭建(这里我用了2台服务器,每台服务器3个节点,分别为192.168.1.10 192.168.1.20) tar xf redis-3.2.1.tar.gz cd redis-3.2.1 make && make install mkdir -p /redis_cluster/700{1..3} //创建集群目录及3个节点 对应端口7001 7002 7003 cp /root/redis-3.2.1/redis.conf /redis_cluster/7001/ cp /root/redis-3.2.1/redis.conf /redis_cluster/7002/ cp /root/redis-3.2.1/redis.conf /redis_cluster/7003/ 分别对3个节点的文件修改对应的配置,按需求修改 vim redis.conf bind 192.168.1.10 //这里一定要修改为主机的ip,否则后面创建集群会报错 daemonize yes //redis后台运行 #requirepass foobared去掉注释,foobared改为自己的密码,我在这里改为 requirepass

深入浅出Redis-redis哨兵集群

▼魔方 西西 提交于 2019-12-27 14:03:56
1、Sentinel 哨兵     Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。     例如:          在Server1 掉线后:     升级Server2 为新的主服务器:    2、Redis 主从分离  在讲解Sentinel 哨兵集群之前,我们先来搭建一个简单的主从分离(读写分离)。 首先,我们默认大家都已经安装了redis,然后我们将 redis.conf 拷贝多份,并且创建多个目录,用于区分多个redis 服务:      这里面,每个目录中都有自己的redis.conf 配置文件,接下来,我们先设置主服务器的配置文件。 一、配置Master 1、修改端口 # Accept connections on the specified port, default is 6379 (IANA #815344). # If port 0 is specified Redis will not listen on a TCP socket. port 6380   redis 的默认端口是6379,这里我们把主服务器的端口设置为6380

搭建redis集群

笑着哭i 提交于 2019-12-25 14:03:56
什么是Redis集群 简介 Redis是一个快速高效的NoSQL型数据库,由于其基于内存存储、单线程、多路IO复用的特性,其QPS可以达到惊人的100000+(官方数据),但是即使有这么高的速度,在中国这么大的网民基数环境下,也存在着性能瓶颈。 首先抛开服务器故障不谈,Redis集群首先可以使Redis性能得到线性提高,这是毋庸置疑的,其次Redis集群除了解决了效率问题,还可以解决服务器宕机造成的数据丢失问题,当某个Redis节点宕机,剩下的节点会继续工作,并不会影响整体集群的使用,从而实现 高可用 。 Redis单机模式有什么问题 单机故障 在单机模式下的Redis,我们的应用中所有需要缓存的数据都依赖一台Redis服务器,应用的流量小可能看不出什么问题,但是随着应用越来越大,流量越来越大,如果出现服务器宕机或者断电的状况,那么我们的应用整个一个缓存层在一段时间内(重启)都将不复存在。 先不谈基于Redis的分布式Session可能造成的问题,如果恰好遇上流量高峰,这些流量直接打在数据库上,我们知道数据库的IO效率远不及Redis,这将大大提高应用负载,容易出现数据库服务器的宕机,从而造成应用的宕机。 由此看来,单机版Redis如果出现故障,将有可能引起一系列的连锁反应,造成不可逆的损失。 容量瓶颈 我们知道Redis是基于内存存储的一个NoSQL数据库

【分布式缓存系列】集群环境下Redis分布式锁的正确姿势

匆匆过客 提交于 2019-12-24 12:03:03
一、前言   在上一篇文章中,已经介绍了基于Redis实现分布式锁的正确姿势,但是上篇文章存在一定的缺陷——它加锁只作用在一个Redis节点上,如果通过sentinel保证高可用,如果master节点由于某些原因发生了主从切换,那么就会出现锁丢失的情况: 客户端1在Redis的master节点上拿到了锁 Master宕机了,存储锁的key还没有来得及同步到Slave上 master故障,发生故障转移,slave节点升级为master节点 客户端2从新的Master获取到了对应同一个资源的锁   于是,客户端1和客户端2同时持有了同一个资源的锁。锁的安全性被打破了。针对这个问题。Redis作者antirez提出了RedLock算法来解决这个问题 二、RedLock算法的实现思路   antirez提出的redlock算法实现思路大概是这样的。   客户端按照下面的步骤来获取锁: 获取当前时间的毫秒数T1。 按顺序依次向N个Redis节点执行获取锁的操作。这个获取锁的操作和上一篇中基于单Redis节点获取锁的过程相同。包括唯一UUID作为Value以及锁的过期时间(expireTime)。为了保证在某个在某个Redis节点不可用的时候算法能够继续运行,这个获取锁的操作还需要一个超时时间。它应该远小于锁的过期时间。客户端向某个Redis节点获取锁失败后,应立即尝试下一个Redis节点

Redis集群架构

无人久伴 提交于 2019-12-23 18:16:08
一、Redis Cluster(Redis集群)简介: (1)edis是一个开源的key value存储系统,受到了广大互联网公司的青睐。redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群,这里我搭建用的是最新的版本 redis-5.0.7; (2)redis集群采用P2P模式,是完全去中心化的,不存在中心节点或者代理节点; (3)redis集群是没有统一的入口的,客户端(client)连接集群的时候连接集群中的任意节点(node)即可,集群内部的节点是相互通信的(PING-PONG机制),每个节点都是一个redis实例。 二、集群搭建需要的环境: (1)Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。 (2)要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。 (3)安装ruby 三、部署集群: 为了节省资源,这边准备了两台虚拟机,各自安装三个网卡,这样总共就是六个网卡,也就是同时运行6个 redis 实例。 角色 IP地址 redis1 192.168.220.131 redis2 192.168.220.164 redis3 192.168.220.165 redis4 192.168.220.135 redis5 192.168.220

搭建ELK集群

可紊 提交于 2019-12-23 04:25:01
环境准备 基础环境介绍 操作系统 部署应用 应用版本号 IP地址 主机名 CentOS 7.4 Elasticsearch/Logstash 6.4.3 192.168.1.1 elk1 CentOS 7.4 Elasticsearch/Logstash/Redis 6.4.3 192.168.1.2 elk2 CentOS 7.4 Elasticsearch/Kibana 6.4.3 192.168.1.3 elk3 基础环境配置 安装基本软件包以及配置hosts yum -y install vim net-tools epel-release wget cat /etc/hosts 192.168.1.1 elk1 192.168.1.2 elk2 192.168.1.3 elk3 修改文件描述符以及内核参数 vim /etc/sysctl.conf vm.max_map_count = 655360 sysctl -p /etc/sysctl.conf vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096 不需要重启,退出重连即可显示最新配置。使用 ulimit -n 查看。 安装及配置Java环境 yum -y

redis 搭建伪集群

♀尐吖头ヾ 提交于 2019-12-23 02:57:27
1: 集群简介: 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。 集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。----载自百度百科 redis 集群简介 redis是一个开源的key value存储系统,受到了广大互联网公司的青睐。redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群,我这里用的是redis3.0.0版本; redis集群采用P2P模式,是完全去中心化的,不存在中心节点或者代理节点; redis集群是没有统一的入口的,客户端(client)连接集群的时候连接集群中的任意节点(node)即可,集群内部的节点是相互通信的(PING-PONG机制),每个节点都是一个redis实例; 为了实现集群的高可用,即判断节点是否健康(能否正常使用),redis-cluster有这么一个投票容错机制:如果集群中超过半数的节点投票认为某个节点挂了,那么这个节点就挂了(fail)。这是判断节点是否挂了的方法; 那么如何判断集群是否挂了呢? -> 如果集群中任意一个节点挂了,而且该节点没有从节点(备份节点)

单台Linux服务器实现Redis群集

柔情痞子 提交于 2019-12-22 04:20:14
一、Redis简介 Redis是目前大规模使用的缓存中间件,由于它强大、高效、便捷的功能,得到了广泛的使用。 Redis在2015年发布了3.0.0,官方就已经支持了redis cluster。redis cluster在设计的时候,就考虑到了去中心化、去中间件。也就是说,集群中的每个节点都是平等的关系,每个节点都保存各自的数据和整个集群的状态。每个节点都和其他所有节点连接,而且这些连接保持活跃,这样就保证了我们只需连接集群中的任意一个节点,就可以获取到其他节点的数据。 二、Redis集群介绍 Redis集群是一个可以在多个Redis节点之间进行数据共享的设施。Redis集群不支持那些需要同时处理多个键的redis命令,因为执行这些命令需要在多个节点之间移动数据,并且在高负载的情况下,这些命令将降低redis集群的性能,并导致不可预测的行为。 Redis集群通过分区来提供一定程度的可用性,即使集群中一部分节点失效或者无法通信,集群也可以继续处理命令请求。 三、Redis集群原理 Redis是如何合理发呢配这些节点和数据的? Redis并没有采用传统的一致性哈希来分配数据,而是采用了另一种叫做哈希槽的方式分配的。Redis cluster默认分配了16384个slot,当我们set一个key时,会采用CRC16算法(循环冗余校验码)来获取所属的slot