日期:2012-07-04 12:29:00  来源:本站整理

CentOS 5.8布置web缓存服务器(squid+memcached)[服务器安全]

赞助商链接



  本文“CentOS 5.8布置web缓存服务器(squid+memcached)[服务器安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  1、squid及web缓存介绍

  Squid是一种用来缓冲Internet数据的软件.它是这样实现其功效的,承受来自人们需求下载的目标(object的恳求并适本地处理这些恳求.也就是说,假如一个人想下载一web页面,他恳求Squid为他获得这个页面.Squid随之衔接到远程服务器(比方:http://squid.nlanr.net/)并向这个页面发出恳求.然后,Squid将web端得到的数据转发给客户端机械,并且同时复制一份,当下一次有人需求同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上.当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议.但它不能处理如POP,NNTP,RealAudio以及别的范例的东西.

  cache命中在squid每次从它的缓存里满意HTTP恳求时发生.cache命中率,是全部HTTP恳求中命中的比例.Web缓存典型的cache命中率在30%到60%之间.另一个类似的器量单位叫做字节命中率,描绘了cache供应服务的数据容量(字节数).

  cache丧失在squid不能从它的缓存里满意HTTP恳求时发生.cache丧失的来由有很多种.最明显的,当squid第一次承遭到对特别资源的恳求时,就是一个cache丧失.近似的情形是,squid会排除缓存以释放空间给新对象.别的的大概是资源不可到达.原始服务器会指导cache怎样处理呼应.比方,它会提醒数据不能被缓存,或在有限的时间内才被反复利用,等等.

  cache确认保证squid不对用户返回过期数据.在反复利用缓存对象时,squid常常从原始服务器确认它.假定服务器指导squid的拷贝仍旧有效,数据就发送出去.不然,squid进级它的缓存拷贝,并且转发给客户.

  2、系统环境

  两台web缓存服务器安装CentOS 5.8+squid+memcached,辨别命名为squid_cache1和squid_cache2.Squid关于后端的web服务器没有要求,可以是IIS,也可以是apache或是其他的.缓存前端可以有一层负载均衡,假如是LVS的话,那么两台缓存服务器都需求绑定VIP.

  Squid_cache1:

  Ip:192.168.0.149

  子网掩码:255.255.255.0

  默许网关:192.168.0.1

  Squid_cache2:

  Ip:192.168.0.150

  子网掩码:255.255.255.0

  默许网关:192.168.0.1

  3、安装前的预备工作

  1、关闭SELinux

  查看SELinux的状况

  getenforce

  假如是开启状况,则

  vi /etc/selinux/config

  SELINUX=disabled #改正 #SELINUXTYPE=targeted #注释掉

  重启系统

  reboot

  2.优化内核参数

  vi /etc/sysctl.conf # 编辑sysctl.conf文件增添以下内容

  net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 65536 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 = 8192 net.ipv4.tcp_max_tw_buckets = 5000 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 = 786432 1048576 1572864 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.ip_local_port_range = 1024 65000

  以上配置阐明:

  net.ipv4.tcp_rmem = 4096 87380 4194304:TCP读buffer,可参考的优化值: 32768 436600 873200

  net.ipv4.tcp_wmem = 4096 65536 4194304:TCP写buffer,可参考的优化值: 8192 436600 873200

  net.core.wmem_default:表示发送套接字缓冲区大小的缺省值(以字节为单位)

  net.core.rmem_default:表示接纳套接字缓冲区大小的缺省值(以字节为单位)

  net.core.rmem_max :表示接纳套接字缓冲区大小的最大值(以字节为单位)

  net.core.wmem_max:表示发送套接字缓冲区大小的最大值(以字节为单位)

  net.core.netdev_max_backlog = 262144:每个网络接口接纳数据包的速率比内核处理这些包的速率快时,答应送到行列的数据包的最大数目.

  net.core.somaxconn = 262144:web利用中listen函数的backlog默许会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默许为511,所以有必要调整这个值.

  net.ipv4.tcp_max_orphans = 3276800:系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上.

  net.ipv4.tcp_max_syn_backlog = 8192:表示SYN行列的长度,默许为1024,加大行列长度为8192,可以包容更多等候衔接的网络衔接数.

  net.ipv4.tcp_max_tw_buckets = 5000:表示系统同时保持TIME_WAIT套接字的最大数目,假如超越这个数字,TIME_WAIT套接字将立即被排除并打印告诫信息.削减它的最大数目,避免Squid服务器被大量的TIME_WAIT套接字拖死.

  net.ipv4.tcp_timestamps = 0:时间戳可以避免序列号的卷绕.一个1Gbps的链路必定会碰到从前用过的序列号,时间戳可以让内核承受这种“非常”的数据包,这里需求将其关掉.

  net.ipv4.tcp_tw_recycle = 1:表示开启TCP衔接中TIME-WAIT sockets的快速回收.www.110hack.com

  net.ipv4.tcp_tw_reuse = 1:表示开启重用,答应将TIME-WAIT sockets重新用于新的TCP衔接.

  net.ipv4.tcp_mem = 786432 1048576 1572864:一样有3个值,net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力;net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段;net.ipv4.tcp_mem[2]:高于此值,TCP回绝分配socket.可按照物理内存大小举行调整,假如内存充足大的话,可得当往上调.倡议94500000 915000000 927000000.

  net.ipv4.tcp_fin_timeout = 30:表示假如套接字由本端要求关闭,这个参数决意了它保持在FIN-WAIT-2状况的时间.

  net.ipv4.tcp_keepalive_time = 1200:表示当keepalive起用的时刻,TCP发送keepalive消息的频度.缺省是2小时,改成20分钟.

  net.ipv4.ip_local_port_range = 1024 65000:表示用于向外衔接的端口范围.缺省情形下很小:32768到61000,改成1024到65000.

  使配置当即见效:

  /sbin/sysctl -p

  3.关闭系统无关的服务

  接下来关掉一些不必要的系统服务

  chkconfig bluetooth off

  chkconfig firstboot off

  chkconfig cups off

  chkconfig ip6tables off

  chkconfig isdn off

  chkconfig kudzu off

  chkconfig sendmail off

  chkconfig smartd off

  chkconfig autofs off

  终止apache服务

  service httpd stop

  倡议卸载掉apache

  4.改正文件描写符限制

  (1)改正用户级限制

  ulimit -n #查看当前用户的文件描写符的限制数目

  ulimit -HSn 4096 #改合理前shell环境文件描写符的限制数目

  永久改正用户的文件描写符的限制

  vi /etc/security/limits.conf #编辑limits.conf文件,增添以下两行

  * hard nofile 4096 * soft nofile 4096

  (2)改正系统级限制

  vi /usr/include/bits/typesizes.h #编辑typesizes.h文件找到以下行将1024改成4096

  #define __FD_SETSIZE 4096

  vi /usr/include/linux/posix_types.h #编辑posix_types.h文件找到以下行将1024改成4096

  #define __FD_SETSIZE 4096

  注:方才编辑的这两个文件是C/C++程序里面的头文件,编译squid的时刻会被自动引用.只需求改正其数值,前面的#号不要去掉.

  cat /proc/sys/fs/file-max #查看系统级的文件描写符的限制数目

  假如小于4096,则履行下面语句,大于4096则跳过此步骤

  echo 4096 > /proc/sys/fs/file-max

  5.优化TCP/IP栈分配给出去衔接的本地端口范围

  netstat -n | grep TIME_WAIT #查看当前有多少个出去的衔接www.110hack.com

  cat /proc/sys/net/ipv4/ip_local_port_range #查看分配的本地端口范围

  echo "1024 65000" > /proc/sys/net/ipv4/ip_local_port_range #改正端口范围

  vi /etc/rc.d/rc.local #编辑rc.local文件使其开机见效

  echo "1024 65000" > /proc/sys/net/ipv4/ip_local_port_range

  注:以上端口范围可按照自己网站的实际情形举行更改

  6.配置时间同步

  yum install ntp

  crontab –e

  在最后增添

  1 5 * * * /usr/sbin/ntpdate time.nist.gov

  7.开启防火墙80端口

  vi /etc/sysconfig/iptables #增添一条法则

  -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

  service iptables restart #重启防火墙使配置见效

  8.下载软件

  cd /usr/local/src

  wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz

  wget http://memcached.谷歌code.com/files/memcached-1.4.13.tar.gz

  wget http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.20-20120610-r10455.tar.gz

  9.安装编译工具

  yum -y install gcc gcc-c++

  4、安装配置memcached

  1.安装libevent

  tar -zxvf libevent-2.0.19-stable.tar.gz

  cd libevent-2.0.19-stable

  ./configure --prefix=/usr/

  make && make install

  注:假如 libevent 不是安装在/usr目录下,那么需求把libevent-1.2a.so.1拷贝或链接到/usr/lib中,不然memcached无法正常加载.

  2.安装memcached

  tar -zxvf memcached-1.4.13.tar.gz

  cd memcached-1.4.13

  ./configure --prefix=/usr/local/memcached --with-libevent=/usr/

  make && make install

  3.启动memcached

  /usr/local/memcached/bin/memcached -l 192.168.0.149 -d -p 11211 -u nobody -m 128

  4.配置memcached开机启动

  vi /etc/rc.d/rc.local

  在最后增添

  /usr/local/memcached/bin/memcached -l 192.168.0.149 -d -p 11211 -u nobody -m 128

  5、安装配置squid

  1.安装squid

  tar -zxvf squid-3.1.20-20120610-r10455.tar.gz

  cd squid-3.1.20-20120610-r10455

  ./configure --prefix=/usr/local/squid --enable-async-io=100 --disable-delay-pools --disable-mem-gen-trace --disable-useragent-log --enable-kill-parent-hack --disable-arp-acl --enable-epoll --disable-ident-lookups --enable-snmp --enable-large-cache-files --with-large-files

  make && make install

  2.成立squid相关目录

  groupadd squid #成立squid用户组

  useradd -g squid -s /sbin/nologin squid #成立squid用户,并加入到squid组里,不答应登录系统

  chown -R squid /usr/local/squid/ #改正squid的安装目录所属用户为squid用户


  以上是“CentOS 5.8布置web缓存服务器(squid+memcached)[服务器安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 2008R2 HyperV下安装CentOS6,网卡无痛设置
  • CentOS 6.x 利用安装光盘作为yum源
  • CentOS 下 Nginx + Keepalived 配置高可用Web站点
  • CentOS 5.8布置web缓存服务器(squid+memcached)
  • centos6.2改正yum的源为安装光盘
  • CentOS6 yum搭建Linux+Nginx+PHP+MYSQL(LNMP)
  • CentOS 6.2 安装Nginx并设置为开机服务
  • CentOS 6.2布置DNS
  • CentOS6.2利用yum安装LAMP及phpMyadmin
  • CentOS下配置PHP+phpMyAdmin
  • centos下mysql主从同步快速设置步骤分享
  • 在Windows主机上按时备份远程VPS(CentOS)数据的批处理
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .