• 在RHEL4系统中配置LVS负载均衡群集
    时间:2008-11-28   作者:佚名   出处:ChinaUnix


    在RHEL4系统中配置LVS负载均衡群集
    在RHEL4系统中配置LVS负载均衡群集
    2007-07-13 kenthy#qingdaonews.com
    ################################################################
    系统环境:RHEL4 [ 2.6.9-5.EL ]
    软件环境:
        linux-2.6.22.1.tar.bz2   [http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.bz2]
        ipvsadm-1.24.tar.gz       [http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz]
    网络结构:
        Linux Virtual Server:
    eth0: 173.17.17.1/24
    eth1: 192.168.1.254/24
        Real Servers:
    RServer1: eth0: 192.168.1.1/24 Gateway: 192.168.1.254
    RServer2: eth0: 192.168.1.2/24 Gateway: 192.168.1.254
    RServer3: eth0: 192.168.1.3/24 Gateway: 192.168.1.254
    RServer4: eth0: 192.168.1.4/24 Gateway: 192.168.1.254
                                   Internet
                                       |
                                -------+---------
                                |  173.17.17.1  |
                                |  LVS Server   |
                                | 192.168.1.254 |
                                -------+---------
                                       |
           +-----------------+---------+-------+-----------------+
           |                 |                 |                 |
    -------+-------   -------+-------   -------+-------   -------+-------
    |   Rserver1  |   |   Rserver2  |   |   Rserver3  |   |   Rserver4  |
    | 192.168.1.1 |   | 192.168.1.2 |   | 192.168.1.3 |   | 192.168.1.4 |
    ---------------   ---------------   ---------------   ---------------
    目标功能:
        当外部访问173.17.17.1:80时,基于nat的方式将负载分流至内部的4台真实web服务器上。
    ################################################################
    1、配置Linux Virtual Server
    1> 重新编译内核,增加对IP vs的支持,使用新内核启动系统
         [ 注:如果有编译好的ip_vs_rr模块,也可以直接使用模块文件,跳过后续内核编译步骤。
           如: insmod /lib/modules/2.6.9-5.EL/kernel/net/ipv4/ipvs/ip_vs_rr.ko  ]

         # tar jxvf linux-2.6.22.1.tar.bz2 -C /usr/src/
         # ln -s /usr/src/linux-2.6.22.1 /usr/src/linux
         # cd /usr/src/linux
         # cp /boot/config-2.6.9-5.EL ./.config
         # make menuconfig  //增加对IP:Virtual Server Configuration的支持,编进内核

       # make bzImage && make modules && make modules_install
         # make install
         # reboot
    2> ipvsadm 安装:
         # tar zxvf ipvsadm-1.24.tar.gz -C /usr/src/
         # cd /usr/src/ipvsadm-1.24
         # make all
         # make install
         # ipvsadm --version
    3> 创建LVS配置脚本
         # vi /opt/lvs-up.sh
      #!/bin/bash
      echo 1 > /proc/sys/net/ipv4/ip_forward
      echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
      echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
      echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
      echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects
      LVSADM='/sbin/ipvsadm'
      $LVSADM -C
      $LVSADM -A -t 173.17.17.1:80 -s rr
      $LVSADM -a -t 173.17.17.1:80 -r 192.168.1.1:80 -m -w 1  //-m表示使用nat方式,如果是-g则表示dr方式
      $LVSADM -a -t 173.17.17.1:80 -r 192.168.1.2:80 -m -w 1  //-w 1表示服务器的权重
      $LVSADM -a -t 173.17.17.1:80 -r 192.168.1.3:80 -m -w 1  //-w 0将该rserver设置为静止状态,以便于维护
      $LVSADM -a -t 173.17.17.1:80 -r 192.168.1.4:80 -m -w 1
         # chmod a+x /opt/lvs-up.sh
         # echo '/opt/lvs-up.sh' >> /etc/rc.d/rc.local
         # /opt/lvs-up.sh
    2、配置Real Servers
        配置并启动Web服务[过程略],网关均指向192.168.1.254。[网站内容同步可以简单的采用NFS共享或者使用rsync]
    3、验证LVS的实现
        使用外部客户端浏览器多次访问
    http://173.17.17.1
    ,并检查4台真实web服务器的访问日志
        或在173.17.17.1服务器上执行不带参数的ipvsadm命令,应能看到如下内容:
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  redhat.com:http rr
      -> 192.168.1.1:http             Masq    1      0          0
      -> 192.168.1.2:http             Masq    1      0          0
      -> 192.168.1.3:http             Masq    1      0          0
      -> 192.168.1.4:http             Masq    1      0          0
    ################################################################
    附: 基于直接路由(DR)的方式实现负载均衡
    系统及软件环境:
        同上。LVS服务器和Real Servers均需要配置内核对IPVS的支持
    网络结构:
        Linux Virtual Server:
    eth0: 173.17.17.1/24
        Real Servers:
    RServer1: eth0: 173.17.17.5/24
    RServer2: eth0: 173.17.17.6/24
    RServer3: eth0: 173.17.17.7/24
    RServer4: eth0: 173.17.17.8/24
                                   Internet
                                       |
                                -------+---------
                                |  173.17.17.1  |
                                |  LVS Server   |
                                -------+---------
                                       |
           +-----------------+---------+-------+-----------------+
           |                 |                 |                 |
    -------+-------   -------+-------   -------+-------   -------+-------
    |   Rserver1  |   |   Rserver2  |   |   Rserver3  |   |   Rserver4  |
    | 173.17.17.5 |   | 173.17.17.6 |   | 173.17.17.7 |   | 173.17.17.8 |
    ---------------   ---------------   ---------------   ---------------
    ********************************************
    1、配置Linux Virtual Server
    1> 重新编译内核,增加对IP vs的支持,使用新内核启动系统[参考前例]
    2> ipvsadm 安装[参考前例]
    3> 创建LVS配置脚本
         # vi /opt/lvs-up.sh
      #!/bin/bash
      echo 1 > /proc/sys/net/ipv4/ip_forward
      echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
      echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
      echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
      echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects
      LVSADM='/sbin/ipvsadm'
      $LVSADM -C
      $LVSADM -A -t 173.17.17.1:80 -s rr
      $LVSADM -a -t 173.17.17.1:80 -r 173.17.17.5:80 -g -w 1
      $LVSADM -a -t 173.17.17.1:80 -r 173.17.17.6:80 -g -w 1
      $LVSADM -a -t 173.17.17.1:80 -r 173.17.17.7:80 -g -w 1
      $LVSADM -a -t 173.17.17.1:80 -r 173.17.17.8:80 -g -w 1
         # chmod a+x /opt/lvs-up.sh
         # echo '/opt/lvs-up.sh' >> /etc/rc.d/rc.local
         # /opt/lvs-up.sh
    2、配置Real Servers
    1> 重新编译内核,增加对IP vs的支持,使用新内核启动系统[参考前例]
    2> 创建RS配置脚本
         # vi /opt/rs-up.sh
      #!/bin/bash
      ifconfig lo:0 173.17.17.1 netmask 255.255.255.255 //添加虚拟地址
      route add -host 173.17.17.1 dev lo:0   //添加路由设置
      echo 0 > /proc/sys/net/ipv4/ip_forward
      echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
      echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
      echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
      echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
         # chmod a+x /opt/rs-up.sh
         # /opt/rs-up.sh
    3> 配置并启动Web服务[过程略]
    3、验证LVS的实现[参考前例]
    原文地址
    http://blog.chinaunix.net/u1/40349/showart_338533.html
    关于负载均衡,有很多种方法实现。
    1、在网络设备层实现,CISCO很早期的产品有基于路由导由器实现的方法,你可以参看相关资料,实现起来成本很高。
    2、用DNS方法实现负载均衡,简单,性能一般。
    3、UNIX LINUX是在操作系统下实现高可用、集群化和负载均衡的。
    4、也有一些大型数据库系统(ORACLE)提供负载均衡功能的。
    不知你需要哪一个级别的负载均衡。请详细说明。
    http://www.linuxvirtualserver.org/
    inux下Apache服务器怎么实现负载均衡:Apache服务器自己也可以做,前端口安装一个Apache,专门用来做转发,应用服务器安装在后端。 alteon   F5  Foundry效率高点  简单的DNS轮询 NAT方式实现
    看了精华区的文章,用ipvs的比较多,用haproxy的也有。
    不知道有没有用于生产环境用的,稳定性如何。
    预计带宽开始在100M以上,未来一两年内可能会达到400M的能力。
    试试用carp+ipvs
    LVS的话,感觉还是Linux好些吧.BSD上我没用过.
    最近新购了些设备,准备做改造:前端用硬件负载均衡设备(F5),中间用多台squid做加速服务器,后端用多台apache做原始服务器。squid的负载均衡依靠f5的策略,apache的负载均衡依靠在squid上hosts里主机名解析多个ip。
    这个方案主要是加速静态网页。
    F5的功能:
    1、链路选择,在f5上接入了电信和网通2个,这样链路的选择在f5上做DNS引导
    2、本地服务器选择,为多台squid服务器提供负载均衡功能
    squid的功能:
    静态网页的缓存,多个虚拟站点的配置
    apache的功能:
    提供原始网页的服务
    ——请指点一下呢,这种结构行不行啊?
    bind+LVS+squid+apache就能满足你的要求了
    第一,系统集成商不会这样做,没卖设备没钱赠!
    第二,企业不会这样做,方案没有案例,稳定性不够,风险过高,没有专业的技术支持队伍
    第三,F5对企业来说也不怎么贵,我们一个公司内部上网的代理就用两台F5做主备
    电信和网通的线也是拉到本地机房,所以只是购买了f5的LTM,没有使用GTM设备。
    实现的方法确实很多,f5也有加速模块,但这次没有用,我现在主要用f5的链路选择功能和squid服务器轮询功能。
    然后每台squid服务又可以选择多台原始服务器。
    软件:dns轮询,lvs,cdn(应该也算一种),集群
    硬件:F5
    现在手头上有一校园网的集群项目,主要是实现WEB服务器的负载均衡
    可是我看了好多网上的关于LVS的及本论坛的LVS文章,大都是说高可用性的LVS,在存储方面与负载均衡LVS有好大的差别~
    就我听说的就有GFS,lustre等集群文件系统,它们应该可以使用SAN,及NAS或iSCSI作存储方案吧~
    那对于简单的校园网负载均衡,使用什么样的存储方案比较好一点呢?
    WEB服务有静态数据也有动态数据,不需要数据库服务器~
    FreeBSD6.1 +CARP+IPVS双机热备份负载均衡 (花了不少精力,希望可以加為精華!) ,如果有朋友需要轉載請注明出處,謝謝!
    经过一个星期的找资料….测试….找资料….再测试……,终于测试成功Freebsd6.1+IPVS+CARP,实现双机热备份和负载均衡功能。其中:
    IPVS: 实现负载均衡功能
    CARP: 实现双机热备份
    一 系统环境
    FreeBSD 6.1 Release 最小化安装(完全安装也可以) + Kernel Source (ALL).............(经过测试,FreeBSD6.2也完全适用)
    SRV01 192.168.2.133 255.255.255.0 (双机热备 主)
    SRV02 192.168.2.130 255.255.255.0 (双机热备 辅)
    Share IP 192.168.2.144 255.255.255.0 (主辅机器共享)
    二 安装过程
    a.在核心配置文件中添加对CARP的支持和options NF_SOCKOPT(ipvs需要) 选项
    Srv01# cd /usr/src/sys/i386/conf/
    Srv01# cp GENERIC LVS
    Srv01# vi LVS
    添加以下选项:
    options                NF_SOCKOPT
    device                 carp
    [ 本帖最后由 @kang 于 2007-7-21 15:10 编辑 ]
    2006-11-29 08:52
      下载次数: 463


    IPVS_CARP.pdf
    (128.54 KB)
      PDF Download


    LVS_wrGJvRIU2Vrj.jpg
    (39.26 KB) 2006-11-29 09:29
      网络拓扑

    b. Freebsd6.1 的uipc_socket.c中没有#include "opt_nfsockopt.h" ,需手动添加否则编译将出错。
    vi /usr/src/sys/kern/uipc_socket.c
    找到#include "opt_compat.h"这一行,在下面加上 #include "opt_nfsockopt.h"
    c. 打ipvs for freebsd6.1补丁(patch)。
    Srv01# cd /usr/ports/net/ipvs
    Srv01# make patch-system         #具体说明可以查看当前目录下的Makefile
    d. 编译核心
    Srv01# cd /usr/src/sys/i386/conf
    Srv01# config LVS
    Srv01# cd ../compile/LVS
    Srv01# make depend
    Srv01# make
    Srv01# make install
    Srv01# reboot
    以上操作在srv02上同样做一遍
    三 具体配置
    CARP 部分 (如果只需双机备份功能只配这部分就可以了)
    SRV01
    srv01# sysctl net.inet.carp.preempt=1
    srv01# ifconfig carp0 create
    srv01# ifconfig carp0 vhid 1 pass password 192.168.2.144/24 up     #password随便输入,但srv01和srv02必需一致。
    SRV02
    srv02# sysctl net.inet.carp.preempt=1
    srv02# ifconfig carp0 create
    srv02# ifconfig carp0 vhid 1 advskew 100 pass yourpassword 192.168.2.144/24 up
    IPVS 部分
    srv01# kldload /boot/modules/ipvs.ko
    srv01# kldload /boot/modules/rr/ip_vs_rr.ko
    srv01# ipvsadm –A –t 192.168.2.144:80 -s rr
    srv01# ipvsadm -a -t 192.168.2.144:80 -r 192.168.2.133:80 -g
    srv01# ipvsadm -a -t 192.168.2.144:80 -r 192.168.1.130:80 –g
    srv01# ipvsadm –A –t 192.168.2.144:22 -s rr
    srv01# ipvsadm -a -t 192.168.2.144:22 -r 192.168.2.133:22 -g
    srv01# ipvsadm -a -t 192.168.2.144:22 -r 192.168.1.130:22 -g
    这里我只测试了http(80)和ssh(22)服务,其它的服务配置方法一样。
    以上操作在srv02上同样做一遍
    清除 IPVS配置命令如下:
    srv01# ./ipvsadm -C
    srv01# kldunload ip_vs_rr
    srv01# kldunload ipvs
    四 测试
    Srv01# ifconfig
    sk0: flags=8943 mtu 1500
            options=8
            inet6 fe80::217:31ff:fe62:be1b%sk0 prefixlen 64 scopeid 0x1
            inet 192.168.2.133 netmask 0xffffff00 broadcast 192.168.2.255
            ether 00:17:31:62:be:1b
            media: Ethernet autoselect (100baseTX )
            status: active
    plip0: flags=108810 mtu 1500
    lo0: flags=8049 mtu 16384
            inet6 ::1 prefixlen 128
            inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
            inet 127.0.0.1 netmask 0xff000000
    carp0: flags=49 mtu 1500
            inet 192.168.2.144 netmask 0xffffff00
            carp: MASTER vhid 1 advbase 1 advskew 0
    Srv02# ifconfig
    rl0: flags=8943 mtu 1500
            options=8
            inet6 fe80::217:31ff:fe62:be1b%sk0 prefixlen 64 scopeid 0x1
            inet 192.168.2.130 netmask 0xffffff00 broadcast 192.168.2.255
            ether 00:17:31:62:be:1b
            media: Ethernet autoselect (100baseTX )
            status: active
    plip0: flags=108810 mtu 1500
    lo0: flags=8049 mtu 16384
            inet6 ::1 prefixlen 128
            inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
            inet 127.0.0.1 netmask 0xff000000
    carp0: flags=49 mtu 1500
            inet 192.168.2.144 netmask 0xffffff00
            carp: BACKUP vhid 1 advbase 1 advskew 100
    从ifconfig结果可以看到srv01 为master,srv02为backup.
    IPVS 测试
    客户端访问
    http://192.168.2.144
    ,不停刷新web页面时,web页面会在srv01,srv02上切换(为使切换效果明显srv01,srv02用内容不同的主页),说明负载均衡功能已成功。
    客户端访问 192.168.2.144:22 (ssh) 每次连接一台不同Server(srv01,srv02)。
    CARP 测试
    用ssh 到 192.168.2.144 可以看到主机名应为 srv01 。
    在客户端上ping 192.168.2.144 –t 拔除 srv01 的网线,在丢失1个包后重新连通。
    再次ssh 到 192.168.2.144 可以看到主机名应为 srv02,并且srv02自动提升为Master。
    当重新连上srv02的网线时,srv02自动降为Backup。
    这时说明双机热备份功能已经成功。
    基于DNS的多机均衡负载的实现
    基于DNS的多机均衡负载的实现-
    前二天为一个客户添加了一台服务器。共同承担一个论坛的运作。但是。要实现负载均衡。的确是件难事。
    之前有试过几个方法,
    一、DNS轮值。。优点:简单实现。缺点:无法检测各个服务器的负荷。难控制访客的访问地址(一般DNS服务器都有缓存,所以。效果不明显)
    二、前台程序。。使用了一个类似Zeus Load Balancer的服务程序。在前台接受访问请求。再分流到各个实际的服务器。
    但以上二个方法都不太适用我的情况。。
    第一种。无法正确分配访客流量。。。常发生一台服务器的负荷很大。而另一台就很低。。。
    第二种。会占用更多的流量。资源也占用较大。 
    最好。我还是采用了一个DNS均衡负载的方法---lbname。
    它的主要效果介绍:
    一、基于perl的dns服务端。应用简单。
    二、自动检测各个服务器的负荷。然后再按结果优先分配DNS解析。
    三、DNS解析实时生效。不会被DNS服务器缓存。
    四、安装方法简单。。。
    lbname网页介绍
    http://www.stanford.edu/~schemers/docs/lbnamed/lbnamed.html
    http://www.stanford.edu/~riepel/lbnamed/


    下载:
    http://www.stanford.edu/~riepel/lbnamed/lbnamed-1.2.1.tar.gz
    http://www.stanford.edu/~schemers/dist/lb.tar
    .
    .
    下载包说明:
    内存数个目录
    1)lbcd的源代码。。。。lbcd是lbnamed所用到的服务器端检测服务器负荷程序。。每个需要均衡负荷的服务器都需要安装、运行它的。。。
    建议下载使用最新的lbcd编译包。
    http://www.stanford.edu/~riepel/lbnamed/lbcd-3.1.0.tar.gz
    之前的常有编译错误的。(这个也有的。嘻。)
    编译这个包时。常会出错的。如何成功安装。就看你的本事了。(编辑util.c第123行。在前面加上//)
    编译lbcd成功后。将它复制到/usr/sbin。那你就可以运行它了。。不用加什么参数了。(运行后要停止它就是lbcd -s)
    2)lbnamed的服务器程序perl..分有二个版本。一个是perl4.另一个是perl5.我是使用perl5的。所以用它来说明。
    进入perl5目录。。。。。先要配置好lbnamed和poller程序。
    说明一下:
      lbnamed程序是主程序。提供dns动态解析。严格来说。它已是一个dns服务器端程序了。
      poller是为lbnamed提供各个均衡服务器的负荷情况。(配合我们之前安装的lbcd程序使用)
      但二个程序可能都需要更改,请看程序第一行的perl程序地址。。改为你的perl地址。
      
      然后就需要更改程序的配置文件了。
      1,lbnamed.conf 要更改的地方有几个 
              一、$hostmaster = "schemers.leland.stanford.edu"; 将schemers.leland.stanford.edu改为你服务器的域名。。比如host.abc.com 这个无太大关系
              二、将所有stanford改为你域名的中段(比如bendy.com,就改为bendy),将所有edu改为域名的后缀(比如bendy.com,就改为com)。。这个很重要。。我建议不要更改best。当然你也可以改
      2,sweet.config 这个文件可以是用其它文件名的,具体在lbnamed.conf有设置。我建议大家先清空这文件。再重新建立新的。
              这个文件的配置方法是
              负荷服务器host 负重 组
              比如。我自己的情况。有二台服务器。分别是bbs1.bendy.com和bendy2.bendy.com那我的配置文件就是
             
              bbs1 1 bbs
              bbs2 1 bbs
             
              配置好这个文件后。你需要一个能对bbs1这个域名进行解析的方法。就是修改/etc/hosts文件。我的情况就是
              192.168.1.1 bbs1
              192.168.1.2  bbs2
             
              这样的话。poller程序就会检测111.222.333.001、111.222.333.002的负荷情况了
      
      至此,DNS服务器和均衡负载的服务器的程序已完成。可能我的说明不太清楚。现在我就一一列表说明
      
      bbs1服务器 lbserver1 192.168.1.1  编译运行lbcd   
      bbs2服务器 lbserver2 192.168.1.2  编译运行lbcd
      dns服务器 dnsserver 10.0.0.1     配置lbnamed 在/etc/hosts配置bbs1、bbs2域名解析
      
      这样的情况下。。在dns服务器运行lbnamed程序。系统就开始动作了。。lbnamed的启动参数主要是 -l logfile和-d(debug)
      ./lbnamed -l lb.log -d
      查看记录(类似)
      cat lb.log
      
      -=====
      05/30 00:59 21442 lbnamed starting poller
    05/30 00:59 21442 lbnamed load_config
      loading 1452 bbs2 192.168.1.2 bbs
      loading 837 bbs1 192.168.1.1 bbs
    05/30 00:59 21442 lbnamed ready to answer requests
    05/30 00:59 21442 lbnamed do_maint
    05/30 00:59 21442 lbnamed reloading config
    05/30 00:59 21442 lbnamed load_config
      loading 1671 bbs2 192.168.1.2 bbs
      loading 1086 bbs1 192.168.1.1 bbs
    如果你没有那些记录。看文件sweet.config.unreach这是代表poller程序无法接收到对方服务器的负荷信息。。请检查lbcd程序是否运行。。
    如果程序运行正常。那你的DNS服务器就正常运行了。
    如果检查程序是否正常。。。用我们的nslookup就可以了。。。
       
    C:\Documents and Settings\Administrator.XINGKONG-SERVER>nslookup
    Default Server:  ns.guangzhou.gd.cn
    Address:  202.96.128.143
    > server 10.0.0.1                                   //直接使用dns服务器
    Default Server:  [10.0.0.1]
    Address:  10.0.0.1
    > set type=all                                      //设置查询类型
    > bbs.best.bendy.com                                //bbs是sweet.config设置的组名,best.bendy.com是在lbnamed.conf设置的
    Server:  [10.0.0.1]
    Address:  10.0.0.1
    bbs.best.bendy.com      canonical name = bbs2.bendy.com        //返回的信息。是DNS系统分配了bbs2给你这次的查询(按二台服务器返回的负荷情况来分配的,并非随便分配的)
    bbs2.bendy.com  internet address = 192.168.1.2                 //而bbs.bendy.com在该在DNS系统的A记录是192.168.1.2//最后结果bbs.best.bendy.com得到的IP 地址是192.168.1.2
    ====
    自此。。服务器方面的配置已经完成。
    跟着是我们配置具体域名的dns解析。。。
    方法也是很简单,以bendy.com为例,在bendy.com的DNS管理加上以下记录
    一、加上二个best.bendy.com的ns记录为ns1.bendy.com和ns2.bendy.com(也可以不止二个的.取决你有多少台服务器运行lbnamed
    二、加上第一条添加的ns记录的实际指向iP,分别指向各个运行lbnamed的服务器,比如ns1.bendy.com address 10.0.0.1/ns2.bendy.com address 10.0.0.2等。
    三、添加bbs1.bendy.com和bbs2.bendy.com等的实际ip地址。。。正如刚才所说...bbs.best.bendy.com只 将DNS记录转移为bbs1.bendy.com或者bbs2.bendy.com。而lbnamed是没权对bbs1.bendy.com和 bbs2.bendy.com进行解析的。。。所以。需要bendy.com的NAMESERER对它进行解析。
    (ps:bbs1.bendy.com的记录并不一定要求与lbnamed程序的相同。。。)
    四、最后。。添加bbs.bendy.com cname to bbs.best.bendy.com。。。哈哈。。。大功告成。。。
    DNS解析完成后,我们就完成本次任务了。。。。
    小弟的表达能力有限。如有什么不明白的地方。请到
    http://www.discuz.net/forumdisplay.php?fid=34&page=1
    这里发表意见
    讲到负载均衡,几乎所有地方都必须要讲一下基于DNS的方式,因为这实在是最基本、最简单的方式了。当然,也几乎所有地方都说到这种方式的种种缺点,不过,既然很基本,就还是要说明一下。
    下面这段讲得很清楚:
    最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。
    DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。当使用DNS负载均衡的时候,必须尽量保证不同的 客户计算机能均匀获得不同的地址。由于DNS数据具备刷新时间标志,一旦超过这个时间限制,其他DNS服务器就需要和这个服务器交互,以重新获得地址数 据,就有可能获得不同IP地址。因此为了使地址能随机分配,就应使刷新时间尽量短,不同地方的DNS服务器能更新对应的地址,达到随机获得地址,然而将过 期时间设置得过短,将使DNS流量大增,而造成额外的网络问题。DNS负载均衡的另一个问题是,一旦某个服务器出现故障,即使及时修改了DNS设置,还是 要等待足够的时间(刷新时间)才能发挥作用,在此期间,保存了故障服务器地址的客户计算机将不能正常访问服务器。
    尽管存在多种问题,但它还是一种非常有效的做法,包括Yahoo在内的很多大型网站都使用DNS。
    引自:
    负载均衡技术研究
          原文:
    http://www.ha999.com/loadbalance/lb_tech.htm
    比较一下DNS方式与专业的负载均衡软件如
    PCL负载均衡软件
    ,会发现DNS的问题在于,一是往往不能根据系统与服务的状态来判断负载,二是往往不能建立较复杂的负载均衡算法,而最主要的是DNS往往有缓存,简单分配负载问题不大,如果是应用集群这个就是无法接受的。
    那么,为什么象Yahoo在内的大型网站都使用DNS方式呢?因为对于门户网站来讲,应用形态单一且简单,重要的是服务器数量与分布,而如果出现短时 间对于少量用户的服务中断问题并不大(比如有100台服务器,有一台不行了,即使DNS有缓存,也关系不大,用户重新刷一下,就很可能又分配到其他机器上 了)。
    但是,对于应用系统而言,比如两三台服务器,跑着比较复杂的应用,DNS方式就完全不适合了,这个时候,就要用专业的负载均衡软件了。
    我们可以看一个实例,这样会对专业化负载均衡软件应该支持什么样的应用有更多的理解:
    36000人同时应用的负载均衡实例
    先看看什么是URL重定向:
    "简单的说,如果一个网站有正规的URL和别名URL,对别名URL进行重定向到正规URL,访问同一个网址,或者网站改换成了新的域名则把旧的域名重定向到新的域名,都叫URL重定向"
    http://www.focuschina.com/service/host_faq.php
    "很多网络协议都支持“重定向”功能,例如在HTTP协议中支持Location指令,接收到这个指令的浏览器将自动重定向到Location指明的另一个URL上。"
    http://sysapp.51cto.com/art/200604/25388.htm
    这种方式,对于简单的网站,如果网站是自己开发的,也在一定程度上可行.但是它存在着较多的问题:
    1、“例如一台服务器如何能保证它重定向过的服务器是比较空闲的,并且不会再次发送Location指令,Location指令和浏览器都没有这方面的支持能力,这样很容易在浏览器上形成一种死循环。”
    2、在哪里放LOCATION,也是一个问题。很有可能用户会访问系统的很多个不同URL,这个时候做起来会非常麻烦。并且,对URL的访问,有的时候是直接过来的,可以被重定向,有的时候是带着SESSION之类的,重定向就可能会出问题。并且,这种做法,将负载均衡这个系统级的问题放到了应用层,结果可能是麻烦多多。
    3、这种方式一般只适用于HTTP方式,但是实际上有太多情况不仅仅是HTTP方式了,特别是用户如果在应用里面插一点流媒体之类的。
    4、重定向的方式,效率远低于IP隧道。
    5、这种方式,有的时候会伴以对服务器状态的检测,但往往也是在应用层面实现,从而实时性大打折扣。
    实际上,这种方式是一种“对付”的解决方法,并不能真正用于企业级的负载均衡应用(这里企业级是指稍微复杂一点的应用系统)
    可以看一下专业的负载均衡软件是如何来实现的:
    http://www.ha999.com/pcl/pcl_sis_theory.htm
    对比一下可以发现,专业的负载均衡软件要更适用于正规应用,而重定向方式则比较适用于一些简单的网站应用。
    实际上,实现负载均衡,使用象F5这样的专业设备是一种方式,而使用软件方式是另外一种方式.
    现在比较一下两种方式.
    基于硬件的方式,能够直接通过智能交换机实现,处理能力更强,而且与系统无关,这就是其存在的理由.但其缺点也很明显:
    首先是贵,这个贵不仅是体现在一台设备上,而且体现在冗余配置上.很难想象后面服务器做一个集群,但最关键的负载均衡设备却是单点配置,一旦出了问题就全趴了.
    第二是对服务器及应用状态的掌握:硬件负载均衡,一般都不管实际系统与应用的状态,而只是从网络层来判断,所以有时候系统处理能力已经不行了,但网络可能还来得及反应(这种情况非常典型,比如应用服务器后面内存已经占用很多,但还没有彻底不行,如果网络传输量不大就未必在网络层能反映出来)。
    所以硬件方式更适用于一大堆设备、大访问量、简单应用。
    软件方式,其实也分多种情况,这里只讲一下典型的专业负载均衡软件。看了硬件方式的不足就比较容易理解专业负载均衡软件的优点了:
    首先是基于系统与应用的负载均衡,能够更好地根据系统与应用的状况来分配负载。这对于复杂应用是很重要的。
    第二是性价比,实际上如果几台服务器,用F5之类的绝对是杀鸡用牛刀(而且得用两把牛刀),而用软件就要合算得多,因为服务器同时还可以跑应用。
    因此,象比如几台应用服务器的情况(而不是简单的网页应用),显然基于软件方式要合理得多。
    大概是以前这种专业的负载均衡软件很难找到,所以大家不太关注这方面吧,不过现在应该已经有这方面的产品了,比如:
    PCL负载均衡软件

    看一下专业的负载均衡软件是什么样的:
    PCL负载均衡软件
    详细内容,大家可以自己去看。简单讲,专业负载均衡软件大概有以下特点:
    1、它是基于IP隧道的,而不是象URL重定向方式那样。所以,它是独立于应用的
    2、它支持不同平台,即应用可以是基于LINUX,WINDOWS或SOLARIS的,而不是象LVS只能在LINUX上
    3、它是实时的,这点与DNS方式有极大的差别。
    4、它能够根据系统、应用的情况来决定负载,这一点与硬件负载均衡设备有很大差别。
    5、专业负载均衡软件,适用于企业级应用,无论从其可靠性,还是从其服务保障上,都不是象LVS那样的开源软件可比的。
    总结一下,如果是象YAHOO那样的网站应用,可以考虑DNS方式,参见:
    负载均衡软件实现方式之二 - 基于DNS
    如果是特别简单的应用,可以考虑URL重定向方式,参见:
    负载均衡软件实现方式之一 - URL重定向方式
    如果是不太重要的纯LINUX应用,可以考虑LVS,参见:
    负载均衡软件实现方式之三 - LVS
    如果是重要、流量大、应用简单、预算充足的情况,可以考虑硬件方式(比如用F5)(一定要做双机啊!),参见:
    软件与硬件负载均衡的比较
    而如果是重要的企业应用,两台或几十台服务器,应用比较复杂,包括有可能跨平台,则应该考虑专业的负载均衡软件。参见:
    PCL负载均衡软件-应用集群的理想选择

    网友留言/评论

    我要留言/评论