测验网站集群节点的页面拜访是否正常51CTO博客 - 亚美娱乐

测验网站集群节点的页面拜访是否正常51CTO博客

2019年03月30日15时05分29秒 | 作者: 振锐 | 标签: 测验,网站,拜访 | 浏览: 2584

场景之一:

根本架构:
网站是由多台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这个资源,咱们能够这样做。

 

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

不过这样一台一台的测验不免仍是有些太慢。

写个脚原本完成相同的功用,您能够经过后边的链接下载到最新的脚本:

 

  1. #!/bin/bash 
  2. # Custer Web Servers Live Test 
  3. # 能够用来测验网站集群的前端服务器 
  4. # Based host and curl   
  5. # 2011-03-12 23:35:11 
  6. # 2011-03-13 17:01:56 Version 0.2 需求批改
  7. # wangxiaoyu#live.com  
  8. # dig +nocomments -t A www.gyyx.cn |grep -v "^;"|grep -v ^$|grep -v CNAME |awk {print $NF} 
  9.  
  10.  
  11. function Usage(){ 
  12.     echo -e "Usage:\t$0 DomainName [URL]" 
  13.     echo -e "eg:\t$0 www.gyyx.cn /stage/News/NewsContent.aspx?NewsID=310" 
  14.     echo -e "\t$0 www.gyyx.cn" 
  15.     echo -e 完成功用: 
  16.  
  17. \t支撑域名拜访及URL地址的检测 
  18. \t支撑显现机房信息 
  19. \t支撑显现测验点机房信息 
  20. \t支撑显现网站衔接延时,但不包含域名解析的时刻
  21. \t支撑友爱的协助信息 
  22. \t暂不支撑批量测验和记日志功用 
  23. \t需求测验点为Linux,且正确安装了 host elinks curl 软件 
  24. \t暂时只能检查监听在80端口网站的检测: 
  25.  
  26.     echo -e "友谊提示:" 
  27.     RETVAL=$1 
  28.     case $RETVAL in 
  29.         1) 
  30.         echo -e "\t请输入运用网站服务器实践拜访的域名\n\t如: www.gyyx.cn" 
  31.         ;; 
  32.         2) 
  33.         echo -e "\t所给定的域名:$HOST,无法被正常解析\n\t请承认是否拼写过错,或解析就有误" 
  34.         ;;   
  35.         3) 
  36.         echo -e "\t所给定的域名:$HOST,经过host指令未解析到IP\n\t请承认该域名是不是正常拜访网站的域名" 
  37.         ;; 
  38.         4) 
  39.         echo -e "\t请承认您的主机上安装了 $2 软件,由于脚本某些功用会用到" 
  40.         ;; 
  41.         *) 
  42.         ;;  
  43.     esac 
  44.     exit $RETVAL 
  45. }    
  46.  
  47.  容错 
  48. [ $# -lt 1 ] && Usage 1 
  49.  
  50.  HOST 
  51. HOST=$1 
  52.  
  53.  容错 
  54. host $HOST >/dev/null || Usage 2 
  55.  
  56.  容错 
  57. which host >/dev/null || Usage 4 host 
  58. which elinks >/dev/null || Usage 4 elinks 
  59. which curl >/dev/null || Usage 4 curl 
  60.  
  61.  获取Squid服务器的地址  
  62. typeset -a IPs 
  63. IPs=($(host $HOST |grep -v \.$|sort -n |awk BEGIN{ORS=" "}{print $NF})) 
  64.  默许curl拜访回来HTTP 状况码为200,则以为服务器存活 
  65.  假如是其它代码则以为是拜访失利,并记载日志 
  66.  
  67.  容错 
  68. [ ${#IPs[*]} -eq 0 ] && Usage 3 
  69.  
  70.  URL  
  71. URL=$2 
  72.  LOGFILE=$0.log 
  73.  
  74.  测验点信息 
  75. MyIP=$(elinks dump http://checkip.dyndns.org/ |awk -F: {print $NF}|sed s/^[ ]//g) 
  76. echo -e "本地出口地址: $MyIP" 
  77.  
  78.  国外的ISP信息代码 
  79. MyISP="$(elinks dump "http://www.ip-adress.com/" |awk -F: /ISP of my IP:/{print $NF}|sed s/^[ ]//g)" 
  80.  
  81.  另一个版别的ISP信息代码 
  82. MyISP=$(elinks dump "http://tool.chinaz.com/IP/?IP=$MyIP" |sed -ne /查询成果/{n;p}|sed -n s/^[ ]*//gp) 
  83. echo -e "归属ISP 信息: $MyISP" 
  84.  
  85.  测验,并打印进程 
  86. echo -e "Web 网站域名: $HOST" 
  87. echo -e "解析得到的IP: ${#IPs[*]} 个IP地址\n" 
  88. echo -e "开端测验 ......\n" 
  89. printf "%-25s%-20s%-20s%-30s\n" IP Address HTTP Code Time Connect(ms) ISP Information  
  90.  
  91.  测验代码 
  92. typeset -a RESPONSE 
  93. for IP in ${IPs[*]} 
  94. do 
  95.     RESPONSE=($(curl -s -connect-timeout 5 max-time 10 -H "Host:$HOST" -o /dev/null -I -w %{http_code} %{time_connect} $IP$URL)) 
  96.     ISP=$(elinks dump "http://tool.chinaz.com/IP/?IP=$IP" |sed -ne /查询成果/{n;p}|sed -n s/^[ ]*//gp) 
  97.     if [ ${RESPONSE[0]} -nq 0 ] ;then 这部分需求批改
  98.         printf "%-25s%-20s%-20s%-30s\n" $IP ${RESPONSE[*]}ms "$ISP" 
  99.     else  
  100.         printf "%s-25%s-20s%-20%-30s\n" $IP 超时 "$ISP" 这部分也需求改
  101.     fi 
  102. done 
  103.  
  104. echo -e "\n测验完毕!\n" 

 

这样咱们就可认,把这些脚本上传到测验点,需求测验的时分,咱们能够履行一遍,简略检查一下Squid的拜访是否正常。需求留意的是咱们需求小心肠检查回来的HTTP呼应码,而且比较保存的方法,是屡次curl测验。权且就抛砖引玉一下了,我们有更好的主张欢迎提出来。

下面是我对一个网站测验的成果:

 

  1. # ./Web-Cluster-Nodes-Test.sh www.sina.com.cn 
  2. 本地出口地址: 123.117.X.X 
  3. 归属ISP 信息: 北京市昌平区  
  4. Web 网站域名: www.sina.com.cn 
  5. 解析得到的IP: 16 个IP地址 
  6.  
  7. 开端测验 ...... 
  8.  
  9. IP Address               HTTP Code           Time Connect(ms)    ISP Information                
  10. 202.108.33.XX            200                 0.028ms             北京市 中搜公司         
  11. 202.108.33.XX            200                 0.026ms             北京市 中搜公司         
  12. 202.108.33.XX           200                 0.027ms             北京市 中搜公司         
  13. 202.108.33.XX           200                 0.025ms             北京市 中搜公司         
  14. 202.108.33.XX           200                 0.026ms             北京市 中搜公司         
  15. 202.108.33.XX           200                 0.027ms             北京市 中搜公司         
  16. 202.108.33.XX            200                 0.028ms             北京市 中搜公司         
  17. 202.108.33.XX            200                 0.047ms             北京市 中搜公司         
  18. 202.108.33.XX            200                 0.025ms             北京市 中搜公司         
  19. 202.108.33.XX            200                 0.026ms             北京市 中搜公司         
  20. 202.108.33.XX           200                 0.026ms             北京市 中搜公司         
  21. 202.108.33.XX            200                 0.069ms             北京市 中搜公司         
  22. 202.108.33.XX            200                 0.026ms             北京市 中搜公司         
  23. 202.108.33.XX            200                 0.176ms             北京市 中搜公司         
  24. 202.108.33.XX           200                 0.026ms             北京市 中搜公司         
  25. 202.108.33.XX            200                 0.026ms             北京市 中搜公司         
  26.  
  27. 测验完毕! 

 

附件:http://down.51cto.com/data/2357747
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表亚美娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章