在这篇文章中,我们将为您详细介绍从SentinelC#获取Redis主地址的内容,并且讨论关于从redis获取数据的相关问题。此外,我们还会涉及一些关于7、redis主从复制和sentinel配置高可
在这篇文章中,我们将为您详细介绍从Sentinel C#获取Redis主地址的内容,并且讨论关于从redis获取数据的相关问题。此外,我们还会涉及一些关于7、redis主从复制和sentinel配置高可用、ASP.NET Core分布式缓存Redis主从Sentinel哨兵模式实战演练、centos7 docker搭建redis主从集群+sentinel哨兵、contos7下安装redis&redis的主从复制的配置&redis 哨兵(sentinel)的知识,以帮助您更全面地了解这个主题。
本文目录一览:- 从Sentinel C#获取Redis主地址(从redis获取数据)
- 7、redis主从复制和sentinel配置高可用
- ASP.NET Core分布式缓存Redis主从Sentinel哨兵模式实战演练
- centos7 docker搭建redis主从集群+sentinel哨兵
- contos7下安装redis&redis的主从复制的配置&redis 哨兵(sentinel)
从Sentinel C#获取Redis主地址(从redis获取数据)
我正在尝试使用哨兵来获取我的主服务器的连接地址,问题是哨兵仅在故障转移时发送该地址,但是如果我的主服务器关闭并且从属服务器被提升为主服务器并且我的应用程序刚刚启动,则不会知道并且不会收到有关原始主服务器已关闭的消息,是否有任何方法可以与哨兵通信,并询问他认为主服务器正在使用C#servicestack
redis客户端的人?
答案1
小编典典不得不这样做,我使用下一个代码段模仿了redis-cli命令:(剩下的就是解析响应的结果)
public string GetMasterFromSentinel(string sentinelAddress) { TcpClient server; try { var splittedAddress = sentinelAddress.Split('':''); server = new TcpClient(splittedAddress[0], splittedAddress[1].ParseInt()); } catch (SocketException) { _log.Error("Unable to connect to server"); return string.Empty; } NetworkStream ns = server.GetStream(); var payload = new byte[] { 0x2a, 0x32, 0x0d, 0x0a, 0x24, 0x38, 0x0d, 0x0a, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x0d, 0x0a, 0x24, 0x37, 0x0d, 0x0a, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x73, 0x0d, 0x0a }; ns.Write(payload, 0, payload.Length); ns.Flush(); var data = new byte[1024]; ns.Read(data, 0, data.Length); var recv = ns.Read(data, 0, data.Length); ns.Close(); server.Close(); return ParseResponse(data); }
7、redis主从复制和sentinel配置高可用
一:redis主从配置
-
1、环境准备
master : 192.168.50.10 6179 slave1: 192.168.50.10 6279 slave2: 192.168.50.10 6379
-
2、redis.conf配置文件配置
-
master
port 6179 requirepass 123456 #密码认证,可以不设置 dir "/var/redis/6179" #工作目录,dump.rdb会保留在这个目录
-
slave1
port 6279 slaveof 192.168.50.10 6179 #master的ip和端口,不能使用127.0.0.1 6179 masterauth 123456 #如果master设置了requirepass,则这里需要配置 slave-read-only yes #默认就是yes dir "/var/redis/6279"
-
slave2
port 6379 slaveof 192.168.50.10 6179 #master的ip和端口,不能使用127.0.0.1 6179 masterauth 123456 #如果master设置了requirepass,则这里需要配置 slave-read-only yes #默认就是yes dir "/var/redis/6379"
注意:如果slaveof 127.0.0.1 6179,则链接sentinel时提示是127.0.0.1,无法连接
-
-
3、启动redis并测试 ==> 如果设置了daemonize yes则没有日志输出,默认是no
-
启动: nohup redis-server /redis/redis.conf $1>>/var/log/redis/redis.log 2>&1 &
master 127.0.0.1:6179>info replication
slave1 127.0.0.1:6279>info replication
slave2 127.0.0.1:6379>info replication
-
在master中执行如下语句,如果所有机器执行keys* 都能查出name这个key说明能够复制
127.0.0.1:6179> set name nametest
-
-
4、日志分析
-
slave1和slave2一启动就会去链接master
-
master启动后,接受slave1和slave2的信息同步请求,进行RDB持久化(在内存中持久化)
-
-
5、redis主从同步规则
Salve会发送sync命令到Master Master启动一个后台进程,将Redis中的数据快照保存到文件中 启动后台进程的同时,Master会将保存数据快照期间接收到的写命令缓存起来 Master完成写文件操作后,将该文件发送给Salve Salve将文件保存到磁盘上,然后加载文件到内存恢复数据快照到Salve的Redis上 当Salve完成数据快照的恢复后,Master将这期间收集的写命令发送给Salve端 后续Master收集到的写命令都会通过之前建立的连接,增量发送给salve端
总结一下,主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。当然,如果有需要,slave 在任何时候都可以发起全量同步
注意:在redis2.8开始,slave重新启动,会发送psync到master进行部分同步,而不是sync全量同步
二:Sentinel 组件实现HA配置
-
1、介绍
-
Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,功能类似于zk,用于监控redis master状态,进行切换。
-
sentinel是和redis独立的组件,不需要每个redis节点都启动sentinel,可以在任何机器上部署,只要能够连接redis master即可。
-
其功能类似于zk,用于监听和选举,可以启动多个sentinel作为集群,只要连接的master相同,则认为是统一集群,sentinel集群中各个sentinel也有互相通信,通过gossip协议
-
一个sentinel可以监听多个redis集群,他们是通过连接到redis master,利用发布/订阅功能来发现其他sentinel的存在。
-
-
2、配置参数介绍
-
集群1 mymaster
# 至少2个sentinel认为mymaster挂了,才真正认为是挂了,所以sentinel至少要有2个在运行 sentinel monitor mymaster 192.168.50.10 6179 2 # sentinel向master发送ping,如果在这时间内没有响应,则这个sentinel认为master挂了 sentinel down-after-milliseconds mymaster 60000 # sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster 1
-
集群2 resque
sentinel monitor resque 192.168.50.10 6179 4 sentinel down-after-milliseconds resque 10000 sentinel failover-timeout resque 180000 sentinel parallel-syncs resque 5
-
-
3、工作原理
-
链接master,获取slave和其他sentinel信息,记录到自己的sentinel.conf中,如下图
-
sentinel发现down-after-milliseconds 时间内master没有回复,则认为failor,它会问集群其他sentinel是否也有人认为失败,个数达到sentinel monitor mymaster xxx 2,才会触发failover
-
sentinel集群选举其中一个sentinel拿着一个唯一的版本号去进行master切换。此sentinel指定一个slave发送SLAVE OF NO ONE,将其转化为master,同时将这些配置信息广播给其他sentinel,进行更新master信息
-
-
4、启动 ===> 如果设置了daemonize yes则没有日志输出
nohup redis-server redis-slave1/sentinel.conf --sentinel $1>>/var/log/sentinel/sentinel.log 2>&1 &
-
5、失败测试=> 6379变成了6179的redis
-
6、注意
当一个master配置为需要密码才能连接时,客户端和slave在连接时都需要提供密码。 master通过requirepass设置自身的密码,不提供密码无法连接到这个master。 slave通过masterauth来设置访问master时的密码。 但是当使用了sentinel时,由于一个master可能会变成一个slave,一个slave也可能会变成master,所以需要同时设置上述两个配置项。
三:动态切换master测试
-
1、pom依赖
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
-
2、代码
public class JedisSentinelTest { public static void main(String[] args) { /** * 获取master链接~方法一 */ HashSet<String> sentinelSet = new HashSet<>(); sentinelSet.add("192.168.50.10:26179"); // 这个节点目前是挂掉的,也可以配置,后续启动有效 sentinelSet.add("192.168.50.10:26279"); sentinelSet.add("192.168.50.10:26379"); JedisSentinelPool myMasterSentinel = new JedisSentinelPool("mymaster", sentinelSet); Jedis master = myMasterSentinel.getResource(); master.set("aaaa", "aaaTest"); master.close(); /** * 获取master链接~方法二 */ Jedis sentinelNode = new Jedis("192.168.50.10", 26179); List<Map<String, String>> masterList = sentinelNode.sentinelMasters(); Map<String, String> masterMap = null; for (Map<String, String> temp : masterList){ if ("mymaster".equals(temp.get("name"))){ masterMap = temp; break; } } System.out.println("masterIp:" + masterMap.get("ip")); System.out.println("masterPort:" + masterMap.get("port")); List<String> mymaster = sentinelNode.sentinelGetMasterAddrByName("mymaster"); System.out.println("masterIp:" + mymaster.get(0)); System.out.println("masterPort:" + mymaster.get(1)); /** * 获取slaves */ Jedis jedis = new Jedis("192.168.50.10", 26179); List<Map<String, String>> slaves = jedis.sentinelSlaves("mymaster"); for (Map<String, String> temp : slaves){ System.out.println("slaveIp:" + temp.get("ip")); System.out.println("slaveIp:" + temp.get("port")); } /** * 主从切换 */ Map<String, String> first = slaves.get(0); Jedis toBeMaster = new Jedis(first.get("ip"), Integer.parseInt(first.get("port"))); String flag = toBeMaster.slaveofNoOne(); // 将自己设置为主节点 for (int i = 1; i < slaves.size(); i++){ Map<String, String> temp = slaves.get(i); Jedis ortherSlave = new Jedis(temp.get("ip"), Integer.parseInt(temp.get("port"))); ortherSlave.slaveof(first.get("ip"), Integer.parseInt(first.get("port"))); } Jedis slave = new Jedis("192.168.50.10", 6279); /** * 重新加载配置信息,复原 */ slave.configResetStat(); /** * 手动触发RDB(save、bgsave)以及aof rewrite */ slave.save(); slave.bgsave(); slave.bgrewriteaof(); /** * 获取信息,可以知道自己是什么角色 */ String info = slave.info(); String replication = slave.info("replication"); } }
ASP.NET Core分布式缓存Redis主从Sentinel哨兵模式实战演练
一、课程介绍
Redis是被广泛使用的基础软件之一。对于工程师和,架构师,运维人员来说,了解Redis的高可用方案和背后的原理,是必备的基础知识。
“高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。
Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案之一,当用Redis做Master-Slave(主从复制)的高可用方案时,假如master宕机了,它能监控多个master-slave集群,发现master宕机后能进行自动切换。Redis主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。1.1、本次分享课程包含知识点如下:
★Redis的三种集群解决方案对比。
★Redis哨兵模式概述。
★如何使用Dcoker部署Redis主从切换哨兵模式(一主二从三哨兵)。1.2、一句话总结今天我们学习达到的目标
在ASP.NET Core中如何使用分布式缓存Redis主从Sentinel哨兵模式实现故障转移。
二、Redis的三种集群解决方案对比
redis有三种集群方式:主从复制,哨兵模式和集群。
1)、Redis主从复制特点
Redis主从复制不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。
2)、Redis主从切换哨兵模式特点
哨兵Sentinel基于主从复制模式,所以优缺点很多重合。最大的优点就是可以主从切换,进行故障转移。缺点就是扩容很难。
3)、Redis-Cluster 集群特点
redis-cluster 集群模式,也是大型企业中使用的模式,无中心架构,支持动态扩容,具备哨兵与主从的优点,客户端只需要连接集群中任意一个节点。
三、Redis哨兵模式概述
有了主从复制的实现以后,如果想对主服务器进行监控,那么在redis2.6以后提供了一个"哨兵"的机制。顾名思义,哨兵的含义就是监控redis系统的运行状态。可以启动多个哨兵,去监控redis数据库的运行状态。其主要功能有两点:
a、监控所有节点数据库是否在正常运行。
b、master数据库出现故障时,可以自动通过投票机制,从slave节点中选举新的master,实现将从数据库转换为主数据库的自动切换。
一个一主多从的Redis系统中,可以使用多个哨兵进行监控任务以保证系统足够稳健。此时,不仅哨兵会同时监控主数据库和从数据库,哨兵之间也会相互监控。在这里,建议大家哨兵至少部署3个,并且使用奇数个哨兵。Redis Sentinel 的节点数量要满足 2n + 1 (n>=1)的奇数个,所以最小数量是3个!
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
这里的哨兵有两个作用
1)、通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
2)、当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。
四、如何使用Dcoker部署Redis主从切换哨兵模式(一主二从三哨兵)
Redis主从结构搭建成功了,系统的可用性变高了,但是如果主发生故障,需要人工手动切换从机为主机。这种切换工作不仅浪费人力资源,更大的影响是主从切换期间这段时间redis是无法对外提供服务的。因此,哨兵系统被开发出来了,哨兵可以在主发生故障后,自动进行故障转移,从从机里选出一台升级为主机,并持续监听着原来的主机,当原来的主机恢复后,会将其作为新主的从机。
一主(master)二从(slave)三哨兵(sentinel)的配置目标, 如下
五、ASP.NET Core中使用分布式缓存Redis主从Sentinel哨兵模式
一般实际工作中Redis都是由我们的运维DB工程师帮我们去搭建环境,但是在刚开始的学习过程中,可能需要我们自行去搭建环境哦,这里为了方便起见,阿笨强烈推荐大家采用Docker容器化的方式进行搭建环境。 具体的环境搭建过程请自行研究和攻克一下哦(刚开始需要做好一定心里准备,如果对概念理解不深刻的话,Redis哨兵环境搭建还是比较复杂和繁琐,由于Redis跟平台和开发语言没有任何的关系,所以建议大家还是事先参考一些博客后才自行采取行动噢)。
简单的主从复制架构在 master 故障后会不可用,Redis 官方提供了哨兵(sentinel)机制自动实现主备切换保证高可用。哨兵机制通过一组哨兵节点监控主从节点的运行状态,并在主节点故障后选举新的主节点。
六、实现步骤
关于.NET Core如何使用Redis的哨兵模式,这里阿笨推荐大家使用CSRediscore。以下步骤前提条件就是你已经配置到了Redis的哨兵模式,配置推荐大家可以采用Docker的方式相对简单一些,感兴趣的话大家自行百度攻克一下。阿笨这里就只介绍如何去使用功能。
1)、配置连接字符串SentinelConnectString
2、将csredis实例注册到管道中
3、使用redis功能,对调用方在功能上的使用完全透明化,无任何差异。
七、总结
redis通过主从复制来实现高可用,但是发生故障时需要人工进行主从切换,效率低下。哨兵机制实现了redis主从的自动切换,提高了redis集群的可用性,提高了redis集群的故障转移效率。
我们可以看到哨兵机制是有缺点的:
1.主从服务器的数据要经常进行主从复制,这样造成性能下降。
2.当主服务器宕机后,从服务器切换成主服务器的那段时间,服务是不能用的。
为了保证redis的真真的高可用官方推荐使用redis-cluster集群。
一般的项目我们采用redis的哨兵模式架构(推荐采用一主二从三哨兵)就可以满足业务要求了,阿笨水平也有限,关于redis的高可用cluster集群的运用大家就根据个人的项目架构要求去研究和探索了。
希望本次分享课程能够让大家有所收获!最后送大家一句话:希望大家在.NET Core的学习道路上一直跟着阿笨坚持下去。
七、源代码示例下载
扫码关注下方微信公众号,回复t5pq关键字获取源代码下载地址。
有问题微信公众号回复wx关键字,加阿笨的个人微信号。
centos7 docker搭建redis主从集群+sentinel哨兵
一、安装docker启动一个redis实例
1.centos7可以使用yum安装
yum install -y docker
2.下载redis镜像
docker pull redis
3.查看下载的镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/redis latest a55fbf438dfd 4 weeks ago 95 MB
4.用docker启动redis实例
docker run -d --name myredis -p 6379:6379 redis --requirepass 123456 --masterauth 123456
-d 以守护进程模式运行
-p 将容器的6379端口映射到宿主机的6379端口
--requirepass 设置redis密码
--masterauth 设置连接主服务的密码,需要和requirepass设置一样
centos 7.2版本运行docker时可能会失败,运行yum update更新系统版本到7.4之后就可以解决
二、不使用redis.conf配置主从集群
1.启动3个redis实例
docker run -d --name redis-master -p 6379:6379 redis --requirepass 123456 --masterauth 123456
docker run -d --name redis-slave1 -p 6380:6379 redis --requirepass 123456 --masterauth 123456
docker run -d --name redis-slave2 -p 6381:6379 redis --requirepass 123456 --masterauth 123456
2.查看容器ip
docker inspect containerid(容器ID)
docker inspect containername (容器名)
此时3个redis的内网ip为:
redis-master: 172.18.0.2:6379
redis-slave1: 172.18.0.3:6379
redis-slave2: 172.18.0.4:6379
3.以bash进入容器
[root@toc-ble-lock ~]# docker exec -it redis-master bash
root@8a39ebe78d0c:/data#
4.进入redis命令行
root@8a39ebe78d0c:/data# redis-cli
127.0.0.1:6379> get name
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth password
OK
127.0.0.1:6379> get name
"hhh"
127.0.0.1:6379> exit
root@8a39ebe78d0c:/data# redis-cli -a password
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> get name
"hhh"
127.0.0.1:6379>
直接redis-cli也可以进入,但是命令不会执行成功需要执行auth password验证密码
或者直接redis-cli -a password 进入
5.查看redis信息
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:bd076dd94f07a91f49a1bbd2720e88873144c1ae
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379>
会发现3个redis都是master
6.进入另外2个redis容器配置集群
127.0.0.1:6379> SLAVEOF 172.18.0.2 6379
因为在启动redis容器的时候指定了masterauth,所以不需要再进入redis设置masterauth
如果启动redis容器时没有指定masterauth,需要进入redis设置masterauth,命令如下:
127.0.0.1:6379> CONfig SET masterauth 123456
再次查看redis-master的信息
到此主从redis配置完成。
三、配置redis sentinel哨兵
1.创建sentinel.conf文件
[root@toc-ble-lock ~]# touch sentinel1.conf
[root@toc-ble-lock ~]# vim sentinel1.conf
粘贴以下内容:
sentinel monitor mymaster 172.18.0.2 6379 2
daemonize yes
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 10000
logfile "/data/log.txt"
复制sentinel1.conf文件为sentinel2.conf和sentinel3.conf
sentinel monior mymaster 172.18.0.2 6379 2 监听名为mymaster(名字随便起)的主服务 ip为172.18.0.2 端口为6379
daemonize yes 以守护进程方式运行
sentinel auth-pass mymaster <password> 验证主redis密码
sentinel down-after-milliseconds mymaster 10000 超过10秒没有响应认为下线
sentinel failover-timeout mymaster 60000 60秒超时
logfile "/data/log.txt" 日志输出位置
2.运行3个sentinel容器
docker run -it --name sentinel1 -v /root/sentinel1.conf:/data/sentinel.conf -d redis
docker run -it --name sentinel2 -v /root/sentinel2.conf:/data/sentinel.conf -d redis
docker run -it --name sentinel3 -v /root/sentinel3.conf:/data/sentinel.conf -d redis
分别进入3个sentinel容器中启动sentinel
docker exec -it sentinel1 bash
redis-sentinel sentinel.conf
tail -f log.txt
三个sentinel容器都启动成功会在log.txt里显示如下:
3.测试
停掉redis-master容器
docker stop redis-master
10秒之后重启redis-master
docker start redis-master
发现172.18.0.4从redis提升为主redis,172.18.0.2变为从redis
再停掉新的主redis
docker stop redis-slave2
10秒之后重启redis-slave2
docker start redis-slave2
发现172.18.0.2从redis提升为主redis,172.18.0.4变为从redis
4.注意
1.如果在启动redis容器的时候没有指定--masterauth参数,每次停掉redis容器后redis服务的masterauth会被清空需要重新进入设置。
2.--requirepass 和--masterauth 需要设置成一样的密码。
3.因为master也可能会变成slave所以master服务要要设置masterauth。
4.所有的redis服务要设置相同的requirepass密码。
contos7下安装redis&redis的主从复制的配置&redis 哨兵(sentinel)
一、centos7下安装redis
1.解压 redis-5.0.5.tar.gz 压缩文件
解压命令为:
tar redis-5.0.5.tar.gz -C redis
解压后进入 redis 工作目录,进入 redis-5.0.5,依次执行以下命令:
make
make install
至此安装完成
二、redis的主从复制
1.在root下创建文件 testredis 文件夹
2.在 testredis 中创建 6379 文件夹 和 6380 文件夹
6379文件夹作为 redis 主服务器,6380文件夹作为 从服务器
3.将 redis/redis-5.0.5/redis.conf 文件分别拷贝进 6379 和 6380 文件夹
cp ~/redis/redis-5.0.5/redis.conf ~/testredis/6379/
cp ~/redis/redis-5.0.5/redis.conf ~/testredis/6380/
4.修改 6379 和 6380 下的 redis.conf 文件
vim redis.conf
修改为 yes ,是 redis 会在后台运行。
redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启
守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项
pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。
当daemonize选项设置成no时,当前界面将进入redis的命令行界面,
exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。
修改当前redis的登录密码
关闭服务器的保护机制。
是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会 本地进行访问,
拒绝外部访问。要是开启了密码 和bind,可以开启。否 则最好关闭,设置为no。
从服务器还需要单独另行配置:
从需要需要连接主服务器,这是连接的主服务器的 ip 和 端口号
连接的主服务器的密码
5.开启 redis
cd testredis/
redis-server 6379/redis.conf
redis-server 6380/redis.conf
6.查看主从复制是否成功
redis-cli -p 6380
如果出现这种情况,主服务器没连接上,检查自己的防火墙中 6379 端口号是否开启
开启命令:
firewall-cmd --permanent --add-port=6379/tcp
重启防火墙:
firewall-cmd --reload
然后在进去检查
现在是成功的,完成配置。
如果你想在加入更多的从服务器,依据上面的配置,就可以了!
三、redis 哨兵
1.将 redis/redis-5.0.5/ 下的 sentinel.conf 文件,复制到 testredis 下
cp ~/redis/redis-5.0.5/sentinel.conf ~/testredis/
2.修改 testredis/sentinel.conf 文件
sentinel auth-pass mymaster 123456
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel monitor mymaster 127.0.0.1 6379 1 :这个 1 的意思是,当主服务器 down 点之后,只要有一个哨兵同意,从服务器就可以成为主服务器
注意:这两行配置必须第一条在前面,不然哨兵找不到 主服务器。
3.进行测试
哨兵运行命令
redis-server /path/to/sentinel.conf --sentinel
/path/to/是 sentinel.conf 在的具体路径
出现这个代表哨兵配置成功,接下来查看,在 主服务器 down 掉之后,会不会选举新的主服务器
直接 down 掉 6379 主服务器
哨兵机制起作用,选举 6382 为主服务器,测试成功!!!
我们今天的关于从Sentinel C#获取Redis主地址和从redis获取数据的分享就到这里,谢谢您的阅读,如果想了解更多关于7、redis主从复制和sentinel配置高可用、ASP.NET Core分布式缓存Redis主从Sentinel哨兵模式实战演练、centos7 docker搭建redis主从集群+sentinel哨兵、contos7下安装redis&redis的主从复制的配置&redis 哨兵(sentinel)的相关信息,可以在本站进行搜索。
本文标签: