1 实现智能DNS
1.1 GSLB
GSLB:Global Server Load Balance全局负载均衡
GSLB是对服务器和链路进行综合判断来解决由哪个地点的服务器来提供服务,实现异地服务器群服务质量的保证
GSLB主要的目的是在整个网络范围内将用户的请求定向到最近的节点(或者区域)
GSLB分为基于DNS实现、基于重定向实现,基于路由协议实现,其中最通用的是基于DNS解析方式
1.2 CDN(Content Delivery Network)内容分发网络
1.2.1 CDN工作原理
1.用户向浏览器输入www.a.com这个域名,浏览器第一次发现本地没有dns缓存,则向网站的DNS服务器请求
2.网站的DNS域名解析器设置了CNAME,指向了www.a.tbcdn.com,请求指向了CDN网络中的智能DNS负载均衡系统
3.智能DNS负载均衡系统解析域名,把对用户响应速度最快的IP节点返回给用户
4.用户向该IP节点(CDN服务器)发出请求
5.由于是第一次访问,CDN服务器会通过Cache内部专用DNS解析得到此域名的原web站点IP,向原站点服务器发起请求,并在CDN服务器上缓存内容
1.3 智能DNS相关技术
1.3.1 bind中ACL
ACL:把一个或多个地址归并为一个一个集合,并通过一个统一的名称调用
注意:只能先定义后使用;因此一般定义在配置文件中,处于options的前面
格式:
acl acl_name {
ip;
net/prelen;
…
};
范例:
acl beijingnet {
172.16.0.0/16;
10.10.10.10;
};
1.3.2 bind有四个内置的acl
- none 没有一个主机
- any 任意主机
- localhost 本机
- localnet 本机的IP同掩码运算后得到的网络地址
1.3.3 访问控制的指令
- allow-query {}:允许查询的主机;白名单
- allwo-transfer {}:允许区域传送的主机;白名单
- allow-recursion {}:允许递归的主机,建议全局使用
- allow-update {}:允许更新区域数据库中的内容
1.3.4 view视图
1.3.4.1 view:视图,将ACL和区域数据库实现对应关系,以实现智能DNS
- 一个bind服务器可定义多个view,每个view中可定义一个或多个zone
- 每个view用来匹配一组客户端
- 多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件
注意: - 一旦启用了view,所有的zone都只能定义在view中
- 仅在允许递归请求的客户端所在view中定义根区域
- 客户端请求到达时,是自上而下检查每个view所服务的客户端列表
1.3.4.2 view格式
view VIEW_NAME {
match-clients { beijingnet; };
zone "kobe.org" {
type master;
file "kobe.org.zone.bj";
};
include "/etc/named.rfc1912.zones";
};
view VIEW_NAME {
match-clients { shanghainet; };
zone "kobe.org" {
type master;
file "kobe.org.zone.sh";
};
include "/etc/named.rfc1912.zones";
};
1.4 实战案例:利用view实现智能DNS
1.4.1 实验目的
搭建DNS主从服务器架构,实现DNS服务冗余
1.4.2 环境要求
需要五台主机
DNS主服务器和web服务器1:10.0.0.8/24,172.16.0.8/16
web服务器2:10.0.0.7/24
web服务器3:172.16.0.7/16
DNS客户端1:10.0.0.6/24
DNS客户端2:172.16.0.6/16
1.4.3 前提准备
关闭SELinux
关闭防火墙
时间同步
1.4.4 实现步骤
1.4.4.1 DNS服务器的网卡配置
#配置两个IP地址
#eth0:10.0.0.8/24
#eth1:172.16.0.8/16
1.4.4.2 主DNS服务器端配置文件实现view
yum -y install bind
vim /etc/name.conf
#在文件最前面加下面行
acl beijingnet {
10.0.0.0/24;
};
acl shanghainet {
172.16.0.0/16;
};
acl othernet {
any;
};
注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
//allow-query { localhost; };
#其他略
#创建view
view beijingview {
match-clients { beijingnet; };
include "/etc/named.rfc1912.zones.beijing";
};
view shanghaiview {
match-clients { shanghainet; };
include "/etc/named.rfc1912.zones.shanghai";
};
view otherview {
macth-clients { othernet; };
include "/etc/named.rfc1912.zones.other";
};
include "/etc/named.root.key";
1.4.4.3 实现区域配置文件
vim /etc/named.rfc1912.zones.beijing
zone "." IN {
type hint;
file "name.ca";
};
zone "kobe.local" IN {
type master;
file "kobe.local.zone.beijing";
};
vim /etc/named.rfc1912.zones.shanghai
zone "." IN {
type hint;
file "named.ca";
};
zone "kobe.local" IN {
type master;
file "kobe.local.zone.shanghai";
};
vim /etc/named.rfc1912.zones.other
zone "." IN {
type hint;
file "named.ca";
};
zone "kobe.local" {
type master;
file "kobe.local.zone.other";
};
chgrp named /etc/named.rfc1912.zones.beijing
chgrp named /etc/named.rfc1912.zones.shanghai
chgrp named /etc/named.rfc1912.zones.other
1.4.4.4 创建区域数据文件
vim /var/named/kobe.local.zone.beijing
$TTL 1D
@ IN SOA master admin.kobe.local. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 10.0.0.8
websrv A 10.0.0.7
www CNAME websrv
vim /var/named/kobe.local.zone.shanghai
$TTL 1D
@ IN SOA master admin.kobe.local. (
1
1D
1H
1W
3H )
NS master
master A 10.0.0.8
websrv A 172.16.0.7
www CNAME websrv
vim /etc/named/kobe.local.zone.other
$TTL 1D
@ IN SOA master admin.kobe.local. (
1
1D
1H
1W
3H )
NS master
master A 10.0.0.8
websrv A 127.0.0.1
www CNAME websrv
chgrp named /var/named/kobe.local.zone.beijing
chgrp named /var/named/kobe.local.zone.shanghai
chgrp named /var/namde/kobe.local.zone.other
systemctl start named
rndc reload
1.4.4.5 实现位于不同区域的三个WEB服务器
#分别在三台主机上安装http服务
#在web服务器1:10.0.0.8/24实现
yum -y install httpd
echo www.kobe.local in other > /var/www/html/index.html
systemctl start httpd
#在web服务器2:10.0.0.7/16
echo www.kobe.local in beijing > /var/www/html/index.html
systemctl start httpd
#在web服务器3:172.16.0.7/16
yum -y install httpd
echo www.kobe.local in shanghai > /var/www/html/index.html
systemctl start httpd
1.4.4.6 客户端测试
#分别在三台主机上访问
#DNS客户端1:10.0.0.6/24 实现,确保DNS指向10.0.0.8
curl www.kobe.local
www.kobe.local in beijing
#DNS客户端2:172.16.0.6/16 实现,确保DNS指向172.16.0.8
curl www.kobe.local
www.kobe.local in shanghai
#DNS客户端3:10.0.0.8 实现,确保DNS指向127.0.0.1
curl www.kobe.local
www.kobe.local in other