redis哨兵主从自动切换
1、先配置redis主从,在从服务器上配置成为主服务器的从机
slaveof 120.26.192.1 #主服务器的IP和端口
masterauth "" #连接密码
为了后面的自动切换能成功,我们在主服务器也配置好连接从服务器的密码
masterauth ""
重启之后可以看见是否建立了关系
127.0.0.1:> info replication
# Replication
role:master
connected_slaves:
slave0:ip=121.19.2.1,port=,state=online,offset=,lag=
master_replid:932ba59e06f5481dff1c3ac62ab7458e0ea0aa57
master_replid2:
master_repl_offset:
second_repl_offset:-
repl_backlog_active:
repl_backlog_size:
repl_backlog_first_byte_offset:
repl_backlog_histlen:
2、配置哨兵 sentinel.conf
port
daemonize yes
sentinel monitor mymaster 192.168.251.129 2
sentinel down-after-milliseconds mymaster
sentinel parallel-syncs mymaster
sentinel failover-timeout mymaster
logfile "/var/log/sentinel_log.log"
sentinel auth-pass mymaster 12345#密码
注释:
. port :当前Sentinel服务运行的端口
. dir : Sentinel服务运行时使用的临时文件夹
sentinel monitor mymaster 192.168.251.129 :Sentinel去监视一个名为master的主redis实例,这个主实例的IP地址为本机地址192.168.1.,端口号为6379,而将这个主实例判断为失效至少需要2个 Sentinel进程的同意,只要同意Sentinel的数量不达标,自动failover就不会执行
. sentinel down-after-milliseconds mymaster :指定了Sentinel认为Redis实例已经失效所需的毫秒数。当实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。只有一个 Sentinel进程将实例标记为主观下线并不一定会引起实例的自动故障迁移:只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才会被标记为客观下线,这时自动故障迁移才会执行
. sentinel parallel-syncs mymaster :指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长
. sentinel failover-timeout mymaster :如果在该时间(ms)内未能完成failover操作,则认为该failover失败
在主从服务器上都配置好,配置可以一样的,然后启动哨兵
redis-sentinel sentinel.conf
通过手动关闭主服务器上的redis,看是否自动切换,如果成功就证明生效。开始配置客户端。
3、用的是TP5框架,改写框架自带的redis类 thinkphp/library/think/cache/driver/Redis.php
//两台服务器都配置好了监控哨兵
//主从配置要设置好密码,两变密码最好一致,因为切换的时候要密码验证
protected $sentinel = array(
array(
'host' => '116.62.111.1',
// redis端口
'port' => 1940,
// 密码
'password' => '123redis',
'select' => 0,
'timeout' => 1,
'expire' => 10000,
'persistent' => false,
'prefix' => 'subs',
'serialize' => true,
),
array(
'host' => '116.62.111.2',
// redis端口
'port' => 1940,
// 密码
'password' => '123redis',
'select' => 0,
'timeout' => 1,
'expire' => 10000,
'persistent' => false,
'prefix' => 'subs',
'serialize' => true,
), );
2、初始化redis的链接配置,通过链接哨兵来获取当前的主从服务器的信息,保证每次都是读的主服务器
 foreach ($this->sentinel as $sentinel){
                try{
                    $this->handler->connect($sentinel['host'], $sentinel['port'], $this->options['timeout']);
                    if ('' != $sentinel['password']) {
                        $this->handler->auth($sentinel['password']);
                    }
                    break;
                }catch (\Exception $e){
                    continue;
                }
            }
3、测试只要一台服务器死,另外一台从几会自动切换成主机,把死的机子重启之后又会自动变成从机,自动同步关联。
redis哨兵主从自动切换的更多相关文章
- java使用Redis7--分布式存储并实现sentinel主从自动切换
		
前面实现了分布式存储,也实现了sentinel单点故障时主从自动切换,现在还需要一种机制,实现分布式存储下,单点故障时的主从自动切换. Server配置 # cd /usr/redis/src/tes ...
 - Dledger的是如何实现主从自动切换的
		
前言 hello小伙伴们,今天王子又来继续和大家聊RocketMQ了,之前的文章我们一直说Broker的主从切换是可以基于Dledger实现自动切换的,那么小伙伴们是不是很好奇它究竟是如何实现的呢?今 ...
 - 利用Redis Sentinel实现redis主从自动切换
		
redis主从配置很简单,只需要在slave的配置里加slaveof 192.168.0.100 6379(master的ip和端口) 如果master有密码再设置 masterauth passwo ...
 - Redis主备自动切换
		
Sentinel(哨兵)是用于监控redis集群中Master状态的工具. 一.Sentinel作用 1.Master状态检测 2.如果Master异常,则会进行Master-Slave切换,将 ...
 - 【转】双机高可用、负载均衡、MySQL(读写分离、主从自动切换)架构设计
		
架构简介 前几天网友来信说帮忙实现这样一个架构:只有两台机器,需要实现其中一台死机之后另一台能接管这台机器的服务,并且在两台机器正常服务时,两台机器都能用上.于是设计了如下的架构.此架构主要是由kee ...
 - 双机高可用、负载均衡、MySQL(读写分离、主从自动切换)架构设计
		
前几天网友来信说帮忙实现这样一个架构:只有两台机器,需要实现其中一台死机之后另一台能接管这台机器的服务,并且在两台机器正常服务时,两台机器都能用上.于是设计了如下的架构. 架构简介 此架构主要是由ke ...
 - SpringBoot整合redis哨兵主从服务
		
前提环境: 主从配置 http://www.cnblogs.com/zwcry/p/9046207.html 哨兵配置 https://www.cnblogs.com/zwcry/p/9134721. ...
 - 08.简单学习redis哨兵主备切换和选举算法
		
一.选举的授权 每次一个哨兵要做主备切换,首先需要quorum数量的哨兵认为odown,然后选举出一个哨兵来做切换,这个哨兵还得得到majority哨兵的授权,才能正式执行切换 如果quorum &l ...
 - Redis集群_3.redis主从自动切换Sentinel(转)
		
Redis SentinelSentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中 一.Sentinel作用:1):Master状态检测 2 ...
 
随机推荐
- 腾讯云服务器哪个地区节点好?来ping一下速度就知道了
			
腾讯云服务器怎么样?速度快吗?相信很多网友在购买云服务器之前都有此疑惑. 本人找了很久也没找到各区域节点的测试速度的域名和IP.即使有也不能批量查看对比哪个区域的速度. 网上都说这个区域节点速度快,那 ...
 - 安装 VMware  CentOS   Xmanager Xshell
			
1.CentOS下载CentOS是免费版,推荐在官网上直接下载,网址:https://www.centos.org/download/DVD ISO:普通光盘完整安装版镜像,可离线安装到计算机硬盘上, ...
 - oracle密码过期
			
1.使用sys,以sysdba登录. sqlplus /nolog conn sys/123456 as sysdba 2.将密码有效期由默认的180天修改成“无限制”,修改之后不需要重启动数据库,会 ...
 - PL2303HX在Windows 10下面不装安装驱动的解决办法(Code:10)
			
Prolific在很早之前推出了一款名为PL2303HX的芯片, 用于USB转RS232, 这款芯片使用的范围非常广, 并且年代久远. 但是这款芯片因为用的特别多, 所以中国就有很多厂家生产了仿造的P ...
 - bugku web 矛盾
			
$num=$_GET['num'];if(!is_numeric($num)){echo $num;if($num==1)echo 'flag{**********}';} 首先要判断get得到的数据 ...
 - b树和hash树的应用场景
			
关系型数据库中,索引大多采用B/B+树来作为存储结构,而全文搜索引擎的索引则主要采用hash的存储结构,这两种数据结构有什么区别? 如果是等值查询,那么哈希索引明显有绝对优势,因为只需要经 ...
 - 搭建alpine仓库 提供apk包
			
搭建alpine私有仓库从官方拉取alpine所有的包 wget -r -np -nH http://nl.alpinelinux.org/alpine/v3.5/main/x86_64/ wget ...
 - 小计:Shopee批量删除修复~附脚本
			
需求 昨天浪的时候,无意之间看到文职人员在一个个删除违禁商品,大概23个店铺,每个店铺500多个商品,页面是用Ajax异步加载的,每删一个就需要等几秒,粗略估计一下用时:9h左右 然后了解了下是什么情 ...
 - 第一周java学习总结
			
学号 20175206 <Java程序设计>第一周学习总结 教材学习内容总结 第一章是关于JAVA入门的注意事项: 第一章主要按照顺序讲了JAVA的地位,诞生,特点,JDK的安装,一些ja ...
 - 树莓派安装 MySQL 时出现错误的解决方法
			
今天被要求解决一个树莓派无法正常安装 MySQL 的问题.以下是解决过程记录. 我在 Mac 上利用 SSH 连接到树莓派,执行 sudo apt-get install mysql-server m ...