Redis主备配置

原理:

从服务器向主服务器发出SYNC指令,当主服务器接到此命令后,就会调用BGSAVE指令来创建一个子进程专门进行数据持久化工作,也就是将主服务器的数据写入RDB文件中。在数据持久化期间,主服务器将执行的写指令都缓存到内存中。

在BGSVAE指令执行完成后,主服务器会将持久化好的RDB文件发送给从服务器,从服务器接到此文件后会将其存储到磁盘上,然后再将其读取到内存中。这个动作完成之后,主服务器会将这段时间缓存的写指令再以redis协议的格式发给从服务器。

1.redis安装

$ tar xf redis-5.0.3.tar.gz
$ mv redis-5.0.3 redis
$ yum -y install gcc gcc-c++ jemalloc-devel
$ cd redis
$ make

  

2.配置主从

$ cp redis.conf redis_7000.conf
$ vim redis_7000.conf
port 7000
pidfile /var/run/redis_7000.pid
logfile /var/log/7000.log
dir ./7000

# replicaof <masterip> <masterport>:主服务这句话注释,从服务配置的需要开启。配置主服务的ip的port。

# 主端的密码
masterauth
# 客户端访问密码
requirepass

3.配置哨兵模式

$ vim sentinel.conf
daemonize yes
logfile /var/log/redis-sentinel.log
# 多少毫秒没有接收到主节点的反馈,认为主节点down
sentinel down-after-milliseconds mymaster 60000
# 哨兵监控主节点的IP和端口 1表示至少一个节点认为主节点down了,才开始选举新节点
sentinel monitor mymaster 127.0.0.1 7000 1
# failover过期时间
sentinel failover-timeout mymaster 30000
# 配置哨兵连接主节点的认证密码。(主节点配置的requirepass)
sentinel auth-pass mymaster ypmdd21312@#asdhjs@#!

  

如果Master宕机切换到Slave上,直接向slave写数据,之后将slave的角色切换成Master,原来的master重新加入到主从中,成为slave,对数据不会有影响。

Redis启动的一些警告

# WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

  

警告:过量使用内存设置为0!在低内存环境下,后台保存可能失败。

$ vim /etc/sysctl.conf
vm.overcommit_memory = 1
$ sysctl -p

  

4.检测

查看master或者slave状态

$ redis-cli -a 密码 (没有密码则忽略-a)
$ INFO REPLICATION

查看哨兵状态

cat /var/log/redis-sentinel.log 

keepalived

1.安装keepalived服务

$ yum -y install keepalived

2.配置keepalived

$ vim /etc/keepalived/keepalived.conf
global_defs {
router_id redis1
}

vrrp_instance VI_1 {
state BACKUP
nopreempt
interface eth0
virtual_router_id 51
priority 100
# 本机ip地址
unicast_src_ip 10.13.2.230
# 对端ip地址,必须写成三行的形式
unicast_peer {
10.13.14.196
}
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.13.171.98 #HAVIP
}
}

virtual_server 10.13.171.98 6379 {
delay_loop 3
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP

real_server 10.13.2.230 6379 {
weight 1
TCP_CHECK {
connect_timeout 3
}
}
real_server 10.13.14.196 6379 {
weight 1
TCP_CHECK {
connect_timeout 3
}
}
}

3.启动服务

$ systemctl start keepalived
4.测试
$ ip a
5.配置脚本
$ vim /etc/keepalived/keepalived.conf
···
vrrp_script check_redis {
script "/etc/keepalived/check_redis.sh"
interval 3
}
···
vrrp_instance VI_1 {
track_script {
check_redis
}
}
$ vim /etc/keepalived/check_redis.sh
#/bin/bash
port=`ss -antp | grep 7000 | grep LISTEN | wc -l `
if [ $port -eq 0 ];then
systemctl stop keepalived
fi

云上布置Keepalived的问题

# 本机ip地址
unicast_src_ip 10.13.2.230
# 对端ip地址,必须写成三行的形式
unicast_peer {
10.13.14.196
}

路由交换层禁用了ARP的广播限制,造成keepalived主备无法通z过vrrp协议广播的方式进行通讯,造成了两端都会产生HAVIP。必须配置指定IP的两台服务器间进行通讯。

telnet+端口不成功

ping端口没有问题,但是telnet VIP + 服务端口会偶尔出现问题,telnet VIP +其他端口 没有问题。

virtual_server 10.13.171.98 6379 {
delay_loop 3
#lb_algo rr
#lb_kind DR
persistence_timeout 50
protocol TCP

  

因为用不到LVS的调度算法lb_algo和转发方式lb_kind,这两个会影响到telnet VIP+配置的端口。

原因:

因为如果采用了lvs的转发方式的话,以DR模式为例,直接将请求转发给了后端的真实服务器,但是目的ip为vip,后端的服务器上没有vip,所以导致请求无法响应。偶尔可以成功是因为rr正好轮训到了主节点上。

Redis5.0+哨兵模式+Keepalived实现高可用的更多相关文章

  1. DR模式下的高可用的LVS(LVS+keepalived)

    一.keepalived 在DR模式下,使用Keepalived实现LVS的高可用.Keepalived的作用是检测服务器的状态,如果有一台web服务器 宕机,或工作出现故障,Keepalived将检 ...

  2. 通过LVS+Keepalived搭建高可用的负载均衡集群系统

    1. 安装LVS软件      (1)安装前准备操作系统:统一采用Centos6.5版本,地址规划如下: 服务器名 IP地址 网关 虚拟设备名 虚拟ip Director Server 192.168 ...

  3. keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群

    keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群 内网路由都用mac地址 一个mac地址绑定多个ip一个网卡只能一个mac地址,而且mac地址无法改,但 ...

  4. haproxy+keepalived实现高可用负载均衡

    软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. HA ...

  5. 架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层

    1.概述 前两遍文章中,我们一直在说后文要介绍Nginx + Keepalived的搭建方式.这篇文章开始,我们就来兑现前文的承诺,后续的两篇文章我们将介绍Nginx + Keepalived和 LV ...

  6. LVS+Keepalived实现高可用集群

    LVS+Keepalived实现高可用集群来源: ChinaUnix博客 日期: 2009.07.21 14:49 (共有条评论) 我要评论 操作系统平台:CentOS5.2软件:LVS+keepal ...

  7. LVS+Keepalived实现高可用负载均衡(转)

    LVS+Keepalived实现高可用负载均衡   一.原理         1.概要介绍         如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具 ...

  8. 项目实战3—Keepalived 实现高可用

    实现基于Keepalived高可用集群网站架构 环境:随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,目前业务已经通过集群LVS架构可做到随时拓展,后端 ...

  9. 实现基于Keepalived主从高可用集群网站架构

    背景 上一期我们实现了基于lvs负载均衡集群的电商网站架构,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,目前业务已经通过集群LVS架构可做到随时拓展 ...

随机推荐

  1. 【SpringBoot】springboot -- 2.0版本自定义ReidsCacheManager的改变

    1. 问题发现 在1.0版本中,我们配置redis的cacheManager是这种方式: //缓存管理器 @Bean public CacheManager cacheManager(@Suppres ...

  2. Mysql8安装与配置

    网上的教程有很多,基本上大同小异.但是安装软件有时就可能因为一个细节安装失败.我也是综合了很多个教程才安装好的,所以本教程可能也不是普遍适合的. 安装环境:win7 1.下载zip安装包: MySQL ...

  3. JAVA项目中文件重命名方式

    可以直接改类名,之后eclipse会报错: 点击×号会给出解决方案: 注意:不能通过右击servlet文件直接重命名.否则运行之后程序会报错(文件路径不对之类的)

  4. IntelliJ IDEA安装scala插件并创建scala示例

    1.http://blog.csdn.net/a2011480169/article/details/52712421 2.http://blog.csdn.net/stark_summer/arti ...

  5. Fiddler抓包【3】_设置断点修改

    1. 断点修改Request 1.1.Request全部中断 设置中断:Rules---> Automatic Breakpoints--->Before Requests 取消中断:Ru ...

  6. 在Ubuntu中,vi命令编辑异常

    在Ubuntu中,进入vi命令的编辑模式,发现按方向键不能移动光标,而是会输出ABCD,以及退格键也不能正常删除字符.这是由于Ubuntu预装的是vim-tiny,而我们需要使用的是vim-full, ...

  7. SQL update select

    SQL update select语句 最常用的update语法是: UPDATE TABLE_NAME SET column_name1 = VALUE WHRER column_name2 = V ...

  8. 洛谷P2611 信息传递

    并查集裸题,记录每个点的胜读,取个min就好了 #include<stdio.h> #include<string.h> #include<algorithm> u ...

  9. 使用Configuration Extensions读取配置

    使用Configuration Extensions读取配置 Configuration Extensions 是微软基于Configuration的扩展,能够很好的解析系统遇到各种配置文件,包括js ...

  10. html5 渐变按钮练习

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...