3.6 动态站点的运行维护

 

网站部署上线以后,并没有一劳永逸万事大吉,让网站正常运行,并进行常规性的维护,才是工作的重点。网站的运行维护,归纳起来大致包括:状态查看及监控、故障处理、系统容量扩展、数据备份/恢复/站点迁移等几部分。

3.6.1状态查看、监控

状态查看一般间隙性地手工进行,而监控则是经常性的由监控工具来进行,当监控系统告警时,也需要先登录系统,以手工的方式了解系统的运行状态,从而排除故障所在。

状态查看和监控的主要目的是了解系统当前的运行状态,做为称职的系统管理员,做到心中有底,才可能随机应变,从容而快速地处理各种故障或问题。 (全文 …)

Tagged with:
 

简单cdn之八

On 2010年04月5日, in 云计算, by admin
2

7.8.1 部署cdn的重点和难点

整个cdn最重要的部分就是全局智能dns服务,这是cdn不可替代的组件。在没有出现视图view功能之前(或者当某些系统管理员不知道有这样的功能),甚至有人以dns轮询方式调度用户对缓存服务器的访问,这种形式会让用户的体验时好时坏。

7.8.2 取得和归类中国大陆ip地址列表

 

在本章“7.3.3”节,我们用了一个脚本get_ip.sh来取得和归类ip地址,而未说明是怎样一回事情。那么,在本章的结尾我把它补充一下。

我们知道,亚太地区的ip地址由APNIC(http://www.apnic.net)分配,通过访问APNIC官方站点的url: http://www.apnic.net/publications/research-and-insights/stats ,可以知道在何处得到ip地址分配的有用信息(如图7-8所示)。

图7-8 通过ftp方式可以取得原始数据

点击图7-8加下划线的那个链接,就进入ftp站点 ftp://ftp.apnic.net/,再点几次鼠标,最后定位在ftp://ftp.apnic.net/apnic/stats/apnic/README.TXT,这个文件帮助我们了解该下载哪个文件以及文件的格式。让我们按照这个README.TXT的提示,在浏览器里打开页面文件ftp://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest ,除去注释行,我们将看见形如“apnic|JP|asn|173|1|20020801|allocated”的文本行。把这个文件下载下来,过滤一下,变可以把分配给中国大陆(第2个字段为“CN”)单独提取出来。在前面的get_ip脚本,用wget下载这个delegated-apnic-latest文件,然后再用grep 把CN提取出来形成一个单独的文件。具体的操作就是一下两步:

(1)                             wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O /root/ipnic/ip_apnic

(2)                             grep ‘apnic|CN|ipv4|’ /root/ipnic/ip_apnic | cut -f 4,5 -d’|'|sed -e ‘s/|/ /g’ | while read ip cnt
do
echo $ip:$cnt
    mask=$(cat << EOF | bc | tail -1
pow=32;
define log2(x) {
if (x<=1) return (pow);
pow–;
return(log2(x/2));
}
log2($cnt)
EOF)
echo $ip/$mask>> cn.net

done

在得到ip地址段以后,通过网站www.cnnic.net.cn查询这个地址段属于那个运营商,或者在linux下用whois工具查询。用访问网站的方式,一次只能查询一个地址段,根本无法完成所有地址的查询。而使用whois则可用遍历方式逐个查询,然后按关键字归类,形成几个单独的文件。

可能由于各ip地址租用方未能按同一的标准在apnic提交注册信息,get_ip.sh脚本以正则表达式“netname”取得的值就未必能清楚反应运营商的名称,如“netname:      KLSF-LID-BJ”就很难从字面上连接是那个运营商的网络。如果你想判别更精准一些,则需要借助其他正则表达式如“mnt-by”作为辅助条件。

7.8.3 应急处理

Cdn服务运营中,有可能出现某个运营上机房网络不可用的情况–如设备故障或机房维护操作–这样一来,就导致某个区域的用户彻底不能访问。出现这种极端情况时,我们需要把出故障的机房资源临时从dns的转发列表删除,然后把前往这些机房的访问转发到其它地方,接下来,还是以我的实例来做说明。

现在假定我们放置服务器的电信idc托管机房出故障,造成电信的用户不能访问我的网站。在我发现故障以后,打开区文件telecom.sery.cn.zone,把它里面的A记录做修改,如果要把它的流量切换到网通机房,则把A记录对应的 ip改成跟unicom.sery.cn.zone的设置一样。

在进行流量切换操作时,很可能因为瞬间流量过大而使系统过载,因此在设计简单cdn容量的时候,每个点应该至少能承受整个系统用户的访问,否则当你从一个故障机房切换流量时,顺便也吧另一个点也撑死了,这种结果当然不是我们想要的。

Tagged with:
 

nagios不能发送飞信报警一例

On 2010年04月1日, in 未分类, by admin
1

虽然一直不喜欢移动,但受人之托,勉为其难帮他调试了一下。过程很简单,但其中的技巧却值得拿出来分享,于是就有了这个文章。

问题描述:

(1)以web方式查看nagios监控状态,显示故障,却收不到报警短信。

(2)系统日志出现“Warning: Attempting to execute the command “/usr/local/fetion/fetion –mobile=13660600600 –pwd=little228 –to=13909088009  –msg-utf8=”[linux1-CRITICAL] CHECK_NRPE: Socket timeout after 10 seconds. (20:51:12)”" resulted in a return code of 127.  Make sure the script or binary you are trying to execute actually exists…”。

情况了解:

该系统管理员说,他用手工方式执行飞信发短信没问题,再切换成用户nagios,也没问题。

处理过程:

(1)登陆该服务器,查看系统日志和nagios日志,果然如此。

(2)查看飞信所在的目录,发现已经被系统管理员设置成777了。

(3)先修改一下他的/etc/sudoers文件,用visudo进去,新增一行“nagios ALL=NOPASSWD:/usr/local/feiton/feiton”保存。

(4)切换到nagios用户:su – nagios

(5)执行sudo /usr/local/feiton/feiton ,报无lib*.so文件。

(6)这些文件在/usr/local/feiton里呆着呢,先看看/usr/lib里有没有这些。

(7)切换回root,查一下/usr/lib目录,果然没有这些lib*.so。

(8)从这个目录,把这些个lib*.so统统拷贝到/usr/lib目录。

(9)再切换到nagios用户执行sudo /usr/local/feiton/feiton 哈哈,没报错了。

(10)停止一个监控机上的服务,片刻,就发短信了。

对于监控短信报警,还是建议使用短信接口,不行该死的飞信,不能发其他运营商的手机短信。

Tagged with: