高性能缓存服务器Squid架构配置

随着网站访问人数越来越多,承受的并发和压力也越来越高,这时候我们需要对网站和架构进行优化,今天我们来
首页 新闻资讯 行业资讯 高性能缓存服务器Squid架构配置

随着网站访问人数越来越多,承受的并发和压力也越来越高,这时候我们需要对网站和架构进行优化,今天我们来讨论使用Squid对架构进行优化,缓存网站。网上对squid描述的文章也有成千上万,我这里简单记录一下实践的步骤。

一、实施环境

  • 系统版本:CentOSx86_64 5.8

  • Squid版本:squid-2.6

  • Nginx版本:nginx-1.4.2

二、正式安装

安装之前我们需要对系统进行优化,主要优化系统内核相关参数,仅供参考:

复制

#sysctl.conf config 2014-03-26 net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 net.ipv4.tcp_max_tw_buckets = 10000 net.ipv4.tcp_sack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_rmem = 4096        87380   4194304 net.ipv4.tcp_wmem = 4096        16384   4194304 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.netdev_max_backlog = 262144 net.core.somaxconn = 262144 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_mem = 94500000 915000000 927000000 net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_keepalive_time = 15 net.ipv4.ip_local_port_range = 1024    65535
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

  • 12.

  • 13.

  • 14.

  • 15.

  • 16.

  • 17.

  • 18.

  • 19.

  • 20.

  • 21.

  • 22.

  • 23.

  • 24.

  • 25.

  • 26.

  • 27.

  • 28.

  • 29.

  • 30.

  • 31.

  • 32.

  • 33.

  接下来上自动安装Squid脚本,里面分别配置了两个虚拟主机域名,前端有LVS,LVS均衡后端多组squid集群,根据命中率去调整squid集群的数量,Squid后端均衡Nginx或者Apache。(完整的架构LVS+Keepalived+Squid+Nginx+Resin/Tomcat/PHP+MySQL集群)

  简单逻辑图如下:

wKiom1MyeQCSP8bRAAGXIgAao8Q437.jpg

 直接上脚本:

复制

#!/bin/sh #Auto make install squid server #Author wugk 2014-03-26 SQUID_CNF=/etc/squid/squid.conf CACHE_DIR=(     /data/cache1     /data/cache2 ) #Install squid shell yum install -y squid #config squid.conf cat >>$SQUID_CNF <<EOF #global config squid.conf 2014-03-26 http_port 80 accel vhost vport cache_peer 192.168.149.128 parent 80 0 originserver name=wugk1 cache_peer 192.168.149.129 parent 80 0 originserver name=wugk2 cache_peer_domain wugk1 www.wugk1.com cache_peer_domain wugk2 www.wugk2.com visible_hostname localhost forwarded_for off via off cache_vary on #acl config acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 acl localnet src 10.0.0.0/8     # RFC1918 possible internal network acl localnet src 172.16.0.0/12  # RFC1918 possible internal network acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl SSL_ports port 443 acl Safe_ports port 80 8080         # http acl Safe_ports port 21          # ftp acl Safe_ports port 443         # https acl all src 0.0.0.0/0 acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localnet http_access allow localhost http_access allow all acl PURGE method PURGE http_access allow PURGE localhost http_access deny PURGE #squid config 2014-03-25 cache_dir aufs /data/cache1 10240 16 256 cache_dir aufs /data/cache2 10240 16 256 cache_mem 4000 MB maximum_object_size 8 MB maximum_object_size_in_memory 256 KB hierarchy_stoplist cgi-bin ? coredump_dir /var/spool/squid refresh_pattern ^ftp:           1440    20%     10080 refresh_pattern ^gopher:        1440    0%      1440 refresh_pattern -i (/cgi-bin/|\?) 0     0%      0 refresh_pattern \.(jpg|png|gif|mp3|xml|html|htm|css|js) 1440    50%     2880    ignore-reload refresh_pattern .               0       20%     4320 EOF #config cache_dir mkdir -p  ${CACHE_DIR[@]} ;chown -R squid:squid  ${CACHE_DIR[@]} #restart squid server /etc/init.d/squid restart if     [ "$?" == "0" ];then     echo "The Squid Server Install Successfully !!" else     echo "The Squid Server Install Failed !!,Please Check Log......"                                                                                                                                                                          fi
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

  • 12.

  • 13.

  • 14.

  • 15.

  • 16.

  • 17.

  • 18.

  • 19.

  • 20.

  • 21.

  • 22.

  • 23.

  • 24.

  • 25.

  • 26.

  • 27.

  • 28.

  • 29.

  • 30.

  • 31.

  • 32.

  • 33.

  • 34.

  • 35.

  • 36.

  • 37.

  • 38.

  • 39.

  • 40.

  • 41.

  • 42.

  • 43.

  • 44.

  • 45.

  • 46.

  • 47.

  • 48.

  • 49.

  • 50.

  • 51.

  • 52.

  • 53.

  • 54.

  • 55.

  • 56.

  • 57.

  • 58.

  • 59.

  • 60.

  • 61.

  • 62.

  • 63.

  • 64.

  • 65.

  • 66.

  • 67.

  • 68.

  • 69.

 ***测试,前端LVS截图(注LVS此处不配置了,博客有专门的安装方法)

wKiom1MyokSjpHrmAAIfiwjj0yc342.jpg

 通过浏览器查看head头,缓存命中情况截图如下:

wKiom1MyjuvyPcYVAAJ2smk3I8A715.jpg

 通过命令

复制

squidclient -p 80 mgr:info |egrep "(Request Hit Ratios|Byte Hit Ratios)"
  • 1.

 查看缓存命中率如下:

wKiom1Mzl4DQS5i0AALkpC-Girk997.jpg

 三、批量清空缓存

 使用Shell脚本批量清空squid缓存脚本auto_clean_cache.sh

复制

#!/bin/sh DIR=/data/cache/ Command=/usr/sbin/squidclient if         [ "$1" = "" ];then         echo "Usage:{$0 "\$1" ,Example exec $0 forum.php}"         exit fi grep -r -a $1 ${DIR} | strings | grep "http:"|grep -v "=" >list.txt count=`cat list.txt|wc -l` if         [ "$count" -eq "0" ];then         echo -e "---------------------------------\nThe $1 cache already update,Please exit ......"           exit fi while read line do         $Command -m PURGE -p 80 "$line" >>/dev/null         if [ $? -eq 0 ];then         echo -e "----------------------------------\nThe $line cache update successfully!"         fi done < list.txt
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

  • 12.

  • 13.

  • 14.

  • 15.

  • 16.

  • 17.

  • 18.

  • 19.

  • 20.

  • 21.

  • 22.

 脚本执行:

复制

[root@node2 ~]# sh auto_clean_cache.sh forum.php ---------------------------------- The http://www.wugk2.com/forum.php cache update successfully! [root@node2 ~]#
  • 1.

  • 2.

  • 3.

  • 4.

 更多squid优化及深入配置后期更新。

20    2014-04-09 10:50:01    Squid架构 缓存服务器