7.7 简单cdn运行维护

尽管在前面我们用大量的篇幅来描述怎么部署一个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 ,如需转载请自行联系原作者




上一篇:2017年终策划:五大锐词带你回顾IT运维这一年


下一篇:linux批量解压压缩包