五:DNS之五:负载均衡与智能DNS

阅读(1,252)

一:DNS负载均衡实现原理:

通过在DNS配置文件中将一个同样的域名配置成多个IP地址,这样DNS服务器在解析的时候会依次根据zone文件的配置进行地址解析,可以实现一个简单的负载均衡,但是此方式有一个缺点就是不具备后端服务器状态检测的功能,实现方式如下:

1.1:编辑zone配置文件:

# vim  /var/named/chroot/etc/weather.com.zone 

1.2:保存退出后重新加载配置文件:

[root@dnsmaster etc]# rndc reload
WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
server reload successful

1.3:测试:

二:智能DNS实现原理:

实现原理通过设置策略匹配客户端的源地址,从而返回响应策略中定义好的目标解析地址,如联通用户访问A网站就返回联通的IP解析地址,同时电信用户再访问A网站则返回给电信的IP解析地址,大的web服务商会将自己网站做成多条网络链路接入,其目的就是加快使用各运营商网络用户的访问速度,而各个链路都有各个链路的IP地址,因此要返回给用户正确的web服务器地址显得尤其重要,例如联通用户返回给电信的web服务器地址,速度不慢才怪~!

2.1:编辑named.conf配置文件,使用acl定义客户端的来源IP地址范围,以下是一个完整的named.conf配置文件:

# vim /var/named/chroot/etc/named.conf 

key "rndc-key" {
        algorithm hmac-md5;
        secret "F/uq0vfij7ZsNJeHEbVr4w==";
};

#rndc的运行IP和端口,需和上一部分的key配合使用
controls {
       inet 127.0.0.1 port 953
               allow { 127.0.0.1; } keys { "rndc-key"; };
 };

#日志配置
logging {
  channel warning {
    file "/var/named/chroot/var/log/dns_warning" versions 10 size 10m;
    severity warning;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
  channel general_dns {
    file "/var/named/chroot/var/log/dns_log" versions 10 size 100m;
    severity info;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
  category default  {
    warning;
  };
  category queries {
    general_dns;
  };
};

acl group1 {
  192.168.10.103; #可以写多个IP或者地址段,以冒号结尾表示一行
  192.168.10.105;
};

acl group2 {
  192.168.20.0/24;
  192.168.10.104
};

include "/var/named/chroot/etc/view.conf";

2.2:编辑view.conf文件:

view "GROUP1" { #view的名称
  match-clients { group1; }; #匹配的acl名称
  zone "view-weather.com" { #zone的名称
    type master; #类型
    file "group1.weather.com.zone"; #zone文件的名称
  };
};

view "GROUP2" {
  match-clients { group2; };
  zone "view-weather.com" {
    type master;
    file "group2.weather.com.zone";
  };
};

2.3:准备zone文件:

2.3.1:编辑group1.weather.com.zone:

$ORIGIN .
$TTL 3600       ; 1 hour 
view-weather.com                  IN SOA     dnsmaster.view-weather.com. root.view-weather.com. (
                                2006       ; serial 
                                900        ; refresh (15 minutes)
                                600        ; retry (10 minutes) 
                                86400      ; expire (1 day)
                                3600       ; minimum (1 hour) 
                                )
                        NS      dnsmaster.view-weather.com.
$ORIGIN  view-weather.com.
dnsmaster            A         192.168.10.103
dnsalave             A         192.168.10.104
web                  A         192.168.1.105 #group1的web解析的IP是192.168.10.105

2.3.2:编辑group2.weather.com.zone:   

$ORIGIN .
$TTL 3600       ; 1 hour 
view-weather.com                  IN SOA     dnsmaster.view-weather.com. root.view-weather.com. (
                                2006       ; serial 
                                900        ; refresh (15 minutes)
                                600        ; retry (10 minutes) 
                                86400      ; expire (1 day)
                                3600       ; minimum (1 hour) 
                                )
                        NS      dnsmaster.view-weather.com.
$ORIGIN  view-weather.com.
dnsmaster            A         192.168.10.103
dnsalave             A         192.168.10.104
web                  A         192.168.10.106 #与group1的区别是将web的记录解析成了192.168.10.106

2.4:更改zone文件的权限:

chown  named.named /var/named/chroot/etc/group*

2.5:重新读取配置文件:

[root@dnsmaster ~]# rndc reload
WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
server reload successful

2.6:测试,分别在192.168.10.103和192.168.10.104解析web.view-weather.com,测试能否根据不同的客户端地址解析为不同的A记录:

2.6.1:在192.168.10.103测试:

2.6.2:在192.168.10.104测试: 

#以上为通过bind 的view功能实现了根据客户端地址而将其请求的域名解析为不同IP的功能。 


Warning: count(): Parameter must be an array or an object that implements Countable in /home/nginx/wordpress/wp-includes/class-wp-comment-query.php on line 405

发表评论

邮箱地址不会被公开。 必填项已用*标注