SQUID CDN(基于内容的分发网络)
系统环境:rhel6.0 x86-64 iptables and selinux off
DNS服务器一台:server2.example.com(192.168.1.2)
Squid服务器2台:squid1:server3.example.com(192.168.1.3)
squid2:server4.example.com(192.168.1.4)
squid3:server5.example.com(192.168.1.5)
WEB服务器2台:web1:server2.example.com(192.168.1.2)
web2:server6.example.com(192.168.1.6)
配置DNS服务器
yum install bind bind-utils -y
vim /etc/named.conf #在options选项添加sortlist语句块
options {
// listen-on port 53 { 127.0.0.1; }; #允许所有监听53
// allow-query { localhost; }; #允许所有访问
....
sortlist {
{ localhost;
{ 192.168.1.3;
{ 192.168.1.4; 192.168.1.5; };
};
}
{ 192.168.1.0/24;
{ 192.168.1.5;
{ 192.168.1.4; 192.168.1.3; };
};
};
};
};
vim /etc/named.rfc1912.zones #定义下面的域
....
zone "linux.org" IN {
type master;
file "linux.org.zone";
allow-update { none; };
};
zone "cdn.com" IN {
type master;
file "cdn.com.zone";
allow-update { none; };
};
....
域文件的设置
vim /var/named/cdn.com.zone
$TTL 1D
@ IN SOA @ root. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.1.2
cache A 192.168.1.3
cache A 192.168.1.4
cache A 192.168.1.5
vim /var/named/linux.org.zone
$TTL 1D
@ IN SOA @ root. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.1.2
www IN CNAME cache.cdn.com.
反复dig (cache.cdn.com的别名)可以注意到192.168.1.4和192.168.1.5不停的轮循
使server5的dns指向server2
vim /etc/resolv.conf
nameserver 192.168.1.2
反复dig (cache.cdn.com的别名)可以注意到192.168.1.4和192.168.1.3不停的轮循
在server3和server4及server5上安装软件
yum install squid -y
vim /etc/squid/squid.conf
http_port 80 accel vhost vport #该3218为80,并配置为加速模式
icp_port 3130
visible_hostname server3.example.com #设定squid的主机名
#对 squid 的一些优化 根据系统实际情况而定,默认都有设置
#maximum_object_size 10240 KB ### 能缓存的最大对象为 10M
#maximum_object_size_in_memory 512 KB ### 内存中缓存的最大对象 512K
#cache_mem 256 MB ###squid 用于缓存的内存量
cache_peer 192.168.1.4 sibling 80 3130 #配置server4和server5为其邻居,当squid1在其缓存中
cache_peer 192.168.1.5 sibling 80 3130 #没有找到请求的资源,通过ICP去查询邻居的缓存资源
cache_peer 192.168.1.2 parent 80 0 no-query originserver round-robin name=web1
cache_peer 192.168.1.6 parent 80 0 no-query originserver round-robin name=web2 #squid1 的两个
父节点,originserver 参数指明是源服务器,round-robin 参数指明 squid 通过轮 询方式将请求分发到其中一台父节点;squid 同时会对这些父节点的健康状态进行检查,如果父节点 down 了,那么 squid 会从剩余的 origin 服务器中抓取数据
cache_peer_domain web1 web2 #将 域的请求通过 RR 轮询方式转发到两个父节点中的一个
将在server3上配置好的squid的主配置文件拷贝到另外两台squid服务器server4和server5,并做相应的修改
scp /etc/squid/squid.conf root@server4.example.com:/etc/squid/
scp /etc/squid/squid.conf root@server5.example.com:/etc/squid/
server4:
vim /etc/squid/squid.conf
visible_hostname server4.example.com
cache_peer 192.168.1.3 sibling 80 3130
cache_peer 192.168.1.5 sibling 80 3130
server5:
vim /etc/squid/squid.conf
visible_hostname server5.example.com
cache_peer 192.168.1.3 sibling 80 3130
cache_peer 192.168.1.4 sibling 80 3130
/etc/init.d/squid start #将所有的squid服务启起来
netstat -antlp | grep 80
tcp 0 0 :::80 :::* LISTEN 1729/(squid)
tail -f /var/log/squid/cache.log #通过日志查看服务的状况
在server2和server6安装软件
yum install httpd -y
vim /var/www/html/index.html #新建测试文件
hello world!
/etc/init.d/httpd start
测试URL=
将httpd反复的down和up观察效果;将一个或多个squid服务器down继续刷网页,再up仍继续刷网页,在这个过程中注意日志的变化tail -f /var/log/squid/cache.log
GOOD LUCK!
阅读(1833) | 评论(0) | 转发(0) |