Chinaunix首页 | 论坛 | 博客
  • 博客访问: 352029
  • 博文数量: 80
  • 博客积分: 1750
  • 博客等级: 上尉
  • 技术积分: 1380
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-13 11:35
文章分类
文章存档

2014年(3)

2013年(1)

2012年(54)

2011年(22)

分类: 系统运维

2012-06-18 12:23:59

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!
阅读(1622) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~