zoukankan      html  css  js  c++  java
  • DNS(三)全局流量调度

    一、EDNS
    EDNS(Extension Mechanisms for DNS),在遵循已有的DNS消息格式的基础上增加一些字段,来支持更多的DNS请求业务。

    二、edns-client-subnet
    允许DNS resolver传递用户的ip地址给authoritative DNS server.以实现对客户端的精准调度。
    重新编译安装bind以实现支持edns-client-subnet

    wget ftp://ftp.isc.org/isc/bind9/9.9.3/bind-9.9.3.tar.gz
    tar xf bind-9.9.3.tar.gz
    cd bind-9.9.3
    wget http://wilmer.gaa.st/edns-client-subnet/bind-9.9.3-dig-edns-client-subnet-iana.diff 
    yum -y install patch
    patch -p0 < bind-9.9.3-dig-edns-client-subnet-iana.diff
    ./configure --without-openssl
    make
    
    测试
    ./bin/dig/dig @ns1.google.com www.google.es +client=157.88.0.0/16

    如下为抓到的数据包

    三、智能DNS
    智能DNS,通过判断访问者的来源,为不同的访问者智能返回不同的IP地址,可使访问者在访问网站时可获取指定的IP地址,以提升访问速度、流量调度等效果。
    从概念可以知道,是否能获取访问者准确的IP地址和IP地址库的精准度是影响调度的决定性因素。
    域名解析过程如下图,一般情况下,客户端请求localDNS,localDNS最后请求权威DNS,如果权威DNS支持智能DNS解析和edns,会有如下几种情况:

     

    1、如客户端LOCALDNS支持EDNS
    权威DNS在获取访问者来源IP时,获取edns-client-subnet扩展里携带的IP来判断访问者的地理位置,实现智能解析。
    2、如客户端LocalDNS不支持EDNS
    LocalDNS迭代请求至权威DNS,权威 DNS根据访问者LocalDNS出口IP来判断访问者的地址位置,实现智能解析。
    3、客户端使用的不是localDNS
    例如客户端配置的DNS是谷歌的8.8.8.8,那权威DNS获取的IP地址就是国外的地址,此时可能就无法调度到就近机房了,如:把北京的用户调度到深圳的机房。

    四、BIND实现智能DNS

    实现:
    客户端IP地址为10.30.20.74,请求test.ts.lan的解析请求,解析IP地址为192.168.1.1
    客户端IP地址为10.30.20.71,请求test.ts.lan的解析请求,解析IP地址为192.168.1.2

    # vim /etc/named.conf
    acl group1 {
    10.30.20.74;
    };
    
    acl group2 {
    10.30.20.71;
    };
    
    # vim /var/named/chroot/etc/view.conf
    view "GROUP1" {
    match-clients { group1; };
    zone "ts.lan" {
    type master;
    file "group1.ts.lan.zone";
    };
    };
    
    view "GROUP2" {
    match-clients { group2; };
    zone "ts.lan" {
    type master;
    file "group2.ts.lan.zone";
    };
    };
    
    # vim group1.ts.lan.zone
    $ORIGIN .
    $TTL 3600 ; 1 hour
    ts.lan IN SOA op.ts.lan. dns.ts.lan. (
    2001 ; serial
    900 ; refresh (15 minutes)
    600 ; retry (10 minutes)
    86400 ; expire (1 day)
    3600 ; minimum (1 hour)
    )
    NS op.ts.lan.
    $ORIGIN ts.lan.
    op A 10.30.20.118
    test A 192.168.1.1
    
    # vim group2.ts.lan.zone
    $ORIGIN .
    $TTL 3600 ; 1 hour
    ts.lan IN SOA op.ts.lan. dns.ts.lan. (
    2001 ; serial
    900 ; refresh (15 minutes)
    600 ; retry (10 minutes)
    86400 ; expire (1 day)
    3600 ; minimum (1 hour)
    )
    NS op.ts.lan.
    $ORIGIN ts.lan.
    op A 10.30.20.118
    test A 192.168.1.2
    # systemctl reload named

    在客户端10.30.20.74测试

    # host test.ts.lan 10.30.20.118
    Using domain server:
    Name: 10.30.20.118
    Address: 10.30.20.118#53
    Aliases:
    
    test.ts.lan has address 192.168.1.1

    在客户端10.30.20.71测试

    # host test.ts.lan 10.30.20.118
    Using domain server:
    Name: 10.30.20.118
    Address: 10.30.20.118#53
    Aliases:
    
    test.ts.lan has address 192.168.1.2

    五、全局流量调度

    上图为流量调度的逻辑架构图,实现场景如下所述:
    1、为加快访问速度,将不同地区的用户解析到就近机房,如:南方用户解析到南方的机房,北方用户解析到北方机房
    2、同一个地区的会建设多个机房,按照权重配比进行负载均衡,如:按照权重配比,南方用户会部分解析到广州机房,部分用户解析到深圳机房,实现负载均衡。
    3、故障转移,健康检测模块(ICMP、TCP、HTTP)对所有机房进行健康探测,当出现机房异常时,实现调度到其他机房,实现流量的全局调度。如:广州机房出现故障,将南方用户调度的深圳机房。
    这里有一个问题,就是DNS全局生效需要一定的时间,无法做到及时性。

  • 相关阅读:
    定时器的使用
    new LayoutParams 使用
    判断,日期是是昨天,前天 ,今天
    google推出的SwipeRefreshLayout下拉刷新用法
    Intent的Flag
    Eclipse Java注释模板设置详解
    Eclipse的模板设置代码
    Android如何在java代码中设置margin
    软键盘挡住输入框的解决方案
    Android自定义遮罩层设计
  • 原文地址:https://www.cnblogs.com/guoxianqi2020/p/13761055.html
Copyright © 2011-2022 走看看