哨兵

Redis:哨兵Sentinel

醉酒当歌 提交于 2020-01-26 15:35:13
Redis提供了一种方案,用于在主节点故障时自动进行主从切换。 1、Redis Sentinel Redis提供了Redis Sentinel集群,用于持续监控主从节点的监控: 当客户端来连接集群时,会首先连接Sentinel,通过Sentinel获取主节点的地址,然后再连接主节点进行数据交互; 当主节点发生故障时,客户端会重新向Sentinel询问主节点地址,Sentinel会将最新的主节点地址通知客户端。 那么,客户端如何知道什么时候应该去询问主节点呢: 连接池新建连接时,会去向Sentinel查询主节点的地址,如果查询到的主节点地址和内存中保持的地址不一致,就会断开所有连接,用新地址重新建立连接; 当连接使用过程中,如果主节点变了,此时向非主节点的节点发送写请求,会跑出ReadOnlyError,命令中会捕捉这个异常,然后在这个异常的处理过程中,关闭全部旧链接,并建立新连接。 需要注意的时,Sentinel的默认端口不同于Redis,是26379。 2、消息丢失 当主节点挂掉时,从节点可能没有和主节点完全一致,那么未同步的消息就会丢失。Sentinel无法保证数据完全不丢失,但是有配置可以限制丢失消息的数量: min-slaves-to-write:最少同步节点数,即主节点只是要保证有几个从节点完成了正常复制,否则就停止对外写服务; min-slaves-max-lag

Redis哨兵

风流意气都作罢 提交于 2020-01-26 02:11:58
  1. 需求     如果搭建redis分片,如果其中一台服务器宕机.则导致整个分片不能正常使用.     需求:能否实现服务器尽可能”不宕机”.(高可用)   2. Redis哨兵工作原理          前提:如果需要实现redis高可用,必须先配置主从结构:     1. 用户通过哨兵之后连接当前集群中的主机;     2. 哨兵通过心跳检测机制实时向主机发出心跳检测:PING-PONG。如果连续3次没有收到主机的回执,则发现主机宕机,开始进行推选;     3. 哨兵通过连接主机时已经获取了主机的全部信息。如果主机宕机,哨兵通过推选的机制选择一台从机当做新的主机,之后将其他的服务器改为当前主机的从机;   3. 哨兵高可用搭建     1. 复制目录 cp -r shards sentinel     2. 删除持久化文件       因为redis节点的配置文件名称都是一致的,启动redis时会导致内存数据都是相同,所以必须先删除持久化文件: rm -f dump.rdb appendonly.aof     3. 主从搭建       a. 启动三台redis       b. 检查redis节点状态( 执行命令 src/redis-cli -p 6379 进入redis操作界面 ,执行 info replication 查看节点状态)               

redis哨兵、集群

对着背影说爱祢 提交于 2020-01-26 02:10:05
cd /opt/s18msredis/ 1016 vim redis-6379.conf 1017 cat redis-6380.conf 1018 redis-server redis-6379.conf 1019 redis-server redis-6380.conf 1020 redis-server redis-6381.conf 1021 ps -ef|grep redis 1022 redis-cli -p 6379 1023 redis-cli -p 6380 1024 redis-cli -p 6381 info replication 1025 redis-cli -p 6381 1026 redis-cli -p 6379 1027 redis-cli -p 6381 1028 ps -ef|grep redis 1029 kill -9 18319 1030 ps -ef|grep redis 1031 redis-cli -p 6381 1032 redis-cli -p 6380 1033 redis-cli -p 6381 1034 ps -ef|grep redis 1035 pkill redis-server 1036 rm -rf /data/* 1037 mkdir -p /data/{6379,6380,6381} 1038 redis

redis5.0.7 搭建三台哨兵 Sentinel

穿精又带淫゛_ 提交于 2020-01-18 18:19:48
使用redis5.0.7 前提完成三台 虚拟机的主从搭建 可回看 https://www.cnblogs.com/wf-zhang/p/12208052.html 本文实现redis哨兵机制 给每台虚拟机都增加一个哨兵 Sentinel 主要过程修改 sentinel.conf 文件达到效果 准备工作 三台虚拟机都必须执行1 2 3 1.将redis-sentinel 文件复制到自己redis/bin 下 用来执行sentinel.conf 原来的路径 redis5.0.7/src/redis-sentinel 2.将sentinel.conf 复制到 /usr/local/redis/etc 原来的路径 /usr/local/redis-5.0.7 复制后的路径 3.修改 sentinel.conf 文件 只修改了两处 没有配置密码 日志 设置后台启动 原来是no 改为yes daemonize yes 设置监听主机的IP (修改成你的) 端口 数量 使用默认 有2台哨兵认为主机挂了,则对主机进行容灾切换 完成1,2,3 开始启动主从+哨兵 进入到bin目录下 先启动主从 ./redis-server /usr/local/redis/etc/redis.conf 再启动哨兵 redis-sentinel /usr/local/redis/etc/sentinel.conf

Redis 哨兵集群搭建

泪湿孤枕 提交于 2020-01-17 06:07:20
Redis 哨兵集群搭建 在搭建哨兵集群之前先搭建 redis主从服务器 redis主从复制详尽步骤 哨兵服务器的搭建最少要3台服务,这里是在上一篇的基础上搭建的是伪集群服务 如图 192.168.172.21 服务器上创建文件夹 从 redis源码里面复制一份 redis-sentinel.conf 各个端口文件夹下面并改名 [ root@localhost ~ ] # mkdir / opt / redis / redis - sentinel / { sentinel_26379 , sentinel_26380 , sentinel_26381 } [ root@localhost ~ ] # tree / opt / redis / / opt / redis / ├── redis - 5.0 .7 │ ├── bin │ │ ├── redis - benchmark │ │ ├── redis - check - aof │ │ ├── redis - check - rdb │ │ ├── redis - cli │ │ ├── redis - sentinel -> redis - server │ │ └── redis - server │ ├── conf │ │ └── redis . conf │ ├── logs │ │ └── redis_6379

redis初始化问题汇总

旧巷老猫 提交于 2020-01-14 15:00:33
1. all sentinels down , cannot determine where is redis-sentinel master is running 本地连接的测试环境,本地跟测试环境打不通。被防火墙拦住了。 2.JedisDataException: NOAUTH Authentication required. 给jedisConnectionFactory.setPassword("xxxx") 3.org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisException: Could not get a resource from the pool 给如下两个属性分别赋值 jedisPoolConfig.setMaxIdle(50); jedisPoolConfig.setMaxTotal(100); @Bean public JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig jedisPoolConfig,

Redis面试题(含答案):哨兵+复制+事务+集群+持久化等

二次信任 提交于 2020-01-12 04:48:21
Redis主要有哪些功能? 哨兵(Sentinel)和复制(Replication) Redis服务器毫无征兆的罢工是个麻烦事,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。 Sentinel可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能,Replication则是负责让一个Redis服务器可以配备多个备份的服务器。 Redis也是利用这两个功能来保证Redis的高可用的 事务 很多情况下我们需要一次执行不止一个命令,而且需要其同时成功或者失败。redis对事务的支持也是源自于这部分需求,即支持一次性按顺序执行多个命令的能力,并保证其原子性。 LUA脚本 在事务的基础上,如果我们需要在服务端一次性的执行更复杂的操作(包含一些逻辑判断),则lua就可以排上用场了 持久化 redis的持久化指的是redis会把内存的中的数据写入到硬盘中,在redis重新启动的时候加载这些数据,从而最大限度的降低缓存丢失带来的影响。 集群(Cluster) 单台服务器资源的总是有上限的,CPU资源和IO资源我们可以通过主从复制,进行读写分离,把一部分CPU和IO的压力转移到从服务器上,这也有点类似mysql数据库的主从同步。 在Redis官方的分布式方案出来之前,有twemproxy和codis两种方案,这两个方案总体上来说都是依赖proxy来进行分布式的

redis哨兵部署

时光总嘲笑我的痴心妄想 提交于 2020-01-02 21:35:37
redis介绍 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件redis是c语言编写的,支持数据持久化,是key-value类型数据库。应用在缓存,队列系统中redis支持数据备份,也就是master-slave模式 redis一秒可以执行10万个命令 redis为什么这么快? 1.是完全基于内存数据库 2.redis是完全用c写的单线程的数据库 redis如何安装 1.yum安装 安装:yum install redis -y 卸载:yum remove redis -y 启动:systemctl start redis 查看监听端口:netstat -tunlp 2.redis编译安装(注意删除安装的redis) 编译安装三部曲 1.下载redis源码wget http://download.redis.io/releases/redis-4.0.10.tar.gz2.解压缩tar -zxvf redis-4.0.10.tar.gz3.切换redis源码目录cd redis-4.0.104.编译源文件make 5.编译好后,src/目录下有编译好的redis指令6.make install 安装到指定目录,默认在/usr/local/bin 添加环境变量 :vim /etc/profile path= “/usr/local

Ubuntu 搭建redis主从复制加哨兵模式

a 夏天 提交于 2019-12-30 15:15:07
步骤: 1.下载redis安装包或是上传一个下载好的压缩包,这里用的是redis-5.0.7 wget http://download.redis.io/releases/redis-5.0.7.tar.gz 2.解压编译 tar -zxvf redis-5.0.7.tar.gz 3.编译安装 切换到redis的目录下 cd redis-5.0.7 4.安装make sudo apt-get install ubuntu-make sudo apt-get install make 5.安装gcc sudo apt-get install gcc 6.编译安装 make make install prefix=/home/redis 7.创建目录 cd /home/redis mkdir conf mkdir log mkdir data mkdir temp 8.拷贝文件redis.conf和sentinel.conf cp /usr/local/redis-5.0.7/redis.conf /home/redis/conf/redis6379.conf cp /usr/local/redis-5.0.7/redis.conf /home/redis/conf/redis6380.conf cp /usr/local/redis-5.0.7/redis.conf /home

redis 哨兵集群实现高可用

霸气de小男生 提交于 2019-12-19 04:46:56
Redis 哨兵集群实现高可用 哨兵的介绍 sentinel,中文名是哨兵。哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis master 和 slave 进程是否正常工作。 消息通知:如果某个 redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员。 故障转移:如果 master node 挂掉了,会自动转移到 slave node 上。 配置中心:如果故障转移发生了,通知 client 客户端新的 master 地址。 哨兵用于实现 redis 集群的高可用,本身也是分布式的,作为一个哨兵集群去运行,互相协同工作。 故障转移时,判断一个 master node 是否宕机了,需要大部分的哨兵都同意才行,涉及到了分布式选举的问题。 即使部分哨兵节点挂掉了,哨兵集群还是能正常工作的,因为如果一个作为高可用机制重要组成部分的故障转移系统本身是单点的,那就很坑爹了。 哨兵的核心知识 哨兵至少需要 3 个实例,来保证自己的健壮性。 哨兵 + redis 主从的部署架构,是 不保证数据零丢失 的,只能保证 redis 集群的高可用性。 对于哨兵 + redis 主从这种复杂的部署架构,尽量在测试环境和生产环境,都进行充足的测试和演练。 哨兵集群必须部署 2 个以上节点,如果哨兵集群仅仅部署了 2 个哨兵实例,quorum = 1。