当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > 基于DNS的多机均衡负载的实现

Unix/Linux
Linux crontab定时执行任务 命令格式与详细例子
linux 查看用户及用户组的方法
让Linux系统有效防御ARP攻击的实用技巧
Linux 常用软件列表
linux wget 一个强大的下载命令
linux 常用脚本、命令
linux 磁盘配额 简单介绍
Linux服务器架设笔记 Squid服务器配置
ubuntu intel 集成显卡安装
ubuntu 9.04 X3100 显卡开启3D特效
Ubuntu 8.10 Server Ruby 的安装方法
Ubuntu root帐户密码修改
ubuntu下apt-get 命令参数
Ubuntu Linux下实现QQ的三种方式
Ubuntu 8.04中建立PHP+MySQL环境
Ubuntu常用软件大全
Ubuntu系统下安装Aircrack-ng
Ubuntu实现FTP功能
ubuntu 字体美化实现方法
ubuntu下netbeans汉字显示残缺问题

Unix/Linux 中的 基于DNS的多机均衡负载的实现


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 52 ::
收藏到网摘: n/a

  基于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 2 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 bb