keepalived故障分析
作者: 发布于:2014-3-19 21:53 分类:负载均衡
前段时间,发生一起非常奇怪的事,LVS+Keepalived 架构下,业务突然中断,登陆主备两台Keepalived发现运行正常,检查Keepalived日志发现,业务中断时主Keepalived未发生变化,备Keepalived发生过切换。
主Keepalived:192.168.1.10
备Keepalived:192.168.1.11
VIP:192.168.1.3
从检查的日志分析来看,事情的经过应该是这样子的:正常情况下,交换机一直将业务请求数据发往主Keepalived(192.168.1.10)机器 上的VIP(192.168.1.3)网卡。某个时间点,Keepalived的主备心跳线中断了一下,造成主 Keepalived(192.168.1.10)和备Keepalived(192.168.1.11)脑裂现象,两者之间相互检查不到,这时主 Keepalived(192.168.1.10)发现备Keepalived(192.168.1.11)宕机后没有发生变化,继续提供 VIP(192.168.1.3)服务;备Keepalived机发现主Keepalived宕机,由BACKUP切换为MASTER,也虚拟出 VIP(192.168.1.3)向外提供服务,但由BACKUP切换为MASTER时会向外发送一个广播,此时交换机收到实际为备 Keepalived(192.168.1.11)机器发来的广播包后更新自己的ARP表,将业务请求数据发住实际为备的 Keepalived(192.168.1.11)的VIP网卡,此时业务一切正常。但是接下来心跳线之间的检测又恢复正常了,这时备 Keepalived发现主Keepalived可以检测后,根据优先级关系,状态自动为MASTER切换回原来配置的BACKU标签: keepalived
Linux下用dnsmasq做dns cache server
作者:小程 发布于:2013-11-12 21:46 分类:杂七杂八
最近国外的服务器本地DNS总是出故障,闪断一会儿都会影响业务。于是在机房里找了两台Server,安装上keepalived和dnsmasq实际本地的DNS缓存。
安装过程比较简单
yum -y install dnsmasq* wget http://www.keepalived.org/software/keepalived-1.2.9.tar.gz tar zxvf keepalived-1.2.9.tar.gz cd keepalived-1.2.9 ./configure --prefix=/usr/local/keepalived
标签: dnsmasq
linux清理swap和buffer/cache
作者:小程 发布于:2013-11-12 21:35 分类:操作系统
swap清理:
swapoff -a && swapon -a
cache清理:
sync; sync; sync; && echo3 >/proc/sys/vm/drop_caches sleep 2 echo 0>/proc/sys/vm/drop_caches
标签: swap
Linux下配置rdate时间服务器
作者:小程 发布于:2013-10-8 11:31 分类:操作系统
配置多台服务器时,经常需要让各个服务器之间的时间保持同步,如果服务器有外网环境,可以直接同外部的时间服务器更新时间,可以采用rdate命令更新时间:rdate -s tick.greyware.com
可以写个脚本放在/etc/cron.hourly中每小时校正一下时间。
如果是内网环境下,可以自己配置一个时间服务器,以CentOS为例,配置时间服务器的方法如下:
1.先安装xinetd
yum install -y xinetd rdate
2.修改/etc/xinetd.d/time-stream, 修改:
disable = yes 改为 disable = no
标签: rdate
LVS+Keepalived之DR模型
作者:小程 发布于:2013-9-24 17:35 分类:负载均衡
LVS负载均衡中的DR模型是现实生产环境中应用最广泛的一种模型,只要能理解DR模型的原理,实际操作起来是非常简单的。另外LVS是基于四层负载均衡,nginx负载基于七层负载,在应用方向上会有一些区别。好了,不多说,下面是LVS负载均衡DR模型中Director主机和RealServer机器上配置脚本,不详细解释每一项说明,相信大家都能看懂,另外,因为是实验环境,所以只有一台Director和2台RealServer,如果是生产环境,肯定要考虑Director冗余的问题。
nginx基于tcp做负载均衡
作者:小程 发布于:2013-9-24 17:30 分类:网站应用
nginx基于tcp反向代理
1.安装环境
系统环境:centos6.3_x64
软件版本:nginx-1.4.2.tar.gz nginx_tcp_proxy_module-master.zip
2.软件安装
cd /root/ wget http://nchc.dl.sourceforge.net/project/pcre/pcre/8.12/pcre-8.12.tar.gz tar zxvf pcre-8.12.tar.gz cd pcre-8.12/ ./configure make && make install
LVS三种模式DR、NAT、TUN介绍
作者:小程 发布于:2013-7-30 14:19 分类:负载均衡
Linux Virtual Server (LVS)是一套完整的基于IP的负载均衡的集群软件。LVS运行在一对有相似配置的计算机上:一个作为活动LVS Router(Active LVS Router),一个作为备份LVS Router(Backup LVS Router)。活动LVS Router服务有两个角色:
* 均衡负载到真实服务器上。
* 检查真实服务器提供的服务是否正常。
备份LVS Router用来监控活动的LVS Router,以备活动的LVS Router失败时由备份LVS Router接管。
Pulse进程运行在活动LVS Router和备份LVS Router上。在备份LVS Router上,pulse发送一个心跳(heartbeat)到活动LVS Router的公网接口上以检查活动LVS Router是否正常。在活动LVS Router上,pulse启动lvs进程并响应来自于备份LVS Router的心跳。
lvs进程调用ipvsadm工具去配置和维护IPVS路由表,并为每一个在真实服务器上的虚拟服务启动一个nanny进程。每一个nanny进程去检查真实服务器上的虚拟服务状态,并将故障情况通知lvs进程。假如一个故障被发现,lvs进程通知ipvsadm在IPVS路由表中将此节点删除。
如果备份LVS Router未收到来自于活动LVS Router的响应,它将调用send_arp将虚拟IP地址再分配到备份LVS Router的公网接口上。并在公网接口和局域网接口上分别发送一个命令去关掉活动LVS Router上的lvs进程。同时启动自己的lvs进程来调度客户端请求。
标签: lvs
LVS十种调度算法介绍
作者:小程 发布于:2013-7-30 11:00 分类:负载均衡
1.轮叫调度(Round Robin)(简称rr)调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
2.加权轮叫(Weighted Round Robin)(简称wrr)
调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
3.最少链接(Least Connections)(LC)
调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。
标签: lvs
运维的85条规则
作者:小程 发布于:2013-6-18 16:50 分类:杂七杂八
2007 年,时任虚拟世界游戏公司 Vivaty 运维副总裁的 Jon Prall 在他的个人博客上发表过一篇《运维的85条规则》。2010 年他跳槽到视频电话公司 Tango 之初,做了两处更新,兹翻译如下:
1.容量第一,优化第二——这条规则在故障发生时生效。在宕机的时候别研究什么优化,先恢复设备。
2.保留所有可以捕获的记录——以 PostgresQL 为例,包括有 WAL 文件,Slony 复制,快照技术,基于硬盘的 DB 版本(快照附带的)
3.不要因为优化引入更多问题。通常我们解决问题时做出来的东西都会转变成之后运维工作的负担。请确认为运维工作开发的那些工具已经完全交付使用。这些东西经常无法正常运行结果要返回开发组重来。更重要的,这种变更请求通常会打破团队原本安排好的工作计划。
4.保持简单,不要让事情变得太复杂,聪明的你一定可以做到的。
5.谨慎使用缓存以保护那些难以水平扩展的资源。当然,如果你可以水平扩展它,那么给他加缓存层就不用考虑太多。一旦用上了缓存层,它的目的应该是提高最终用户的访问性能,而不是增加网站的容量。否则,你不过是给自己加上了一个新的非常不可靠的瓶颈。他们潜在的负面影响可能危及整个系统。事实上缓存层失效带来的,经常是雪崩式的级联故障。
6.不要什么都自己写代码实现,也不要什么都从厂家买——要在适当的时候采用适当的工具。
7.谈判——和真正有实力的厂家谈判的唯一办法就是提前做好功课,准备好一切可行项。这样一旦有必要,你可以从你的首选厂家里选择离开。不用搞虚张声势那套了。
find中的-print0和xargs中-0的奥妙
作者:小程 发布于:2013-6-18 16:36 分类:操作系统
默认情况下, find 每输出一个文件名, 后面都会接着输出一个换行符 ('n'), 因此我们看到的 find 的输出都是一行一行的:
[bash-4.1.5] ls -l total 0 -rw-r--r-- 1 root root 0 2010-08-02 18:09 file1.log -rw-r--r-- 1 root root 0 2010-08-02 18:09 file2.log [bash-4.1.5] find -name '*.log' ./file2.log ./file1.log比如我想把所有的 .log 文件删掉, 可以这样配合 xargs 一起用:
[bash-4.1.5] find -name '*.log' ./file2.log ./file1.log [bash-4.1.5] find -name '*.log' | xargs rm [bash-4.1.5] find -name '*.log'嗯, 不错, find+xargs 真的很强大. 然而:
[bash-4.1.5] ls -l total 0 -rw-r--r-- 1 root root 0 2010-08-02 18:12 file 1.log -rw-r--r-- 1 root root 0 2010-08-02 18:12 file 2.log [bash-4.1.5] find -name '*.log' ./file 1.log ./file 2.log [bash-4.1.5] find -name '*.log' | xargs rm rm: cannot remove `./file': No such file or directory rm: cannot remove `1.log': No such file or directory rm: cannot remove `./file': No such file or directory rm: cannot remove `2.log': No such file or directory原因其实很简单, xargs 默认是以空白字符 (空格, TAB, 换行符) 来分割记录的, 因此文件名 ./file 1.log 被解释成了两个记录 ./file 和 1.log, 不幸的是 rm 找不到这两个文件.
标签: find
文章分类
随机日志
友情链接
最新评论
- loren
这个下载已经无效了,请问能够再次提供下载... - 怎样网
了解下,虽然有些不太看懂~~ - 成都定制衣柜
原来找个补丁就搞定哦 - 韩丽都
分析的非常头侧啊 - 艾莱依
后来才得出分析结果。好啊 很好的 - 古诺尔
文章写的挺好的 不错,文采也很好 - 减肥方法
谢谢分享 - 减肥方法
我也了解了