基于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]