以下是网站 itdhz.com 在 2014-12 的历史页面存档,小提示:CTRL+U 查看源码
本站和 itdhz.com 的作者无关,不对其内容负责。本历史页面谨为网络历史索引,不代表被查询网站的即时页面。 *号[x]表示已屏蔽显示的敏感字。
原网页标题:寒枫欣叶

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

评论(8) 浏览(13362)

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

评论(1) 浏览(8179)

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

评论(2) 浏览(4093)

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

评论(0) 浏览(4731)

LVS+Keepalived之DR模型

作者:小程 发布于:2013-9-24 17:35 分类:负载均衡

   LVS负载均衡中的DR模型是现实生产环境中应用最广泛的一种模型,只要能理解DR模型的原理,实际操作起来是非常简单的。另外LVS是基于四层负载均衡,nginx负载基于七层负载,在应用方向上会有一些区别。
  好了,不多说,下面是LVS负载均衡DR模型中Director主机和RealServer机器上配置脚本,不详细解释每一项说明,相信大家都能看懂,另外,因为是实验环境,所以只有一台Director和2台RealServer,如果是生产环境,肯定要考虑Director冗余的问题。

阅读全文>>

标签: lvs dr

评论(0) 浏览(6153)

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

阅读全文>>

标签: nginx tcp

评论(1) 浏览(10172)

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接管。

2013-07-30


  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

评论(1) 浏览(11809)

LVS十种调度算法介绍

作者:小程 发布于:2013-7-30 11:00 分类:负载均衡

1.轮叫调度(Round Robin)(简称rr)
  调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
2.加权轮叫(Weighted Round Robin)(简称wrr)
  调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
3.最少链接(Least Connections)(LC)
  调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。

阅读全文>>

标签: lvs

评论(0) 浏览(6310)

运维的85条规则

作者:小程 发布于:2013-6-18 16:50 分类:杂七杂八

  2007 年,时任虚拟世界游戏公司 Vivaty 运维副总裁的 Jon Prall 在他的个人博客上发表过一篇《运维的85条规则》。2010 年他跳槽到视频电话公司 Tango 之初,做了两处更新,兹翻译如下:
  1.容量第一,优化第二——这条规则在故障发生时生效。在宕机的时候别研究什么优化,先恢复设备。

  2.保留所有可以捕获的记录——以 PostgresQL 为例,包括有 WAL 文件,Slony 复制,快照技术,基于硬盘的 DB 版本(快照附带的)

  3.不要因为优化引入更多问题。通常我们解决问题时做出来的东西都会转变成之后运维工作的负担。请确认为运维工作开发的那些工具已经完全交付使用。这些东西经常无法正常运行结果要返回开发组重来。更重要的,这种变更请求通常会打破团队原本安排好的工作计划。

  4.保持简单,不要让事情变得太复杂,聪明的你一定可以做到的。

  5.谨慎使用缓存以保护那些难以水平扩展的资源。当然,如果你可以水平扩展它,那么给他加缓存层就不用考虑太多。一旦用上了缓存层,它的目的应该是提高最终用户的访问性能,而不是增加网站的容量。否则,你不过是给自己加上了一个新的非常不可靠的瓶颈。他们潜在的负面影响可能危及整个系统。事实上缓存层失效带来的,经常是雪崩式的级联故障。

  6.不要什么都自己写代码实现,也不要什么都从厂家买——要在适当的时候采用适当的工具。

  7.谈判——和真正有实力的厂家谈判的唯一办法就是提前做好功课,准备好一切可行项。这样一旦有必要,你可以从你的首选厂家里选择离开。不用搞虚张声势那套了。

 

阅读全文>>

评论(2) 浏览(13964)

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

评论(0) 浏览(8396)

Powered by emlog