通过DNS实现高可靠的负载均衡和访问提速

1. DNS简介

DNS (Domain Name System,域名系统),其主要作用就是将主机名解析成ip地址的过程,完成了从域名到主机识别ip地址之间的转换。

  1. DNS是一个分布式、分层次的主机名管理架构,通过配置DNS服务器地址,主机不需要知道对应的ip地址就能通过主机名的形式访问互联网。
  2. DNS利用类似倒状树的目录结构将主机名的管理分配在不同层级的DNS服务器当中,经过分层管理,每一级DNS服务器负责部分域名信息,这就减轻了DNS服务器的负载,同时也方便记录的更新同步。
  3. DNS是一个网络服务,因此就有对应的端口,其端口号为53号。DNS查询的时候,定以udp这个较快速的数据传输协议来查询的,但万一没有方法查询到完整的信息时,就会再次以tcp这个协定来重新查询,DNS服务在启动的时候会同时开启tcp的53号端口和udp的53号端口。
  4. DNS在进行区域传输的时候使用TCP协议,其他时候则使用UDP协议。
  5. FQDN(Full Qualified Domain Name):完整主机名,是有主机名和域名构成。例如www.baidu.com当中,www就是web网站服务器的主机名,baidu.com就是域名,主机名和域名之间用实心点号来表示。
    6.DNS是基于c/s架构(多数基于套接字架构的C/S架构)﹐对于每一级域名长度的限制是63个字符,域名总长度则不超过253个字符。
    7.DNS系统记录的信息非常多,不过重点就两个:一个是记录服务器所在的NS(name server)标志,另一个是记录主机名对应的A(address)标志。

DNS的域名结构

  1. DNS的域名是倒状的树状结构,在最顶层的是一个根服务器,它主要负责顶级域名的管理。
  2. 一级域名共分为三类,组织域、国家域和反响域,最多可以有127级域名。
  3. 每一级的域名服务器只负责对应下级的域的管理,其中根节点是分布在世界各地的13台服务器组成,其中10台位于美国地区,另外3台设置于英国、瑞典和日本。

2. DNS工作原理

DNS解析域名到IP需要经过三个阶段:

  1. 本地DNS缓存解析。
  2. 本地DNS服务器解析,递归查询。
  3. 根域及各级域名服务器解析,迭代查询。

3. DNS负载均衡

DNS负载均衡技术的实现原理是:在DNS服务器中为同一个主机名配置多个IP地址,多个IP地址以轮询的方式选择。

  • 操作系统:Ubuntu 18.04
  • DNS服务器软件:bind9

-- 下方内容来自网易Java架构师课程截图

使用DIG工具查看对域名yes.163.com的解析:



4. DNS与其他负载均衡工具对比

  1. DNS负载均衡:
    对同一个请求的域名,映射为不同的服务器IP地址。

  2. HTTP重定向:
    HTTP代理(比如浏览器)向Web服务器请求某一url后,Web服务器根据http响应头信息中的location标记来返回一个新的url,然后http代理继续请求访问这个新的url。

  3. 反向代理负载均衡:
    反向代理指的是以代理服务器来接收对Web服务器的连接请求,然后转发给内部网络中不同的Web服务器,并将从Web服务器请求得到的结果返回给请求连接的客户端,以Nginx为代表。

  4. NAT负载均衡:
    将公网地址映射为多个私网地址,解决IP地址紧张,不想让外部网络知道内部网络结构的问题。

  5. CDN:
    CDN即Content Delivery Network,内容分发网络。通过发布机制将内容同步到大量的缓存节点,并在DNS服务器上进行扩展,找到离用户最近的缓存节点作为服务提供节点。

  6. 混合型负载均衡:
    在有些大型网络,由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异,可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务(即把这多个服务器群当做一个新的服务器群),从而达到最佳的性能。


实操例子

1. 安装bind9
sudo yum -y install bind

安装完之后可以使用

whereis named.conf

查看配置文件地址,我这里使用的是Fedora来操作的,所以这个配置文件的地址在 /etc/named.conf,之前看视频看到有的人的配置文件是拆分开的,如 named.conf.local 和 named.conf.options,但是我这边是合并在一起的,具体我也不是很清楚,但是影响不是很大,反正都是修改相应的部分。

2. 修改resolv.conf,使其DNS解析指向自身
sudo emacs /etc/resolv.conf

我这里是使用了emacs来编辑,如果没有安装emacs,也可以使用vim来编辑,不影响

nameserver 192.168.1.7 # 这里设置本地DNS解析指向本机IP,具体需要替换成自己的IP哦
search localdomain
3. 修改named.conf
sudo emacs /etc/named.conf

然后修改内容,主要有两个地方

贴一个完整的配置

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
    listen-on port 53 { 127.0.0.1; 192.168.1.7; }; // 这里是修改过的内容
    listen-on-v6 port 53 { ::1; };
    directory   "/var/named";
    dump-file   "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    secroots-file   "/var/named/data/named.secroots";
    recursing-file  "/var/named/data/named.recursing";
    allow-query     { localhost; };

    /* 
     - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
     - If you are building a RECURSIVE (caching) DNS server, you need to enable 
       recursion. 
     - If your recursive DNS server has a public IP address, you MUST enable access 
       control to limit queries to your legitimate users. Failing to do so will
       cause your server to become part of large scale DNS amplification 
       attacks. Implementing BCP38 within your network would greatly
       reduce such attack surface 
    */
    recursion yes;

    dnssec-validation yes;

    managed-keys-directory "/var/named/dynamic";
    geoip-directory "/usr/share/GeoIP";

    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";

    /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
    include "/etc/crypto-policies/back-ends/bind.config";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
    type hint;
    file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

// 这里是新增的内容
zone "lazyfennec.cn" {
     type master;
     file "/etc/bind/db.lazyfennec.cn";
};
4. 创建 db.lazyfennec.cn
cd /etc
sudo mkdir bind
cd /bind
sudo emacs db.lazyfennec.cn

然后编辑内容即可

$TTL 604800
@    IN SOA lazyfennec.cn   root.localhost. (
                        1   ; serial
                        604800  ; refresh
                        1H  ; retry
                        1W  ; expire
                        3H) ; minimum
;
@       IN  NS localhost.
lazyfennec.cn   IN  NS 192.168.1.7

yes     IN  A 192.168.1.7
yes     IN  A 192.168.1.8
yes     IN  A 192.168.1.9

保存退出

5. 测试启动一下bind
sudo systemctl start named

测试一下

dig yes.lazyfennec.cn

结果


但是我这边有个问题,好像使用ping的时候,会出现点问题,这里容我后续再去了解验证一下,如果有哪位大佬知道,希望可以在下方留言评论,非常感谢!!!


如果觉得有收获,欢迎点赞和评论,更多知识,请点击关注查看我的主页信息哦~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容