zoukankan      html  css  js  c++  java
  • 利用DNS实现负载均衡

    原文地址:http://www.chinaunix.net/old_jh/45/558805.html 

    现在网络的规模越来越大,网络中服务器的负载也变得越来越重。例如:在公司的网络中安装了一台WEB服务器,用于向企业内部网中的用户提供服务,假如网络中有几千甚至上万个用户需要同时访问这台WEB服务器,那么这台服务器的性能将变得极差。 

    如何来解决这个问题呢?在Windows 2000 Advanced Server中提供有Load Banlance负载均衡服务可以解决这个问题,但该服务的设置较复杂。另外我们还可以通过DNS来实现负载均衡的功能。  
    Enable round robin 启用循环 

    为了减轻某台服务器的负载,我们可以在网络中安装多台服务器。例如,原来网络中只有一台X235 的WEB服务器,其主机名为www.test.com,IP地址为192.168.1.100。为了减轻这台WEB服务器的负载,我们可以在网络中安装多台X235来提供WEB服务,并保证每台WEB服务器的内容都是一致的。如果可以实现让客户端分别访问不同的WEB服务器,这样就达到了分担负载的目的。那么如何让客户端分别向不同的WEB服务器访问呢?这就要用到DNS服务所提供的round robin功能。



     





     秋意正浓 回复于:2005-06-08 23:42:22

    我们可以按如下步骤操作: 


    在Windows200中打开管理工具中的DNS管理器。 

    在DNS管理其中,用鼠标右键点击该DNS服务器图标,在弹出的菜单中选择Property属性菜单。 

    在弹出的窗口中,选择Advanced选项卡。确保Enable round robin选项是处于被选中的状态。 

    点击OK关闭该窗口。 

    当设定好Round roubin后,接下来需要在DNS的区域(Zone)中添加主机记录: 


    打开管理工具中的DNS管理器。 

    用鼠标右键点击将要创建记录的区域,在弹出的菜单中选择New host新建主机记录。然后依照向导提示输入必要的信息。 

    主机名  IP地址  
    www  192.168.1.200  
    www 192.168.1.201  
    www 192.168.1.202  

    当输入完所有主机的主机名与IP的对应关系后,你将看到类似于下图的窗口。



     




     秋意正浓 回复于:2005-06-08 23:43:02

    在这里我们注意到,添加的三条主机记录是同一个主机名对应着不同的IP。这些不同的IP即为网络中安装的多台WEB服务器的实际IP,他们对应着同一个主机名www.test.com。 

    这样当客户端们在浏览器的地址栏中输入:www.test.com去访问WEB服务器时,就会向DNS服务器发出名称解析请求。当DNS服务器收到第一个客户端的请求时,会把第一个IP 192.168.1.200响应给客户端,当第二个客户端要求解析时,服务器把第二个IP192.168.1.201响应给客户端,以此类推。通过这样的循环分配IP地址,就可以让不同的客户器访问不同的服务器,从而达到分担服务器的负载的功能。 

    Enable netmask ordering 启用子网优先 

    如果公司的网络是由多个子网构成的,为了使用户能够更有效地访问服务器中的资源,例如WEB服务器上的资源,我们可以在每个子网中都安装一台WEB服务器,这些WEB服务器保存的数据是完全一样的并且都使用同一个主机名,例如:www.test.com。那么如何让用户在其浏览器的地址栏中输入主机名www.test.com时,访问的是本子网的WEB服务器,而不是其他子网的web服务器呢?我们可以通过设置Enable netmask ordering 启用子网优先来实现这一功能。 

    想实现Enable netmask ordering 启用子网优先,我们可以按以下步骤操作: 


    打开管理工具中的DNS管理器。 

    在DNS管理其中,用鼠标右键点击该DNS服务器图标,在弹出的菜单中选择Properties属性菜单。 

    在弹出的窗口中,选择Advanced选项卡。确保Enable subnet ordering选项是处于被选中的状态。 

    点击OK关闭该窗口。 

    当设定好subnet ordering后,接下来需要在区域中添加主机记录: 


    打开管理工具中的DNS管理器。 

    用鼠标右键单击将要创建记录的区域,在弹出的菜单中选择New host新建主机记录。然后依照向导提示输入必要的信息。 
    例如: 

    主机名  IP地址  
    www  192.168.1.200  
    www 202.96.1.201  
    www 64.35.1.202  

    当输入完所有主机的主机名与IP的对应关系后,你将看到类似于下图的窗口。



     




     秋意正浓 回复于:2005-06-08 23:43:46

    这样我们在DNS服务器中添加了三条主机记录:同一个主机名对应着不同的IP。这些不同的IP即为不同子网中安装的WEB服务器的实际IP地址,他们对应着同一个主机名www.test.com。 

    这样当用户在其浏览器的地址栏中输入:www.test.com去访问该WEB服务器时,该客户端就会向DNS服务器发出名称解析请求。作为DNS服务器收到客户端的查询请求后,将比较客户端的IP地址,与它所请求的主机名所对应的IP地址中的哪一个在同一子网中,然后将这个IP (与客户端在同一子网中的IP地址) 响应给客户端。这样就可以实现客户端访问的总是本子网中的服务器, 把服务器的访问负载分摊到了各个子网的服务器中,并且减少了跨子网的网络流量。


     gunguymadman 回复于:2005-06-09 18:16:17

    好    学习学习  。。。


     nopalh 回复于:2005-06-10 12:24:01

    好东西~  继续学习


     hope365 回复于:2005-06-10 13:48:16

    那么网站要更新的话是不是需要多台机器都要更新啊,也就是把在一台机器上更新的内容,在复制到其他web服务器上,是这样吗


     秋意正浓 回复于:2005-06-10 21:50:39

    引用:原帖由 "hope365"]那么网站要更新的话是不是需要多台机器都要更新啊,也就是把在一台机器上更新的内容,在复制到其他web服务器上,是这样吗
     发表:



    是的。 

    更新一台,然后通过软件同步一下。


     纳兰婷 回复于:2005-06-10 22:30:46

    原创吗?8错,学习ING。。。


     秋意正浓 回复于:2005-06-11 00:35:11

    引用:原帖由 "纳兰婷"]原创吗?8错,学习ING。。。
     发表:



    做试验而已。


     dudo 回复于:2005-06-11 10:53:07

    收藏~~~


     ん淚及長空ぼ 回复于:2005-06-12 22:06:29

    很好~~要学习!! 
    谢谢~~


     KindGeorge 回复于:2005-06-13 08:51:25

    引用:hope365 写到:  
    那么网站要更新的话是不是需要多台机器都要更新啊,也就是把在一台机器上更新的内容,在复制到其他web服务器上,是这样吗

      


    引用:是的。  

    更新一台,然后通过软件同步一下。



    既然服务那么繁忙,那么数据也一定是非常频繁的读写,那么几个服务器之间实时同步和互相备份一定是非常必要和重要的,可以共享一下应该怎么处理才可以实现"实时同步和互相备份"功能吗?  因为光有负载平衡而没有数据同步的方案不是太好的.虚心向大家请教. 
    另谁linux下的方法呢?


     aiwowo 回复于:2005-06-14 00:07:18

    再问一下,如果做了上述的设置后,在使用中,如何就能体现出Web访问时的负载均衡呢?


     radarwave 回复于:2005-06-14 16:33:40

    引用:原帖由 "KindGeorge" 发表:


    既然服务那么繁忙,那么数据也一定是非常频繁的读写,那么几个服务器之间实时同步和互相备份一定是非常必要和重要的,可以共享一下应该怎么处理才可以实现"实时同步和互相备份"功能吗?  因为光有负载平衡而没有数据?.........



    rsync 

    试试这个吧,很好用的 


    但是我有个疑问,比如我2台服务性能不同,占用带宽不同,我想让用户更多的访问第一台服务器 
    可不可以写成 

    www  192.168.0.2 
    www   192.168.0.2 
    www  192.168.0.3 

    这样让第一台服务器的浏览次数是第二台的2倍?


     killua 回复于:2005-06-15 11:14:05

    linux 下的 bind view也可以


     gowto 回复于:2005-06-19 20:08:40

    呵呵,那sina.com sohu.com是不是就是像你说的这么做的啊??


     scrate 回复于:2005-06-20 13:31:04

    这和硬件有关系嘛?


     zmcc135 回复于:2005-06-23 13:03:43

    引用:原帖由 "scrate"]这和硬件有关系嘛?
     发表:


    如上所说,这属于软件的负载均衡,不是硬件技术。 

    另外: 
    1、是否有Linux/Unix下的介绍? 
    2、RoundRobin就是轮流分配吧,是否还有加权算法可用,就像Proxy配置中会用到的 
    3、此外,假设2台服务器按所说的进行配置,在其中一台关机或应用Crash的情况下,如未及时干预,是否有50%的访问仍会被导向这台不可访问的机器?DN Server是否可配置探测功能,就像许多商用的“智能DNS”那样?


     jianglinchun 回复于:2005-06-27 20:59:17

    实际上这种负载均衡技术叫做DNS轮询, 
    也就是DNS服务器器轮流将对应的DNS请求轮循影射到对应的IP地址。 

    如果还需要更强大的负载均衡方案,就要用专门的负载均衡的硬件设备了。 

    只要会配置linux的DNS服务的,我想在linux下配置一样,这是DNS的所支持的,而非某种OS所特有。


     strongzzj 回复于:2005-06-30 11:29:37

    如果用这种方法做SMTP服务器,那会很好. 
    但做WEB的话,数据同步就非常重要了. 
    至少到现在,本人还没有见过高效的同类软件, 
    peersync几千元一套,但用起来也不觉得怎样好,有点名过其实.


     守夜人 回复于:2005-07-03 12:44:04

    对,现在讲负载的不少,但真正需要的是同步,我现在是用NFS做的,一台服务器专门做成raid(NFS)存储服务器,同步软件在那种交互环境下不好用如BBS等 
      还有一个问题,就是当一台服务器出错时,如果DNS没有将其删除,也会有问题


     gunguymadman 回复于:2005-07-03 16:49:17

    说的越多 就越靠近cluster


     gaya 回复于:2005-07-05 11:16:40

    很有用


     bluepigeon 回复于:2005-07-19 11:29:32

    非常不错,支持,我要学习


     panbs 回复于:2005-07-21 21:26:48

    我顶!好好学习,天天上网


     ilwxfe 回复于:2005-07-22 08:57:12

    谁能说说LINUX下怎么实现的 ??


     jackylau 回复于:2005-12-29 08:59:28

    最最关键的数据实时同步,其实做负载均衡很简单.不知道哪们有更好的方案不?


     lihangel 回复于:2006-06-05 22:25:33

    真的能实现负载均衡吗? 
    会不会出现这样的情况,每次当我访问WWW的时候,DNS返给我的IP都是第一条A记录,即192.168.1.200 
    只有当192.168.1.200当掉后,才会解析到192.168.1.201 
    前两个都当掉后,最后解析成192.168.1.202


     linux_admin 回复于:2007-03-22 10:00:22

    写的不错,加十分。 
    其实说白了,就是dns轮询的原理,就是还差点实现数据同步的功能。 
    如果网站都是静态的供别人访问的采用这种方法还行,但是如果牵涉到动态的有数据库的采用这个就不奏效了。 
    谁有这方面经验的指点下。


     flb_2001 回复于:2008-09-04 10:30:19

    DNS管理器就是DNS服务器上的吗? 
    也就是说你的所有这些配置都是在DNS服务器上做的吗?


     yuhuohu 回复于:2008-09-24 00:16:17

    一个小问题: 

    如何判断客户机的IP和WEB服务器的IP是同一子网?根据传统的ABC类来判断吗?还是有其他的文件定义子网掩码


     flb_2001 回复于:2008-09-24 13:52:33

    怎样保证保证每台WEB服务器的内容都是一致的


     yuhuohu 回复于:2008-09-24 17:36:54

    在你的楼上有人答复过这个问题


     lucas_lin 回复于:2009-07-24 12:07:50

    load balance is a very important feature of DNS.


     前卫主义 回复于:2009-07-27 16:48:04

    --------------------




    原文链接:http://bbs.chinaunix.net/viewthread.php?tid=558805
    转载请注明作者名及原文出处
  • 相关阅读:
    Android 编程下的计时器
    Android 编程下 java.lang.NoClassDefFoundError: cn.jpush.android.api.JPushInterface 报错
    Android 编程下的 TraceView 简介及其案例实战
    Android 编程下的日志工具类
    C#设计模式--装饰器模式
    C#设计模式--设配器模式
    C#设计模式--原型模式
    C#设计模式--建造者模式
    C#设计模式--单例模式
    C#设计模式--抽象工厂模式
  • 原文地址:https://www.cnblogs.com/niaowo/p/2933832.html
Copyright © 2011-2022 走看看