欢迎您,零度科技专业海外服务器租用
公司电话: 24小时电话: 

当前位置:首页>帮助教程>Linux 系统教程

目录导航

测试网站集群节点的页面访问是否正常

美国ST机房 发布于 2014-05-09  
Linux 系统教程

基本架构

网站是由多台Squid服务器做集群组成,客户端口访问网站的过程是:
客户端向Web站点发出请求,请求某一URL资源;
本地解析服务器域名的IP地址,由于DNS做了视图和对IP的轮循负载,会根据所在地域,获得一组,离自己比较近的Squid服务器地址;
如果Squid自己没有缓存该资源,会向后端的源服务器询问,并返回给客户端。

问题

某一时间段,有网站的用户向公司客服反映反映网站不能正常打开,但是客服测试是正常的。

定位

常规的方法是本地修改hosts文件,然后通过浏览器去访问站点,检查是否能正常访问,如果不能正常访问返回的错误页面是什么。

由于不同地域的用户,来源IP是不同的,如果按常规做法,我们需要登录,各个地域的测试机,而后,修改所有的配置文件,一个IP,一个IP的测试。好像挺费力。

我的思路

使用curl 测试Squid服务器,只要通过curl向Squid集群中的指定IP发送HTTP请求,指定正确的Host,就会准确地测试出URL资源访问是否正常。

例如

我们需要测试www.gyyx.cn网站的/stage/News/NewsContent.aspx?NewsID=310这个资源,我们可以这样做。

[root@squid01 ~]# curl -s -H "Host:www.gyyx.cn" -I \ 
'http://x.x.x.x/stage/News/NewsContent.aspx?NewsID=310'             HTTP/1.0 200 OK 
Server: nginx/x.x.x 
Date: Sun, 13 Mar 2011 13:00:12 GMT 
Content-Type: text/html; charset=utf-8 
X-Powered-By: ASP.NET 
X-AspNet-Version: x.x.x.x
Cache-Control: private 
Content-Length: 13622 
X-Cache: MISS from webcache 
X-Cache-Lookup: MISS from webcache:80 
Via: 1.0 webcache:80 (squid/2.6.STABLE10) 
Connection: close

不过这样一台一台的测试未免还是有些太慢。
写个脚本来实现同样的功能,您可以通过后面的链接下载到最新的脚本:
#!/bin/bash 
# Custer Web Servers Live Test 
# 可以用来测试网站集群的前端服务器 
# Based host and curl   
# 2011-03-12 23:35:11 
# 2011-03-13 17:01:56 Version 0.2 需要修正
# wangxiaoyu#live.com  
# dig +nocomments -t A www.gyyx.cn |grep -v "^;"|grep -v '^$'|grep -v 'CNAME' |awk '{print $NF}' 
 
 
function Usage(){ 
    echo -e "Usage:\t$0 DomainName [URL]" 
    echo -e "eg:\t$0 www.gyyx.cn '/stage/News/NewsContent.aspx?NewsID=310'" 
    echo -e "\t$0 www.gyyx.cn" 
    echo -e '实现功能: 
 
\t支持域名访问及URL地址的检测 
\t支持显示机房信息 
\t支持显示测试点机房信息 
\t支持显示网站连接延时,但不包括域名解析的时间
\t支持友好的帮助信息 
\t暂不支持批量测试和记日志功能 
\t需要测试点为Linux,且正确安装了 host elinks curl 软件 
\t暂时只能检查监听在80端口网站的检测: 
' 
    echo -e "友情提示:" 
    RETVAL=$1 
    case $RETVAL in 
        1) 
        echo -e "\t请输入使用网站服务器实际访问的域名\n\t如: www.gyyx.cn" 
        ;; 
        2) 
        echo -e "\t所给定的域名:$HOST,无法被正常解析\n\t请确认是否拼写错误,或解析就有误" 
        ;;   
        3) 
        echo -e "\t所给定的域名:$HOST,通过host命令未解析到IP\n\t请确认该域名是不是正常访问网站的域名" 
        ;; 
        4) 
        echo -e "\t请确认您的主机上安装了 $2 软件,因为脚本某些功能会用到" 
        ;; 
        *) 
        ;;  
    esac 
    exit $RETVAL 
}    
 
## 容错 
[ $# -lt 1 ] && Usage 1 
 
## HOST 
HOST=$1 
 
## 容错 
host $HOST >/dev/null || Usage 2 
 
## 容错 
which host >/dev/null || Usage 4 'host' 
which elinks >/dev/null || Usage 4 'elinks' 
which curl >/dev/null || Usage 4 'curl' 
 
## 获取Squid服务器的地址  
typeset -a IPs 
IPs=($(host $HOST |grep -v '\.$'|sort -n |awk 'BEGIN{ORS=" "}{print $NF}')) 
## 默认curl访问返回HTTP 状态码为200,则认为服务器存活 
## 如果是其它代码则认为是访问失败,并记录日志 
 
## 容错 
[ ${#IPs[*]} -eq 0 ] && Usage 3 
 
## URL  
URL=$2 
## LOGFILE=$0.log 
 
## 测试点信息 
MyIP=$(elinks --dump http://checkip.dyndns.org/ |awk -F: '{print $NF}'|sed 's/^[ ]//g') 
echo -e "本地出口地址: $MyIP" 
 
## 国外的ISP信息代码 
##MyISP="$(elinks --dump "http://www.ip-adress.com/" |awk -F: '/ISP of my IP:/{print $NF}'|sed 's/^[ ]//g')" 
 
## 另一个版本的ISP信息代码 
MyISP=$(elinks --dump "http://tool.chinaz.com/IP/?IP=$MyIP" |sed -ne '/查询结果/{n;p}'|sed -n 's/^[ ]*//gp') 
echo -e "归属ISP 信息: $MyISP" 
 
## 测试,并打印过程 
echo -e "Web 网站域名: $HOST" 
echo -e "解析得到的IP: ${#IPs[*]} 个IP地址\n" 
echo -e "开始测试 ......\n" 
printf "%-25s%-20s%-20s%-30s\n" 'IP Address' 'HTTP Code' 'Time Connect(ms)' 'ISP Information'  
 
## 测试代码 
typeset -a RESPONSE 
for IP in ${IPs[*]} 
do 
    RESPONSE=($(curl -s -connect-timeout 5 --max-time 10 -H "Host:$HOST" -o /dev/null -I -w '%{http_code} %{time_connect}' $IP$URL)) 
    ISP=$(elinks --dump "http://tool.chinaz.com/IP/?IP=$IP" |sed -ne '/查询结果/{n;p}'|sed -n 's/^[ ]*//gp') 
    if [ ${RESPONSE[0]} -nq 0 ] ;then ##这部分需要修正
        printf "%-25s%-20s%-20s%-30s\n" $IP ${RESPONSE[*]}ms "$ISP" 
    else  
        printf "%s-25%s-20s%-20%-30s\n" $IP '超时' "$ISP" ##这部分也需要改
    fi 
done 
 
echo -e "\n测试结束!\n"

本文出自零度科技转载请注明出处:http://www.ldisp.com/a/linux/2014/2755.shtml

上一篇:Linux passwd 命令使用详解
下一篇:squid配置参数的一些解释

 
了解零度?

零度科技主营全球服务器租用,如果您有服务器租用需求请联系

海外服务器租用

推荐香港、美国、韩国。提供站群服务器、高防服务器租用

海外特价服务器

关注零度特价服务器频道,了解全球特价服务器。

0

业务咨询

    技术服务

      特价活动
        全站搜索
        热门搜索:
        会员
        0通知
        客服
        0特价
        搜索
        TOP
        香港高防服务器,远程桌面,韩国服务器,nginx,反向代理