redsi一主两从三哨兵
1.前提准备
防火墙,selinux,主机名解析,所有主机安装gcc
[root@localhost ~]# vim /etc/hosts
192.168.122.135 redis_master
192.168.122.136 redis_slave01
192.168.122.137 redis_slave02
192.168.122.138 sentinel01
192.168.122.139 sentinel02
192.168.122.140 sentinel03
[root@localhost ~]# for i in 135 136 137 138 139 140
> do
> rsync /etc/hosts 192.168.122.$i:/etc/hosts
> done
以192.168.122.135位例
[root@redis_master soft]# tar zxf redis-4.0.11.tar.gz
[root@redis_master soft]# cd redis-4.0.11/
[root@redis_master redis-4.0.11]# make MALLOC=libc
[root@redis_master redis-4.0.11]# make PREFIX=/soft/redis install
[root@redis_master redis-4.0.11]# mkdir -p /soft/redis/conf/
[root@redis_master redis-4.0.11]# cp redis.conf /soft/redis/conf/
<三台哨兵[root@redis_master redis-4.0.11]# cp sentinel.conf /soft/redis/conf/
>
2.主从配置
192.168.122.135(master)
[root@redis_master redis]# mkdir data
[root@redis_master redis]# mkdir logs
[root@redis_master conf]# vim redis.conf
bind 192.168.122.135
#支持内网/本地访问,比如 bind 172.31.175.142 127.0.0.1
protected-mode no
是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和bind,可以开启。否则最好关闭,设置为no。
port 6379
#端口号
daemonize yes
#是否在后台执行,yes:后台运行;no:不是后台运行
pidfile /var/run/redis_6379.pid
#redis的进程文件
logfile /soft/redis/logs
#指定了记录日志的文件。
dir /soft/redis/data
#数据目录,数据库的写入会在这个目录。
slave-read-only yes
#作为从服务器,默认情况下是只读的(yes),可以修改成NO,用于写
slave-priority 100
#当master不可用,Sentinel会根据slave的优先级选举一个master。最低的优先级的slave,当选master。而配置成0,永远不会被选举。
appendonly yes
#redisrdbredissaveAppend Only FileRedis appendonly.aof RedisRDBappendfilename "appendonly.aof"
#aof文件名
appendfsync everysec
#aof持久化策略的配置
#no表示不执行fsync,由操作系统保证数据同步到磁盘,速度最快。
#always表示每次写入都执行fsync,以保证数据同步到磁盘。
#everysec表示每秒执行一次fsync,可能会导致丢失这1s数据
192.168.122.136(slave01)
[root@redis_slave01 redis]# mkdir data
[root@redis_slave01 redis]# mkdir logs
[root@redis_slave01 conf]# vim redis.conf
bind 192.168.122.136
protected-mode no
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile /soft/redis/logs
dir /soft/redis/data
slave-read-only yes
slaveof 192.168.122.135 6379
#复制选项,slave复制对应的master。
slave-priority 90
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
192.168.122.137(slave02)
[root@redis_slave02 redis]# mkdir data
[root@redis_slave02 redis]# mkdir logs
[root@redis_slave02 conf]# vim redis.conf
bind 0.0.0.0
protected-mode no
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile /soft/redis/logs
dir /soft/redis/data
slave-read-only yes
slaveof 192.168.122.135 6379
slave-priority 80
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
3.哨兵配置
192.138.122.138(sentinel01)
[root@sentinel01 redis]# mkdir temp
[root@sentinel01 redis]# mkdir logs
[root@sentinel01 conf]# vim sentinel.conf
protected-mode no
port 26379
dir /soft/redis/temp
daemonize yes
logfile "/soft/redis/logs/sentinel_log.log"
sentinel monitor redis1 192.168.122.135 6379 2
sentinelmaster,192.168.122.135:63792sentinelmaster redissentinelsentinelmaster22sentinelmastermastersentinel parallel-syncs redis1 1
failoverslavemasterfailoverslavereplication 1 slavesentinel down-after-milliseconds redis1 10000
会向发送心跳来确认是否存活,如果在一定时间范围内不回应或者是回复了一个错误消息,那么这个会主观地单方面地认为这个已经不可用了也简称为。而这个就是用来指定这个一定时间范围的,单位是毫秒。
sentinel failover-timeout redis1 60000
#failover过期时间,当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel 将会认为此次failover失败
192.168.122.139(sentinel02)
[root@sentinel02 redis]# mkdir temp
[root@sentinel02 redis]# mkdir logs
[root@sentinel02 conf]# vim sentinel.conf
protected-mode no
port 26379
dir /soft/redis/temp
daemonize yes
logfile "/soft/redis/logs/sentinel_log.log"
sentinel monitor redis1 192.168.122.135 6379 2
sentinel parallel-syncs redis1 1
sentinel down-after-milliseconds redis1 10000
sentinel failover-timeout redis1 60000
192.168.122.140(sentinel03)
[root@sentinel03 redis]# mkdir logs
[root@sentinel03 redis]# mkdir temp
[root@sentinel03 conf]# vim sentinel.conf
protected-mode no
port 26379
dir /soft/redis/temp
daemonize yes
logfile "/soft/redis/logs/sentinel_log.log"
sentinel monitor redis1 192.168.122.135 6379 2
sentinel parallel-syncs redis1 1
sentinel down-after-milliseconds redis1 10000
sentinel failover-timeout redis1 60000
4.启动redis主从,哨兵
[root@redis_master bin]# ./redis-server ../conf/redis.conf
[root@redis_slave01 bin]# ./redis-server ../conf/redis.conf
[root@redis_slave02 bin]# ./redis-server ../conf/redis.conf
[root@sentinel01 bin]# ./redis-server ../conf/sentinel.conf --sentinel
[root@sentinel02 bin]# ./redis-server ../conf/sentinel.conf --sentinel
[root@sentinel03 bin]# ./redis-server ../conf/sentinel.conf --sentinel
附一:错误
redis:Error condition on socket for SYNC: No route to host
redis问题解决:Error condition on socket for SYNC: No route to host
第一种方案:
1.telnet ip port 是否通
2.使用netstat -tnlp 查询IP地址是127.0.0.1而不是0.0.0.0或者本机ip(127.0.0.1代表只能本机使用)
3.修改master中redis.conf中bind绑定0.0.0.0或者本机ip
2.重启master服务
如果第一种方案行不通,那就使用第二种方案;
第二种方案:
1.关闭防火墙:service iptables stop
2.如果出现以下异常
Redirecting to /bin/systemctl stop iptables.service
Failed to stop iptables.service: Unit iptables.service not loaded.
(其他异常也可以试下)
3.进入/etc/sysconfig/目录下查询有没有iptables文件
4.如果没有,使用systemctl stop firewalld 关闭防火墙
5.使用yum install iptables-services 安装或者更新服务
6.service iptables stop尝试下关闭服务器
7.关闭成功无异常,重启maste和slave,进入redis-cli 输入info就能看到maste和slave信息了
5.验证redis:master-slave(info replication)
[root@redis_master bin]# ./redis-cli -h 192.168.122.135
192.168.122.135:6379> SET age 23
OK
192.168.122.135:6379> get age
"23"
192.168.122.136:6379> get age
"23"
192.168.122.137:6379> get age
"23"
6.验证哨兵集群(反客为主)
这时我们让master挂掉,查看哨兵日志
tail -50f sentinel_log.log 按照我们配置的 “slave-priority”的值,值小的192.168.122.137(slave02)将成为新的master.192.168.122.136成为192.168.122.137的slave. 在将192.168.122.135这台机器的redis服务起来后发现变成了新master的slave
redsi一主两从三哨兵的更多相关文章
- redis(一主两从三哨兵模式搭建)记录
转自:http://www.cnblogs.com/fly-piglet/p/9836314.html 目的: 让看看这篇文章的的人能够知道:软件架构.软件的安装.配置.基本运维的操作.高可用测试.也 ...
- 【运维技术】redis(一主两从三哨兵模式搭建)记录
redis(一主两从三哨兵模式搭建)记录 目的: 让看看这篇文章的的人能够知道:软件架构.软件的安装.配置.基本运维的操作.高可用测试.也包含我自己,能够节省对应的时间. 软件架构: 生产环境使用三台 ...
- 实践 - 搭建Redis一主两从三哨兵
实践 - 搭建Redis一主两从三哨兵 原因: 最近在复习Redis的时候,学习到了为了提高Redis集群的高可用性,有一个模式为哨兵模式.哨兵模式的作用是为了在主节点出现阻塞或者错误,无法接收数据的 ...
- Docker搭建Redis一主两从三哨兵
作者:oscarwin juejin.im/post/5d26b03de51d454fa33b1960 这次实验准备了三台云主机,系统为Debian,ip分别为:35.236.172.131 ,35. ...
- redis一主二从三哨兵
redis做集群的时候有很多种配置方法,一主二从三哨兵这种模式是官网推荐的.,写配置文件链接的时候,写的是哨兵地址,不是IP,用户名,密码之类的. 一主二从很好理解,一个主的redis,实时备份到两个 ...
- springboot 集成Redis一主二从三哨兵
1.Centos7 Redis一主二从三哨兵配置 Redis一主二从三哨兵环境搭建 2.接入过程 与集成redis单机不同的是jedis相关的配置做了修改,JedisPool换成了JedisSenti ...
- redis环境搭建及一主二从三哨兵模式配置
一.单机redis环境搭建 1.安装: OS:linux redhat6.5 下载redis 官网下载链接:https://redis.io/download 把安装包上传到服务器,进行解压 [roo ...
- docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot【图文完整版】
一.前言 redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群. redis有两种高可用的方案: High availability with Re ...
- redis 一主二从三哨兵
总体部署 一主二从三哨兵 ip地址分配分别为 主 127.0.0.1:6379 从 127.0.0.1:6389 从 127.0.0.1:6399 哨兵 127.0.0.1:26379 哨兵 127. ...
随机推荐
- C#中的readonly跟const用法小结
总结一下常量和只读字段的区别: 由来: 笔者也是在看欧立奇版的<.Net 程序员面试宝典>的时候,才发现自己长久以来竟然在弄不清出两者的情况下,混用了这么长的时间.的确,const与rea ...
- 数据库内连接GROUP BY查询外键表数据行的总数
最近看了看SQL,刚好遇到这个问题. INNER JOIN [外键表] ON [主键表] 内链接,用 GROUP BY 分组外键数据,COUNT(*)计算该外键数据总行数,最后用 ORDER BY 排 ...
- LeetCode子域名访问计数-Python3.7<五>
上一篇:LeetCode 键盘行<四> 题目:https://leetcode-cn.com/problems/subdomain-visit-count/description/ 一个网 ...
- Http 概述
Http是可靠的数据传输协议. 资源 Web服务器是Web资源(resource)的宿主.包括静态文件以及动态的内容. 媒体类型 Http对每种需要由web传输的对象都打上了名为MIME类型的 ...
- Matlab Euler's method
% matlab script to test efficiency of % Euler's method, classical Runge-Kutta, and ode45 % on Arenst ...
- music-api-next:一款支持网易、xiami和QQ音乐的JS爬虫库
音乐,无界 让音乐无界 如果你苦于挑选一个全方位.多平台.简便易用的音乐爬虫库,music-api-next是不二选择. 特性: 支持网易.虾米和QQ三大主流音乐平台 支持音乐关键词搜索 支持音乐链接 ...
- blfs(systemv版本)学习笔记-编译安装i3-wm平铺式窗口管理器
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! i3-wm项目的官网:https://i3wm.org/ 首先需要lfs基础上编译安装完整的xorg服务 我的xorg服务编译安 ...
- 【读书笔记】iOS-iPad与iPhone
在开发通用型应用的时候,你总是需要记住,iPad并不是一个大大的iPod touch,为iPad开发的应用的界面应该更好地利用iPad的大屏幕,而不应该是iPhone应用的复制品. 参考资料:< ...
- SpringMVC处理请求
HttpServletBean HttpServletBean主要参与了创建工作,并没有涉及请求的处理. FrameworkServlet FrameworkServlet的service方法里添加了 ...
- Elasticsearch5.4署遇到的问题
问题一 can not run elasticsearch as root Elastic 不建议通过root用户启动ES服务器,如果非要用root启动,可以在config/jvm.options配置 ...