服务器

位置:IT落伍者 >> 服务器 >> 浏览文章

Squid+MRTG实现完善的缓存代理和http服务加速代理


发布日期:2022年05月10日
 
Squid+MRTG实现完善的缓存代理和http服务加速代理

Squid是一种源代码开放的高性能代理缓存服务器它可支持FTPgopher和Http数据对象的代理另外Squid也支持SSL多样化访问控制和代理请求的完整日志功能通过轻量级的网际缓存协议Squid以网状或层次的方式分配内存这样能节省额外的带宽提供Http服务加速代理Web服务器把Http数据推到Squid缓存中外界的请求访问可以通过缓存提取所需数据实现Web服务器的动态镜像

另外为了实现对Squid服务器的监控采用MRTGMRTG是Multi Router Traffic Grapher 的缩写它主要的用途是监测网络服务设备的流量并生成包括图片的HTML文件可以直观的显示网络服务的流量以提供Squid缓存服务的监测

通过Squid+MRTG可以配置一个完善的代理服务提供方案下面为具体配置步骤

一.基础准备

Squid下载地址

版本squidSTABLEsrctargz

MRTG下载地址~oetiker/webtools/mrtg/pub/

版本mrtgtargz

机器配置为M内存G硬盘(其中G分区专用缓存目录)PII

二.安装步骤

解压Squid(一般做法把软件包括在/opt目录下)

#tar zxvf squidSTABLEsrctargz

#cd squid

//进行编译

#/configure prefix=/usr/local/squid enabledelaypools enablesnmp enablecachedigests enableauthmodules=NCSA

#make all

#make install

*对编译项目的解释

prefix 为编译Squid所存放的目录这里为/usr/local/squid

enabledelaypools 此选项使能一个延时池这样能对某些特定的请求限制额定带宽

enablesnmp 此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测因此必须选择此项使Squid支持SNMP接口

enablecachedigests 使能缓存摘要本来此项目的是为了在Squid集群服务之间迅速发现缓存对象这里在本地使用可以加快请求时检索缓存内容的速度

enableauthmodules 此编译选项启用认证模块可以对访问代理用户进行授权

安装MRTG

#tar zxvf mrtgtargz

#cd mrtg*

#/configure prefix=/usr/local/mrtg

#make

#make install

/* 几点说明

.MRTG大部分程序是用Perl脚本写成需要Perl版本为以上才能运行RH 带有perl版本为v非常满足要求(如果版本不够请到下载安装

.MRTG需要zlibgd和libpng三个处理图形的库支持RH满足此要求(如果没有安装请到下载安装)

三.具体配置

lSquid配置(仅对必要选项配置并说明)

http_port

此选项用于Squid代理所侦听的端口由于要实现Http加速代理则侦听端口

tcp_outgoing_address

此句法指定了远程服务器的IP地址这里我们使用来指定为所有地址

tcp_incoming_address

这里可以使用http_port语法进行绑定端口和IP地址表示客户端的请求可以不使用

cache_mem MB

由于Squid在读写磁盘I/O通道数据转贮等需要大量内存我们可以把内存值稍微设置大一些这样可以提供服务器性能

cache_swap_low

这用做表示缓存内部对象的替换的衡量基线当交换分区的磁盘利用率超越这个基线那么缓存对象替换也就随之开始这里是用百分率做衡量标准

cache_swap_high

此标记用于缓存对象替换的最高程度当交换分区磁盘利用率接近此设置则表示对象的更新程度更为剧烈这里由于我的缓存区设置比较大因此设置为%

下面几个配置标记采用系统默认配置

{ maximum_object_size KB

{ 超过此尺寸的对象将不缓存

{ minimum_object_size KB

{ 小于此尺寸的对象将不缓存

{ maximum_object_size_in_memory KB

{ 内存中能缓存的最大对象尺寸

{ ipcache_size

{ 指定IP缓存大小

{ ipcache_low

{ 缓存IP地址的最低基线

{ ipcache_high

{ 缓存IP地址的最高极限

{ fqdncache_size

{ 缓存DNS全域名解析的尺寸

cache_replacement_policy lru

此标记用于当缓存新对象时使用缓存策略来清除缓存中特定对象这里使用lru表示它只替换长时间没有被访问过的对象其他策略请参看配置文档介绍

memory_replacement_policy lru

此用法同上区别在于替换内存对象

cache_dir ufs /cache

设置缓存根目录为/cache类型为ufs缓存区大小为G可以有个二级子目录每有二级目录有个三级子目录

cache_access_log /var/log/squid/accesslog

cache_log /var/log/squid/cachelog

cache_store_log /var/log/squid/storelog

cache_swap_log /var/log/squid/swaplog

上面几项是缓存日志记录的路径和文件名

log_ip_on_direct on

记录客户端主机的IP地址

log_fqdn on

记录全DNS域名解析

mime_table /usr/local/squid/etc/nf

Squid所用mime的文件路径

pid_filename /usr/local/squid/logs/squidpid

Squid进程ID的文件

ftp_user

这里可以使用匿名登陆FTP服务器

ftp_list_width

FTP文件列表长度超过长度则截断文件名

ftp_passive on

允许主动连接FTP服务器

dns_nameservers

指定代理的域名解析服务器

authenticate_program /usr/local/squid/bin/ncsa_auth

/usr/local/squid/etc/passwd

代理认证程序这里在/usr/local/squid/etc使用htpasswd产生一个密码文件具体方法如下

#htpasswd –cdb passwd auth_usr pass

#htpasswd –db passwd auth_usr pass

#htpasswd –db passwd auth_usr pass

创建passwd文件并添加auth_usrauth_usrauth_usr三个认证用户

authenticate_children

所需要要产生的认证进程数

authenticate_ttl

此标记设置认证保持时间

authenticate_ip_ttl

此标记设置认证绑定IP地址的时间长度

authenticate_ip_ttl_is_strict on

此标记可在authenticate_ttl时间内拒绝其他非认证IP地址访问

request_header_max_size KB

request_body_max_size MB

设置了Http请求的包头和数据大小

request_body_max_size

这里请求所返回的数据大小为意义为没有任何限制

connect_timeout seconds

read_timeout minutes

request_timeout seconds

上面几项是代理服务几个超时设置这里使用配置文件默认值

下面是访问控制列表一些配置这里对访问的IP地址域名访问类型极其访问代理的权限做的限制

acl acldomain dstdomain

acl acceleratedport port

acl acceleratedhost dst /

acl aclprotocol proto HTTP FTP

acl aclmethod method GET POST

acl aclauth proxy_auth required

(注这里使用required表示任何passwd文件中存在的合法用户才授予访问权限

acl aclsnmp snmp_community secrect

MRTG可以使用snmp协议检测此代理服务运行状态

acl aclconn maxconn

可并行连接的最大数量

启用定义的访问控制列表

http_access allow manager localhost

http_access deny manager

http_access allow aclauth

http_access allow acceleratedport acceleratedhost

http_access deny all

下面为缓存管理设置

cache_mgr

设置缓存管理者的接受邮件地址

cache_effective_user squidusr

cache_effective_group squidgrp

设置执行Squid的用户和用户组

{注设置用户和用户组及其权限修改方法如下

#groupadd squidgrp

#useradd –g squidgrp –d /home/squidusr squidusr

修改log日志权限属性使squidusr有写权限

#chown squidusr /var/log/squid

#chgrp squidgrp /var/log/squid

#chown squidusr /var/log/squid/*log

#chown squidgrp /var/log/squid/*log

}

下面配置Http服务加速代理

httpd_accel_port

httpd_accel_with_proxy on

(注如果配置代理和加速服务必须httpd_accel_with_proxy选项打开如果需要配置多个加速可以使用虚拟的概念)

snmp_port

此标记设置snmp_port端口为可以使MRTG监测服务运行状态

snmp_access allow aclsnmp localhost

上一篇:如何限制某个用户只能FTP不能TELNET?

下一篇:基于Oracle9i的服务器性能评测