淘主机 发表于 2012-5-15 13:16:03

基于win平台的squid负载均衡以及智能DNS

1. 首先做好网络架构的规划:


2 DNS轮询的配置


在万网域名管理里添加4个A记录,分别为4台squid的公网IP。然后在PC机上解析域名:nslookup ds.object.com.cn 如果反馈的IP不一样的话说明DNS轮询成功了。


这里需要说明的是万网的DNS服务器不支持智能DNS解析的,如果需要这个功能的话 DNS服务器需要我们自己来做。

3 squid反向代理的安装配置


a下载squid for win 2.7,解压缩后到sbin目录下,创建squid.exe的快捷方式,然后在squid.exe属性里输入 squid.exe
-i,注册成系统服务。


b 设置环境变量,把c:\squid\sbin 路径加入PATH里。


c 修改squid.conf


http_port 80 accel vhost vport


cache_mem 128 MB


maximum_object_size_in_memory 512 KB


cache_peer web1parent 81 0 no-query originserver round-robin name=webserver1

cache_peer web2parent 81 0 no-query originserver round-robin name=webserver2

cache_peer web3parent 81 0 no-query originserver round-robin name=webserver3

cache_peer_domain webserver1 webserver2 webserver3 www.xx.com


acl localnet src web1 web2 web3

icp_access allow localnet

cache_log c:/squid/var/logs/cache.log

cache_dir ufs c:/squid/var/cache 1000 16 256

maximum_object_size 10240 KB

dns_nameservers dns7.hichina.com

http_access deny all 改成 http_access allow all

d 启动squid。 先检测squid语法 squid –k parse ,接着初始化squid,建立缓存 squid –z,最后启动squid系统服务。


e 修改安全策略和防火墙,对外网开放80端口,对web1 web2 web3开放3130,81端口


f IIS网站端口改成81

4 网站同步设置


a 下载cwrsync安装包,在61.152.109.50安装服务器端,其他安装客户端。


b 在服务器端修改配置文件rsyncd.conf

use chroot = false

uid=0

gid=0

strict modes = false

log file = rsyncd.log

# Module definitions

# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work

#



path = /cygdrive/d/web

read only = false

transfer logging = yes

hosts allow = web1 web2 web3


hosts deny = *




c 在其他服务器安装客户端后,创建个同步服务器的web.bat文件:


rsync -vzrtopg --progress --delete 61.152.109.50::web3 /cygdrive/d/web


然后创建计划任务,定时5分钟执行一次web.bat。



                                 利用BIND的view功能实现智能DNS

一首先把解析域名的DNS服务器指向自己的服务器,在域名管理商修改,一般有个主DNS和辅DNS。

二主DNS的配置

1.
下载bind for win 9.8.0 zip,解压后点bindinstall.exe,安装到D:\dns.

2.
生成rndc配置文件rndc.conf

Cmd下
d:\dns\bin\ rndc-confgen
-a

d:\dns\bin\ rndc-confgen > ..\etc\rndc.conf

3.
生成key,用于主从view同步验证


dnssec-keygen -a hmac-md5 -b 128 -n HOST cnc

dnssec-keygen -a hmac-md5 -b 128 -n HOST any

查看一下key的具体内容,其中key的值是需要添加到bind的主配置文件

4.
生产主配置文件named.conf

在etc目录下新建named.conf,
注意把rndc.conf中# Use with the following in named.conf, adjusting the allow list as needed: 以后的内容复制到named.conf文件中,去掉全面的#。

options {


directory "d:\dns\etc";


allow-transfer { none; };


recursion no;

};

#这一段内容拷贝来自rndc.conf

key "rndc-key" {



algorithm hmac-md5;



secret "dLXNez+ppJ1ITa0a9OMs1w==";


};


controls {



inet 127.0.0.1 port 953



allow { 127.0.0.1; } keys { "rndc-key"; };


};

logging {


channel warning {


file "d:\dns\log\dns_warnings.txt" versions 3 size 1240k;


severity warning;


print-category yes;


print-severity yes;


print-time yes;
};

channel general_dns {


file "d:\dns\log\dns_logs.txt" versions 3 size 1240k;


severity info;


print-category yes;


print-severity yes;


print-time yes; };

category default { warning; };

category queries { general_dns; };

};

key cnc-key {


algorithm hmac-md5;


secret "9TyHvUmn7QwBt1H4D7FCzA==";


};

key any-key {


algorithm hmac-md5;


secret "SyO+xmT/9YicDgLdbemgxQ==";


};

#将网通的地址范围数据装载

include "acl.conf";

# 判断如果是网通的地址范围,则会执行此处,调用网通的解析

view "view_cnc" {


match-clients {key cnc-key ; cnc; };


allow-transfer { key cnc-key; };


server cnc1 { keys {cnc-key;}; };


zone "." {


type hint;


file "named.root";


};


zone "woq.com" {


type master;


file "cnc.woq.com.txt";


allow-transfer { cnc1; } ;


notify yes ;



also-notify { 60.28.225.60 ; } ;


};

};

# 如果不是网通的则进行电信的解析

view "view_any" {


match-clients { key any-key; any; };


allow-transfer { key any-key; };



server cnc1 { keys {any-key;}; };


zone "." {


type hint;


file "named.root";


};



zone "woq.com" {


type master;


file "tel.woq2.com.txt";


allow-transfer { cnc1; } ;


notify yes ;



also-notify { cnc1 ; } ;


};

};

5.
修改域名文件

tel.woq.com.txt


$TTL 6h

@
IN SOA
dns11.woq.com.
dns11.woq.com. (


2011042520


10800


3600


900


86400 )

@
NS
dns11.woq.com.

dns11
IN

A      tel1


dns12
IN

A       cnc1

www
IN
A
web1

cnc.woq.com.txt


$TTL 6h

@
IN SOA
dns11.woq.com.
dns11.woq.com. (


2011042520


10800


3600


900


86400 )

@
NS
dns11.woq.com.

dns11
IN

A       tel1

dns12
IN
A
cnc1

www
IN
A       web2

6 获取cnc IP地址段。

在linux环境下 ,安装whois3,然后输入

whois3 -h whois.apnic.net -l -i mb MAINT-CNCGROUP |grep "descr" | grep "Reverse" |awk -F "for" '{if($2!="") print $2}' | sort -n | awk 'BEGIN{print "acl\"CNC\"' {'"}{print $1";"}END{print "'}'"}' > /var/local/cnc.conf

完成之后放在主DNS服务器d:\dns\etc\acl.conf,格式如下:

Acl “cnc” {

IP;

};

三 辅DNS的配置

1.
下载bind for win 9.8.0 zip,解压后点bindinstall.exe,安装到D:\dns.

2.
生成rndc配置文件rndc.conf

Cmd下
d:\dns\bin\ rndc-confgen
-a

d:\dns\bin\ rndc-confgen > ..\etc\rndc.conf

3.
将主DNS服务器上的d:\dns\etc整个目录拷贝到辅DNS服务器的d:\dns\etc目录下。

4.
设置配置文件named.conf

   options {


directory "d:\dns\etc";


allow-transfer { none; };


recursion no;

};

#这一段内容拷贝来自rndc.conf

key "rndc-key" {



algorithm hmac-md5;



secret "X3u0giuo+R7LOdxS9W7V7A==";


};



controls {



inet 127.0.0.1 port 953



allow { 127.0.0.1; } keys { "rndc-key"; };


};

logging {


channel warning {


file "d:\dns\log\dns_warnings.txt" versions 3 size 1240k;


severity warning;


print-category yes;


print-severity yes;


print-time yes;
};

channel general_dns {


file "d:\dns\log\dns_logs.txt" versions 3 size 1240k;


severity info;


print-category yes;


print-severity yes;


print-time yes; };


category default { warning; };


category queries { general_dns; };

};

key
cnc-key {


algorithm hmac-md5;


secret "9TyHvUmn7QwBt1H4D7FCzA==";


};

key
any-key {


algorithm hmac-md5;


secret "SyO+xmT/9YicDgLdbemgxQ==";


};

#将网通的地址范围数据装载

include "acl.conf";

# 判断如果是网通的地址范围,则会执行此处,调用网通的解析

view "view_cnc" {


match-clients { key cnc-key; cnc; };


allow-transfer { none; };


server masterip { keys {cnc-key;}; };


zone "." {


type hint;


file "named.root";


};


zone "woq.com" {


type slave;


file "cnc.woq.com.txt";


masters { masterip; } ;


};

};

# 如果不是网通的则进行电信的解析

view "view_any" {


match-clients { key any-key; any; };


allow-transfer { none; };


server masterip { keys {any-key;}; };


zone "." {


type hint;


file "named.root";


};


zone "woq.com" {


type slave;


file "tel.woq.com.txt";


masters { masterip ; } ;


};

};

四 测试

1、故障转移测试

在同一时间,两台DNS断掉任何一台都可以提供解析

2、view功能测试

找全国各地用户,然后去ping域名www.woq.com,看联通用户得到的解析结果是否是web2,看电信用户得到是否是web1



3、主从同步测试

在主服务器上添加/删除A记录,然后增大serai值,然后重启DNS服务或者执行rndc reload,看从服务器是否能得到同步

4、性能压力测试

使用bind自带工具queryperf进行性能测试

# ./queryperf -d test -s masterip

五 注意事项

1、确保两台DNS服务器时钟同步,如两台服务器时间相差5分钟则无法实现同步

2、虽然通过bind-view功能实现智能DNS,但在用户访问时会面临如下情况

杭州电信用户à杭州电信DNSà联通DNS -> ------智能DNS,将用户请求解析到联通IP上

。那么这种情况是我们不可控制的

3、要定时清空DNS缓存,以免当缓存中毒时被他人恶意利用

4、防火墙要开启TCP/53、UDP/53,TCP/53用于主从DNS间的数据传输,UDP/53用于用户到DNS服务器之间的查询
页: [1]
查看完整版本: 基于win平台的squid负载均衡以及智能DNS