尽管在前面我们用大量的篇幅来描述怎么部署一个cdn环境,但这却不是我们的日常工作(实际工作场景没有谁成天在那里部署cdn环境)。部署和上线cdn,只是一个开始,运行和维护好这个环境,才是最关键的地方所在。
第一个常规性的工作,可能是缓存刷新操作。每当在源站上更新已经存在的文件时,我们就必须进行缓存刷新的操作,否则有些用户看到的页面内容仍然可能是陈旧的。刷新缓存的操作,是在缓存服务器上进行的,但我们有很多缓存服务器,一个一个手工刷新,既费时又容易出错和遗漏,因此最好把它自动化。下面介绍我用脚本自动更新全部缓存的方法(如果你有时间,可以写出单独对某个url更新的脚本【注1】):
1、 登陆某个linux服务器,为安全起见,最好是一个无重要服务的主机。
2、 编写一个缓存服务器的所有ip地址和对应密码的列表(如图7-7所示),文件保存为/usr/local/bin/passwd.txt,其权限设置为700(只有root用户有读写执行权限)。
图7-7 passwd.txt文件片段
3、 编写expect脚本,用以实现自动应答ssh远程连接。此脚本命名为ssh.exp,也把它放在/usr/local/bin目录里,器内容如下:
#!/usr/bin/expect set password [lrange $argv 0 0] set ipaddr [lrange $argv 1 1] set scriptname [lrange $argv 2 2] set arg1 [lrange $argv 3 3] set timeout -1
spawn ssh root@$ipaddr $scriptname $arg1 match_max 100000
expect "(yes/no)?" { send "yes\r" expect "password:" send "$password\r" } "password:" {send "$password\r"} "*host " {exit 1} interact
|
4、 编写脚本/usr/local/bin/purge_cache.sh,其内容为:
#!/bin/bash cd /usr/local/bin for i in `awk '{print $1}' passwd.txt` do j=`awk -v I="$i" '{if(I==$1)print $2}' passwd.txt` ssh.exp $j $i purge.sh done |
5、 在每个缓存服务器上编写脚本/usr/local/bin/purge,sh,其内容为:
#!/bin/sh /usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge *$ |
6、 在每个缓存服务器上都执行一下脚本/usr/local/bin/purge.sh,检查其运行情况。
7、 现在再回到控制服务器上,手动运行第“4”步编写的脚本/usr/local/bin/purge_cache.sh,等待程序执行并查看其输出。
第二个常规性维护操作是备份数据。需要备份的数据有两部分:配置文件和数据文件。在cdn环境下,只有源站的网站的数据需要备份,其它的备份操作都是针对配置文件的,如dns区文件。
第三个常规性的操作是故障处理与恢复。因为整个cdn是基于高可用的架构,即便出现故障也不会导致服务全部停止,因此服务的恢复就不会有什么压力;另外也因为有监控系统的报警,很容易就知道问题出在什么地方。
再一个维护操作可能是增加cdn布点,这是用户访问量增大时需要采取的必然措施。因为整个cdn环境是可扩展的架构,因此增加新的布点不会导致服务停止。
【注1】需要在脚本接受多个命令行参数。有兴趣的读者,可自行编写一个脚本。
本文转自sery51CTO博客,原文链接:http://blog.51cto.com/sery/639367 ,如需转载请自行联系原作者