一、keepalived 简介
Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。
Keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual RouterRedundancyProtocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。
所以,Keepalived一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能。
1、keepalived 服务的作用
keepalived的作用是检测Web服务器的状态,如果有一台提供Web服务器、MySQL服务器宕机或工作出现故障,keepalived会及时检测到,并将有故障的Web服务器或者MySQL服务器从系统中剔除,当服务器恢复并且正常提供服务后keepalived会自动将Web服务器、MySQL服务器的节点加入到集群中。这些工作都是keepalived自动完成,不需要人工干涉,需要人工做的只是修复发生故障的服务器。
2、keepalived 服务的三个重要功能
• 管理LVS负载均衡软件
• 实现LVS集群节点的健康检查中
• 作为系统网络服务的高可用性(failover)
3、keepalived 是一个类似于工作在layer3、4和7交换机制的软件
layer3、4和7工作在IP/TCP协议栈的IP层、传输层及应用层,实现原理如下:
• layer3:keepalived 使用layer3的方式工作时,keepalived会定期向服务器群中的服务器发送一个ICMP的数据包,如果发现某台服的IP地址无法ping通,keepalived便报告这台服务器失效,并将它从服务器集群中剔除。layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。
• layer4:layer4 主要以TCP端口的状态来决定服务器工作正常与否。如Webserver的服务端口一般是80,如果keepalived 检测到80端口没有启动,则 • keepalived 将把这台服务器从服务器群中剔除。
• layer7:layer7 工作在应用层,keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则keepalived 将把服务器从服务器群中剔除。
4、keepalived VRRP
• VRRP,全称 Virtual Router RedundancyProtocol,中文名为虚拟路由冗余协议,VRRP的出现是为了解决静态路由的单点故障。
• VRRP是通过一种竟选协议机制来将路由任务交给某台 VRRP路由器的。
• VRRP用 IP多播的方式(默认多播地址(224.0_0.18))实现高可用对之间通信。
•工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的开源。备节点可以有多个,通过优先级竞选,但一般Keepalived系统运维工作中都是一对。
•VRRP使用了加密协议加密数据,但Keepalived官方目前还是推荐用明文的方式配置认证类型和密码。
5、keepalived 工作原理
Keepalived高可用对之间是通过 VRRP进行通信的,VRRP是通过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。
在Keepalived服务对之间,只有作为主的服务器会一直发送VRRP广播包,告诉备它还活着,此时备不会枪占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快可以小于1秒。
二、keepalived 软件安装与配置详解
1、安装
# yum installkeepalived -y
/etc/keepalived
/etc/keepalived/keepalived.conf #keepalived服务主配置文件
/etc/sysconfig/keepalived
/usr/bin/genhash
/usr/lib/systemd/system/keepalived.service #服务
/usr/libexec/keepalived
/usr/sbin/keepalived
2、配置文件说明
• 全局配置
global_defs { #全局配置
notification_email { #定义报警邮件地址
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_fromAlexandre.Cassen@firewall.loc #定义发送邮件的地址
smtp_server 192.168.200.1 #邮箱服务器
smtp_connect_timeout 30 #定义超时时间
router_id LVS_DEVEL #定义路由标识信息,相同局域网唯一
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
• 虚拟ip配置
vrrp_instance VI_1{ #定义实例
state MASTER #状态参数 master/backup 只是说明
interface eth0 #虚拟IP地址放置的网卡位置
virtual_router_id 51 #VRRP组名,两个节点设置一样,以指明各个节点同属一VRRP组
priority 100 #优先级决定是主还是备 越大越优先 1~254
advert_int 1 #负载均衡器之间同步检查的时间间隔,单位是秒
authentication{ #设置验证信息,两个节点需一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.16 #指定虚拟IP,两个节点需设置一样
192.168.200.17
192.168.200.18
}
}
virtual_server192.168.200.100 443 { #定义虚拟服务器
delay_loop6 #健康检查时间,单位是秒
lb_algorr #负载调度算法,这里设置为rr,即轮询算法
lb_kindNAT #LVS实现负载均衡的机制,可以有NAT、TUN和DR三个模式可选
persistence_timeout50 #会话保持时间,单位是秒 负载均衡时设为0或者注销此行,不然轮询时请求连接会话丢失
protocolTCP #转发协议类型,有tcp和udp两种
real_server 192.168.201.100 443{ #定义WEB服务器
weight1 #权重
TCP_CHECK{ #通过tcpcheck判断RealServer的健康状态
connect_timeout5 #连接超时时间
nb_get_retry3 #重连次数
delay_before_retry3 #重连间隔时间
connect_port80
}
}
}
三、Apache + keepalived + lvs 负载均衡、热备
• # vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.lo.arp_ignore= 1
net.ipv4.conf.all.arp_ignore= 1
net.ipv4.conf.lo.arp_announce= 2
net.ipv4.conf.all.arp_announce= 2
• 主MASTER:
! Configuration Filefor keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script check_httpd{
script"/data/sh/check_httpd.sh"
interval2
weight2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 110
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.28.88/24
}
track_script {
check_httpd
}
}
virtual_server192.168.28.88 80 {
delay_loop 6
lb_algo rr
# lb_kind NAT
lb_kind DR
# persistence_timeout50 #轮询模式会丢失会话设为0或者注销此行
persistence_timeout 0
protocol TCP
real_server 192.168.28.134 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 10
}
}
real_server 192.168.28.135 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 10
}
}
}
• 备BACKUP:
state BACKUP
priority 90
• 检查脚本:
# vim check_httpd.sh
#!/bin/bash
counter=$(ps -C httpd--no-heading|wc -l)
if ["${counter}" = "0" ]; then
systemctl restart httpd
sleep 2
counter=$(ps -C httpd --no-heading|wc -l)
if [ "${counter}" = "0"]; then
systemctl stop keepalived
fi
fi
# chmod 777check_httpd.sh
• 检查状态:
# ipvsadm -l
# ipvsadm -lnc 连接条目
IPVS connection entries
pro expire state source virtual destination
TCP 01:43 FIN_WAIT 192.168.28.1:53984 192.168.28.88:80 192.168.28.134:80
TCP 00:37 SYN_RECV 192.168.28.1:53985 192.168.28.88:80 192.168.28.135:80
TCP 00:05 FIN_WAIT 192.168.28.1:53930 192.168.28.88:80 192.168.28.134:80
# ipvsadm -L -n 查看应答信息
IP Virtual Serverversion 1.2.1 (size=4096)
Prot LocalAddress:PortScheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.28.88:80 rr
-> 192.168.28.134:80 Route 1 0 2
-> 192.168.28.135:80 Route 1 0 2
• 配置WEB服务器,即realserver节点1和2
由于采用的是DR方式调度,Real_Server会以LVS的VIP来直接回复Client,所以需要在Real_Server的lo上开启LVS的VIP来与Client建立通信
# ifconfig lo:0192.168.28.88 netmask 255.255.255.255 up
• 配置web1
# vim /etc/init.d/lvsrs
#!/bin/bash
#description : startrealserver
VIP=192.168.28.88
sh/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVSof REALServer"
/usr/sbin/ifconfig lo:0$VIP broadcast $VIP netmask 255.255.255.255 up
echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
/usr/sbin/ifconfig lo:0down
echo "close LVSDirectorserver"
echo "0">/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0">/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0{start|stop}"
exit 1
esac
# chmod 755/etc/init.d/lvsrs #给新增lvsrs脚本一个755权限
# service lvsrsstart #启动lvsrs服务,我环境启动时出错,给一个functions 755权限,按各自环境操作
# chmod 755/etc/rc.d/init.d/functions #给functions755权限
• 注意:
• DR模式的缺陷
Realserver和lvs的vip提供服务的端口必须一致。
也就是说:vip的端口对外端口为80,但后端服务的真实端口为8080,通过lvs的DR模式是实现不了的。
Realserver和LVS不能在同一台机器上
Realserver和LVS需要在同一个vlan或者局域网下。
• NAT模式的缺陷
NAT模式流量的入和出都需要通过LVS服务器。
效率相比DR模式,性能和效率上会差一些。
四、Nginx + keepalived 热备
• Nginx+keepalived 主从配置
使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠。
主Server1:192.168.28.134
备Server2:192.168.28.135
VIP:192.168.28.88
# yum -y installkeepalived nginx
• 主MASTER 服务器keepalived.conf配置
global_defs {
notification_email {
root@localhost
}
notification_email_from Keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx{ #配置vrrp_script,主要用于健康检查,以及检查失败后执行的动作。
script"/etc/keepalived/chk_nginx" #健康检查脚本,当脚本返回值不为0时认为失败
interval2 #检查频率,以下配置每2秒检查1次
weight-5 #当检查失败后,将vrrp_instance的priority减小5
fall3 #连续监测失败3次,才认为真的健康检查失败。并调整优先级
rise2 #连续监测2次成功,就认为成功。但不调整优先级
}
vrrp_instance VI_1{ #定义对外提供服务的VIPvrrp_instance配置
stateMASTER #指定vrrp_instance的初始状态,是MASTER还是BackUP主要还是看优先级。
interfaceens33 #指定vrrp_instance绑定的网卡,最终会通过指定的网卡宣告VIP
mcast_src_ip192.168.28.134 #发送心跳包的源IP,可使用绑定的网卡IP,也可以使用本服务器上的其他IP
virtual_router_id51 #相当于VRID,用于在一个网内区分组播,需要组播域内内唯一。
priority100 #本机的优先级,VRID相同的机器中,优先级最高的会被选举为MASTER
advert_int1 #心跳间隔,下面配置,MASTER会每隔1秒发送一个报文高职组内其他机器,自己还活着。
authentication{ #定义主从的验证方式以及密码,一般使用PASS(最长8位,超过了只会识别前8位作为密码)
auth_type PASS
auth_pass 123456
}
#VIP
virtual_ipaddress {
192.168.28.88
}
track_script{ #本vrrp_instance所引用的脚本配置,名称就是vrrp_script定义的容器名
chk_nginx
}
smtp_alert #状态切换,使用上述配置发送邮件通知
}
• 备BACKUP 服务器keepalived.conf配置
state MASTER 改为 state BACKUP
mcast_src_ip192.168.28.134 改为backup服务器实际的IP mcast_src_ip 192.168.28.135
priority 100 改为priority90
•添加Nginx监控脚本,监控Nginx的运行状态,如果发现异常并不能重启成功则关闭Keepalived,让VIP漂移到备份服务器.
# vi/etc/keepalived/chk_nginx.sh
#!/bin/bash
#检查nginx进程是否存在
counter=$(ps -C nginx--no-heading|wc -l)
if ["${counter}" = "0" ]; then
#尝试启动一次nginx,停止5秒后再次检测
service nginx start
sleep 5
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0"]; then
#如果启动没成功,就杀掉keepalive触发主备切换
service keepalived stop
fi
fi
# chmod +x/etc/keepalived/chk_nginx.sh
五、Nginx + keepalived 双主架构
• Nginx+keepalived 双主配置
使用两个vip地址,前端使用2台机器,互为主备,同时有两台机器工作,当其中一台机器出现故障,两台机器的请求转移到一台机器负担,非常适合于当前架构环境。
Server1:192.168.28.134
Server2:192.168.28.135
VIP1:192.168.28.88
VIP2:192.168.28.99
• Server1 上keepalived.conf 配置文件内容:
! Configuration Filefor keepalived
# 全局配置,配置收件人
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
#集群资源监控,组合track_script进行
vrrp_script check_nginx{
script"/etc/keepalived/nginx_check.sh" #检测 nginx 状态的脚本路径
interval 2 #检测时间间隔
weight -20 #条件成立 权重减20
}
#VIP1
vrrp_instance VIP_1 {
#设置当前主机为主节点,如果是备用节点,则设置为BACKUP
state MASTER
#指定HA监测网络接口,可以用ifconfig查看来决定设置哪一个
interface ens33
#虚拟路由标识,同一个VRRP实例要使用同一个标识,主备机
virtual_router_id 80
#因为当前环境中VRRP组播有问题,改为使用单播发送VRRP报文 如果VRRP组播没问题,以下这块的内容可以注释掉。
#这个地方需要关注,之前未做此设置,结果主备节点互相不能发现,因此主备节点都升级成了MASTER,并且绑定了VIP
# 主节点时,内容为:
#unicast_src_ip192.168.28.134
# unicast_peer {
# 192.168.28.135
#}
# 设置优先级,确保主节点的优先级高过备用节点
priority 100
# 用于设定主备节点间同步检查时间间隔
advert_int 2
#设置高可用集群中不抢占功能,在主机down后,从机接管,当主机重新恢复后,设置此功能,备机将继续提供服务,从而避免因切换导致的隐患
# nopreempt
#设置主备节点间的通信验证类型及密码,同一个VRRP实例中需一致
authentication {
auth_type PASS
auth_pass 1234
}
#集群资源监控,组合vrrp_script进行
track_script {
check_nginx
}
#设置虚拟IP地址,当keepalived状态切换为MASTER时,此IP会自动添加到系统中
#当状态切换到BACKUP时,此IP会自动从系统中删除
# 可以通过命令ip add查看切换后的状态
virtual_ipaddress {
192.168.28.88 #虚拟ip配置完之后就用它访问
}
}
#VIP2
vrrp_instance VIP_2 {
#设置当前主机为备节点,如果是主用节点,则设置为MASTER
state BACKUP
#指定HA监测网络接口,可以用ifconfig查看来决定设置哪一个
interface ens33
#虚拟路由标识,同一个VRRP实例要使用同一个标识,主备机
virtual_router_id 81
#因为当前环境中VRRP组播有问题,改为使用单播发送VRRP报文 如果VRRP组播没问题,以下这块的内容可以注释掉。
#这个地方需要关注,之前未做此设置,结果主备节点互相不能发现,因此主备节点都升级成了MASTER,并且绑定了VIP
# 主节点时,内容为:
#unicast_src_ip192.168.28.134
# unicast_peer {
# 192.168.28.135
#}
# 设置优先级,确保主节点的优先级高过备用节点
priority 90
# 用于设定主备节点间同步检查时间间隔
advert_int 2
#设置高可用集群中不抢占功能,在主机down后,从机接管,当主机重新恢复后,设置此功能,备机将继续提供服务,从而避免因切换导致的隐患
# nopreempt
#设置主备节点间的通信验证类型及密码,同一个VRRP实例中需一致
authentication {
auth_type PASS
auth_pass 1234
}
#集群资源监控,组合vrrp_script进行
track_script {
check_nginx
}
#设置虚拟IP地址,当keepalived状态切换为MASTER时,此IP会自动添加到系统中
#当状态切换到BACKUP时,此IP会自动从系统中删除
# 可以通过命令ip add查看切换后的状态
virtual_ipaddress {
192.168.28.99 #虚拟ip配置完之后就用它访问
}
}
• 注意:
如果配置双主模式,一定要将nopreempt这个属性注释掉,搭建主备的时候需要他,搭建双主模式的时候,如果开启它,会将两个虚拟ip绑定到同一个服务器上。
• Server2 上keepalived.conf 配置文件内容:
! Configuration Filefor keepalived
# 全局配置,配置收件人
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
#集群资源监控,组合track_script进行
vrrp_script check_nginx{
script"/etc/keepalived/nginx_check.sh" #检测 nginx 状态的脚本路径
interval 2 #检测时间间隔
weight -20 #条件成立 权重减20
}
#VIP1
vrrp_instance VIP_1 {
#设置当前主机为主节点,如果是备用节点,则设置为BACKUP
state BACKUP
#指定HA监测网络接口,可以用ifconfig查看来决定设置哪一个
interface ens33
#虚拟路由标识,同一个VRRP实例要使用同一个标识,主备机
virtual_router_id 80
#因为当前环境中VRRP组播有问题,改为使用单播发送VRRP报文 如果VRRP组播没问题,以下这块的内容可以注释掉。
#这个地方需要关注,之前未做此设置,结果主备节点互相不能发现,因此主备节点都升级成了MASTER,并且绑定了VIP
# 主节点时,内容为:
#unicast_src_ip192.168.28.135
# unicast_peer {
# 192.168.28.134
#}
# 设置优先级,确保主节点的优先级高过备用节点
priority 90
# 用于设定主备节点间同步检查时间间隔
advert_int 2
#设置高可用集群中不抢占功能,在主机down后,从机接管,当主机重新恢复后,设置此功能,备机将继续提供服务,从而避免因切换导致的隐患
# nopreempt
#设置主备节点间的通信验证类型及密码,同一个VRRP实例中需一致
authentication {
auth_type PASS
auth_pass 1234
}
#集群资源监控,组合vrrp_script进行
track_script {
check_nginx
}
#设置虚拟IP地址,当keepalived状态切换为MASTER时,此IP会自动添加到系统中
#当状态切换到BACKUP时,此IP会自动从系统中删除
# 可以通过命令ip add查看切换后的状态
virtual_ipaddress {
192.168.28.88 #虚拟ip配置完之后就用它访问
}
}
#VIP2
vrrp_instance VIP_2 {
#设置当前主机为备节点,如果是主用节点,则设置为MASTER
state MASTER
#指定HA监测网络接口,可以用ifconfig查看来决定设置哪一个
interface ens33
#虚拟路由标识,同一个VRRP实例要使用同一个标识,主备机
virtual_router_id 81
#因为当前环境中VRRP组播有问题,改为使用单播发送VRRP报文 如果VRRP组播没问题,以下这块的内容可以注释掉。
#这个地方需要关注,之前未做此设置,结果主备节点互相不能发现,因此主备节点都升级成了MASTER,并且绑定了VIP
# 主节点时,内容为:
#unicast_src_ip192.168.28.135
# unicast_peer {
# 192.168.28.134
#}
# 设置优先级,确保主节点的优先级高过备用节点
priority 100
# 用于设定主备节点间同步检查时间间隔
advert_int 2
#设置高可用集群中不抢占功能,在主机down后,从机接管,当主机重新恢复后,设置此功能,备机将继续提供服务,从而避免因切换导致的隐患
# nopreempt
#设置主备节点间的通信验证类型及密码,同一个VRRP实例中需一致
authentication {
auth_type PASS
auth_pass 1234
}
#集群资源监控,组合vrrp_script进行
track_script {
check_nginx
}
#设置虚拟IP地址,当keepalived状态切换为MASTER时,此IP会自动添加到系统中
#当状态切换到BACKUP时,此IP会自动从系统中删除
# 可以通过命令ip add查看切换后的状态
virtual_ipaddress {
192.168.28.99 #虚拟ip配置完之后就用它访问
}
}
• 编写nginx检测脚本
# vim/etc/keepalived/nginx_check.sh
#!/bin/bash
A=`ps -C nginx–no-header |wc -l`
if [ $A -eq 0 ];then
systemctl restart nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0];then
systemctl stop keepalived
fi
fi
# chmod +x/etc/keepalived/nginx_check.sh
• Nginx + keepalived 双主架构,在日常维护及管理过程中需要:
keepalived主配置文件必须设置不同的VRRP名称,同时优先级和VIP设置也各不相同。
Nginx 网站总访问量为两台Nginx服务器访问之和,可以写脚本自动统计访问量。
两台Nginx 为master,存在两个VIP地址,用户从外网访问VIP,需配置域名映射到两个VIP上方即可。
通过外网DNS映射不同VIP的方法也称为DNS负载均衡模式。
可以通过Zabbix实时监控VIP访问状态是否正常。
六、Redis+KeepAlived 高可用集群
Redis是我们当下比较流行使用的非关系数据库,可支持多样化的数据类型,多线程高并发支持,redis运行在内存拥有更快的读写。
1、Redis特点
• 完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
• 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
• 不仅仅支持简单的key-value类型的数据,同时还提供如:字符串(String),哈希(Map), 列表(list), 集合(sets) 和有序集合(sorted sets)等数据结构的存储。
• 支持数据的备份,即master-slave模式的数据备份。
2、Redis 优势
• 性能极高 – Redis能读的速度是100K+次/s,写的速度是80K+次/s 。
• 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists,Hashes, Sets 及 Ordered Sets 数据类型操作。
• 原子 –Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
• 丰富的特性 – Redis还支持 publish/subscribe, 通知, key过期等等特性。
3、准备环境
Centos7 -->192.168.28.134 -->主Redis -->主Keepalived
Centos7 -->192.168.28.135 -->从Redis -->备Keepalived
VIP -->192.168.28.88
4、Redis主从配置
• Master-134 配置
# vim /etc/redis.conf
bind 0.0.0.0
port 6379
daemonize yes
requirepass 123456
slave-serve-stale-data yes
slave-read-only no
• Slave-135 配置
# vim/etc/redis/redis.conf
bind 0.0.0.0
port 6379
daemonize yes
slaveof 172.16.81.140 6379
masterauth 123456
slave-serve-stale-data yes
slave-read-only no
5、配置完成后重启redis服务!验证主从是否正常
# redis-cli -a 123456
127.0.0.1:6379> info
查看# Replication 主从信息
# redis-cli -a 123456
127.0.0.1:6379> keys*
查看数据主从是否同步
6、KeepAlived配置实现双机热备
使用Keepalived实现VIP,并且通过notify_master、notify_backup、notify_fault、notify_stop来实现容灾。
• 主Keepalived配置
vim/etc/keepalived/keepalived.conf
! Configuration Filefor keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script redis_check{
script"/etc/keepalived/redis_check.sh"
interval 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.28.88
}
track_script {
redis_check
}
}
• 备Keepalived配置
state BACKUP
priority 90
7、配置脚本/etc/keepalived/redis_check.sh
# vim/etc/keepalived/redis_check.sh
#!/bin/bash
# auto check redisprocess
NUM=`ps -ef |grepredis|grep -v grep|grep -v check|wc -l`
if [[ $NUM -eq 0]];then
systemctlstop keepalived
。。。。。。。。。。。。。。。。。。。。。。。。。。等等等