关键词:
负载均衡keepalived+lvs
负载nginx
应用tomcat
nginx负载通过公网,每一台nginx都负载了多聊链路到后端应用,突然部分客户无法访问业务,负载均衡没有问题,部分nginx服务器到后端应用超时,nginx日志中报出错误;但是keepalived配置为
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 8080
bindto <ip>
}
检测是nginx服务是否异常,并未考虑到nginx到应用可能出现无法连接情况,所以导致keepalived没有将故障nginx踢出集群;立即手动将故障机nginx停掉,使keepalived将故障nginx踢出集群。后期修改keepalived配置文件将TCP_CHECK修改为
HTTP_GET {
url{
path /
status_code 200
}
通过url返回值,判断该链路是否正常,如果出现异常,keepalived自动将故障机踢出集群。
1、keepalived原理
keepalived可提供vrrp以及health-check功能,可以只用它提供双机浮动的vip(vrrp虚拟路由功能),这样可以简单实现一个双机热备高可用功能。
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web 服务器的状态。 Layer3,4&5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:
Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器
发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。在本文中将采用这种方式。
Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。
Layer5:Layer5就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。
vip即虚拟ip,是附在主机网卡上的,即对主机网卡进行虚拟,此IP仍然是占用了此网段的某个IP。
2、配置文件
global_defs {
notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一个
[email protected]
}
notification_email_from [email protected] #指定发件人
smtp_server localhost #指定smtp服务器地址
smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived机器的一个标识
}
vrrp_sync_group VG_1{ #监控多个网段的实例
group {
inside_network #实例名
outside_network
}
notify_master /path/xx.sh #指定当切换到master时,执行的脚本
netify_backup /path/xx.sh #指定当切换到backup时,执行的脚本
notify_fault "path/xx.sh VG_1" #故障时执行的脚本
notify /path/xx.sh
smtp_alert #使用global_defs中提供的邮件地址和smtp服务器发送邮件通知
}
vrrp_instance inside_network {
state BACKUP #指定那个为master,那个为backup,如果设置了nopreempt这个值不起作用,主备考priority决
定
interface eth0 #设置实例绑定的网卡
dont_track_primary #忽略vrrp的interface错误(默认不设置)
track_interface{ #设置额外的监控,里面那个网卡出现问题都会切换
eth0
eth1
}
mcast_src_ip #发送多播包的地址,如果不设置默认使用绑定网卡的primary ip
garp_master_delay #在切换到master状态后,延迟进行gratuitous ARP请求
virtual_router_id 50 #VPID标记
priority 99 #优先级,高优先级竞选为master
advert_int 1 #检查间隔,默认1秒
nopreempt #设置为不抢占 注:这个配置只能设置在backup主机上,而且这个主机优先级要比另外一台高
preempt_delay #抢占延时,默认5分钟
debug #debug级别
authentication { #设置认证
auth_type PASS #认证方式
auth_pass 111111 #认证密码
}
virtual_ipaddress { #设置vip
192.168.202.200
}
}
virtual_server 192.168.202.200 23 {
delay_loop 6 #健康检查时间间隔
lb_algo rr #lvs调度算法rr|wrr|lc|wlc|lblc|sh|dh
lb_kind DR #负载均衡转发规则NAT|DR|RUN
persistence_timeout 5 #会话保持时间
protocol TCP #使用的协议
persistence_granularity <NETMASK> #lvs会话保持粒度
virtualhost <string> #检查的web服务器的虚拟主机(host:头)
sorry_server<IPADDR> <port> #备用机,所有realserver失效后启用
real_server 192.168.200.5 23 {
weight 1 #默认为1,0为失效
inhibit_on_failure #在服务器健康检查失效时,将其设为0,而不是直接从ipvs中删除
notify_up <string> | <quoted-string> #在检测到server up后执行脚本
notify_down <string> | <quoted-string> #在检测到server down后执行脚本
TCP_CHECK {
connect_timeout 3 #连接超时时间
nb_get_retry 3 #重连次数
delay_before_retry 3 #重连间隔时间
connect_port 23 健康检查的端口的端口
bindto <ip>
}
HTTP_GET | SSL_GET{
url{ #检查url,可以指定多个
path /
digest <string> #检查后的摘要信息
status_code 200 #检查的返回状态码
}
connect_port <port>
bindto <IPADD>
connect_timeout 5
nb_get_retry 3
delay_before_retry 2
}
SMTP_CHECK{
host{
connect_ip <IP ADDRESS>
connect_port <port> #默认检查25端口
bindto <IP ADDRESS>
}
connect_timeout 5
retry 3
delay_before_retry 2
helo_name <string> | <quoted-string> #smtp helo请求命令参数,可选
}
MISC_CHECK{
misc_path <string> | <quoted-string> #外部脚本路径
misc_timeout #脚本执行超时时间
misc_dynamic #如设置该项,则退出状态码会用来动态调整服务器的权重,返回0 正常,不修改;返回1,
检查失败,权重改为0;返回2-255,正常,权重设置为:返回状态码-2
}
}
本文出自 “运维基础” 博客,请务必保留此出处http://phospherus.blog.51cto.com/7824598/1861662
一次arp防护配置错误导致的故障
故障描述,客户那里能够获得ip地址和dns等信息,但上不了网。三层核心是思科6509,二层设备是华三5130。处理过程,由于dhcp信息能够获得证明二层是通的,cisco6509上分配ip等信息,查看相关vlan和网关信息,查看其他三层设备能... 查看详情
keepalived工作原理与配置文件讲解(代码片段)
1、简介Keepalived:高可用或热备软件,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构不可用)的发生,keepalived就是VRRP协议的实现。2、原理keepalived采用是模块化设计,不同模块实现不同的功能,keepali... 查看详情
keepalived脑裂现象
参考技术AKeepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将... 查看详情
keepalived配置
1、什么是keepalived?keepalived是集群管理中保证集群高可用的一个服务软件,用来检测服务器的状态以及loadbbalance主机和backup主机之间的failover(故障切换)防止单点故障。在集群当中如果有一台服务器宕机或工作出现故障,keepalived... 查看详情
一次服务器非法重启后导致的故障排查记录(代码片段)
大家好,我是杰哥。前段时间遇到一个服务器问题:非法重启设备后,服务器进入救援模式,数据盘也不显示挂载是否成功。说来这个问题,我觉得还挺奇葩。今天就来跟大家分享下整个过程以及我的处理方法。避免大家在今后... 查看详情
keepalived双机热备实现故障时发送邮件通知
...241backup:192.168.1.242漂移IP:192.168.1.2431。主备调度器都安装keepalived软件安装步骤例如以下:./configure--p 查看详情
一次keepalived高可用的事故,让我重学了一遍它!
...MySQL故障的事故,这次我又遇到了另外一个奇葩的问题:Keepalived高可用组件的虚拟IP持续漂移,导致MySQL主从不断切换,进而导致MySQL主从数据同步失败。虽然没能重现Keepalived的这个问题,但是我深入研究了下Keepalived的原理以及... 查看详情
手动命令以故障回复 keepalived 集群
】手动命令以故障回复keepalived集群【英文标题】:Manualcommandtofailbackakeepalivedcluster【发布时间】:2017-06-2114:35:38【问题描述】:我正在使用nopreempt选项运行具有两个节点的测试keepalived集群。这使我可以防止在崩溃后自动故障回... 查看详情
keepalived常见故障
...200 10.0.0.201这个登录一下,帮我测试一下nginx那个keepalived的功能正常不系统是centos7keepalived和 nginx都可以重启测试:1、pkillnignx后,故障切换一切正常,恢复nginx后也可以抢占回VIP2、在修改nginx配置文件后,在pkilln... 查看详情
运维随笔记录一次rabbitmq启动故障排查
由于故障排查已经过了一段时间再写的这个随便,故这次无相关截图某天,运行正常的rabbitmq挂掉了,然后去重启的时候报错,启动不了,通过查看systemctlstatusrabbitmq-l和journalctl-urabbitmq查看错误信息,发现也没有什么有价值的信... 查看详情
keepalived组播故障排查
虚拟机无法接收keepalived的vrrp组播现象: 在Ubuntu1404的系统下安装了三台虚拟机,然后配置了一个简单的keepalived+haproxy服务。结果启动后发现三台虚拟机都配上vip,keepalived.log日志中也未看见error的报错信息。排... 查看详情
keepalived+lvs
一、Keepalived1.1介绍keepalived观察其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,它集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障(单点故障是指一旦某一点... 查看详情
keepalived:vrrp实例故障转移(keepalived+haproxy)(代码片段)
keepalived使用脚本进行健康检查时的相关配置项。例如keepalived+haproxy实现haproxy的高可用。keepalived分为vrrp实例的心跳检查和后端服务的健康检查。如果要配置后端服务,则后端服务只能是LVS。但vrrp能独立与lvs存在,例如keepalive结... 查看详情
小谈keepalivedvip漂移原理与vrrp协议
参考技术Ahttps://www.cnblogs.com/lixuwu/p/8476997.html什么是keepalived呢?keepalived是实现高可用的一种轻量级的技术手段,主要用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生。之所以说keepalived... 查看详情
keepalived介绍及工作原理
keepalived介绍keepalived观察其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,它集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障(单点故障是指一旦某一点出现故... 查看详情
记一次hbaseregionserver经常挂掉故障排查过程
参考技术A原始采集数据采用HBase进行存储。实时采集数据流量很大,在入库的时候,有时候会发生阻塞。 测试环境正常,生产环境下,时不时出现HRegionServer挂掉的情况,而HMaster正常。重启Hbase之后,短时间内恢复正常,然... 查看详情
架构设计:线上服务故障应急机制讨论
最近由于疏忽误操作导致一次大故障,在此结合网上和实践经验,总结一下线上服务故障应急机制,警惕自己时刻注意服务稳定性问题。前言海恩法则 ·事故的发生是量的积累的结果。 ·再好的技术、再完美... 查看详情
架构设计:线上服务故障应急机制讨论
最近由于疏忽误操作导致一次大故障,在此结合网上和实践经验,总结一下线上服务故障应急机制,警惕自己时刻注意服务稳定性问题。前言海恩法则 ·事故的发生是量的积累的结果。 ·再好的技术、再完美... 查看详情