dns lvs webserver

来源:互联网 发布:sql developer 64下载 编辑:程序博客网 时间:2024/06/06 16:57

一:dns

说到dns,大家可能比较熟悉,都知道是域名解析服务,通俗的讲就是把域名(www.baidu.com)对应到服务器上,这些服务器提供一个或多个ip地址的映射给浏览器等客户端。如果是多个ip地址呢,就相当于在dns层面上做了负载均衡。

首先谈谈A记录:

A记录实现了DNS的基本功能,就是做域名到ip的映射,(dns系统有linux提供的bind,windows提供的dns)

常用的负载均衡策略是RR

CNAME,别名,可以方便管理(比如两个域名指向了同一个ip,那么到时候只更改CNAME对应的ip即可),也可以做重定向方案(新域名指向旧域名,旧域名同时支持工作)

DNS,因为是在网络层,所以不能进行端口的转换,只能域名映射ip

如:

dig www.baidu.com       

; <<>> DiG 9.2.4 <<>> www.baidu.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48633
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;www.baidu.com.                 IN      A

;; ANSWER SECTION:
www.baidu.com.          1200    IN      CNAME   www.a.shifen.com.
www.a.shifen.com.       203     IN      A       119.75.218.77
www.a.shifen.com.       203     IN      A       119.75.217.56



dns做负载均衡没有问题,一是dns记录可以被用户的浏览器或者互联网接入服务商的DNS服务器缓存,rr策略虽然性能不强,但是因为缓存原因不可能造成瓶颈。

同时dns系统已经支持了智能的地址解析,提供给不同城市用户距离最近的域名对应的服务器ip。

缺点:因为dns信息会缓存在各个接入服务商那,当有一台后端服务器挂掉的话,因为TTL不可能设置为0,会造成缓存,还是有用户会访问到这台服务器,造成用户体验极差


二:lvs(linux virtual system)

负载均衡可以发生在七层,也可以发生在四层以下,如数据链路层,网络层,传输层都可以实现,但是需要linux内核完成

四层效率高,因为在网络数据包需要在内核缓冲区进入进程用户地址之前,就尽快转发到实际服务器上。

linux内置的netfilter模块可以修改IP数据包,其对应的管理工具为iptables。

IPVS也是一个类似于netfilter/iptables的lunux内核模块,但是他更专注于实现IP负载均衡,除了实现nat还实现了dr和ip隧道

lvs有三种方式:

1、NAT(网络地址转换):发生在网络层和传输层(ip地址和端口号),首先要系统支持ip_forward,其次可以使用工具IPVS设置转换:

            ipvsadm -a -t 119.75.218.77:80 -s rr                           

           ipvsadm -a -t 119.75.218.77:80 -r 10.0.1.2:8080 -m

           ipvsadm -a -t 119.75.218.77:80 -r 10.0.1.3:8080 -m

          NAT模式需要服务器有两块网卡,分别连接外部网络和内部网络

          数据包在服务器上更改目的地址,目的端口,还有更改返回数据的源地址和源端口,所以数据必须从这台服务器上来回,这样可能造成瓶颈。因为回来得数据包会比较大

2、DR(直接路由方式):直接路由方式更改的是目标MAC地址,所以工作在二层数据链路层

         DR实现使用的是ip别名,负载均衡调度器和实际的服务器都拥有相同的ip别名(每个网卡都可以设置不超过256个IP别名),同时连接到WAN交换机,这样当数据包从交换机进入LAN后,那么需要询问谁拥有目标ip的MAC地址(ARP地址转换协议),正常情况下,负载均衡服务器和实际服务器都会返回自己机器的MAC地址,这样就必须先将实际服务器的arp广播禁止。

       这样只有负载均衡服务器接收到数据包,然后分发给接下来的实际服务器。因为只更改了mac地址,而ip地址未变,这样返回的数据包就可以不经过负载均衡调度器了,带宽瓶颈就解决了。


3、ip隧道:ip隧道和DR的工作原理相似,但是需要每个服务器必须支持ip隧道协议,才能实现。


三:web服务器,经过上面的两部,就到了web服务器了,而这个web服务器就是上面提到的实际的服务器。