dns load balance

一:原理分析介绍:

1:用到的软件:

http://www.stanford.edu/~riepel/lbnamed/

lbnamed:负责别名到真实服务器的解析

poller:实现负载均衡的部分,从各个lbcd上获取服务器的信息来决定DNS解析的结果

lbcd:真实服务器上的负载状态检测

BIND---如果自己配置DNS可选。。

2:需要负载均衡的真实服务器上都应该装有lbcd

 3:lbnamed作为中转DNS负责将CNAME解析到集群中的单个真实服务器上。

整个过程是这样的:

实例域名:www.test.com  ,有两种选择,一种是采用DNS服务商提供的域名服务,另外的就是自己架设DNS服务器,因为之后有CNAME的解析以及每个集群服务器的A记录问题,因此如果条件允许还是单独建设DNS服务器,

                www.test.net
                     ||        ||    (1)
      alias www.best.test.net
              ||                      ||  (2)
    www1.test.net www2.test.net ...
                  ||               ||   (3)
          192.168.0.1   192.168.0.2
(1)的解析工作有单独的DNS服务器完成,(2)由lbnamed服务器完成解析,这步也是整个过程最关键的一步,这步解析的结果直接决定负载均衡的效果,(3)可以在/etc/hosts下指定对应的IP也可以用单独的DNS解析其A记录

二:实例制作:

  实验采用三台内核为2.4.21-47的linux pc,

192.168.0.1

192.168.0.2

192.168.0.3

lbnamed-2.3.2.tar.gz

lbcd-3.3.0.tar.gz

192.168.0.1作为lbnamed服务器。另外两台作为负载均衡的真实服务器

1:现在192.168.0.2和192.168.0.3上分本安装lbcd

  并不加任何参数运行。/usr/local/sbin/lbcd

2:在192.168.0.1上装 lbnamed

A:

cp poller /usr/sbin/poller

vi /etc/lbnamed.config

# Production www servers.
www1.test.net       10     www www-leland
www2.test.net       10     www www-leland
www3.test.net            10     www www-leland
www4.test.net       10     www www-leland
###############################################################################
# TTL, MX, and top slice factor -- THIS BLOCK MUST BE LAST
###############################################################################

# Pool name   TTL  Top slice  MX
# ----------  ---  ---------  ----------------------
www           5    0          www.best.test.net
www-leland    5    0          www.best.test.net
B:

在/etc/hosts中添加wwwN的A记录

192.168.0.2          www2.test.net

192.168.0.3           www3.test.net
C:

更改lbnamed,将test.net更换为自己的IP

vi lbnamed

***********************************************
$hostmaster           = "best.test.net";
@servers              = qw(lbdns1.test.net lbdns2.test.net);

******************************************************

$ns->add_static("best.test.net",  T_SOA, $soa);
$ns->add_static("www1.test.net",T_SOA, $soa);
$ns->add_static("www2.test.net",T_SOA, $soa);
$ns->add_static("www3.test.net",T_SOA, $soa);
$ns->add_static("www4.test.net",T_SOA, $soa);

$ns->add_dynamic("best.test.net"   => /&handle_lb_request);
$ns->add_dynamic("www1.test.net" => /&handle_lb_a_request);
$ns->add_dynamic("www2.test.net" => /&handle_lb_a_request);
$ns->add_dynamic("www3.test.net" => /&handle_lb_a_request);
$ns->add_dynamic("www4.test.net" => /&handle_lb_a_request);

$ns->add_static("localhost.best.test.net",  T_A,rr_A(0x7f000001));
$ns->add_static("localhost.www1.test.net",T_A,rr_A(0x7f000001));
$ns->add_static("localhost.www2.test.net",T_A,rr_A(0x7f000001));
$ns->add_static("localhost.www3.test.net",T_A,rr_A(0x7f000001));
$ns->add_static("localhost.www4.test.net",T_A,rr_A(0x7f000001));
/**************************************************************************

三:检查以及问题解决

在各个节点上启动lbcd后,再在192.168.0.1上启动lbnamed

./lbnamed -l 1.log -d

正常情况下cat 1.log 会有类似如下的记录:

08/09 12:40 4930 lbnamed do_reload
08/09 12:40 4930 lbnamed reloading config
08/09 12:40 4930 lbnamed www3.test.com participation in www is 1
08/09 12:40 4930 lbnamed www3.test.com participation in www-leland is 1
08/09 12:40 4930 lbnamed www2.test.com participation in www is 1
08/09 12:40 4930 lbnamed www2.test.com participation in www-leland is 1
08/09 12:40 4930 lbnamed www1.test.com participation in www is 1
08/09 12:40 4930 lbnamed www1.test.com participation in www-leland is 1
08/09 12:40 4930 lbnamed MX for www is www.best.test.com
08/09 12:40 4930 lbnamed MX for www-leland is www.best.test.com
08/09 12:40 4930 lbnamed load_config:
  loading 6780 10 www3.test.com 192.168.0.72 www www-leland
  loading 3000 10 www2.test.com 192.168.0.33 www www-leland
  loading 3000 10 www1.test.com 192.168.0.31 www www-leland
  loading www           5    0          www.best.test.com
  loading www-leland    5    0        www.best.test.com
注意:第二列的数字

  loading 6780 10 www3.test.com 192.168.0.72 www www-leland
  loading 3000 10 www2.test.com 192.168.0.33 www www-leland
  loading 3000 10 www1.test.com 192.168.0.31 www www-leland

poller将引导解析此数字较小的真实服务器。。意思就是:3000和6780.它会将请求解析到3000上

二相同的负载状况即两个3000.那么将交替解析上去。

另外内核的版本起到了很大的影响。建议将lbnamed和真实的负载均衡池中的服务器内核版本保持

尽可能的一致。否则负载均衡将无法进行或者出现莫名奇妙的问题,比如只解析到一个服务器上之类

 



展开阅读全文

没有更多推荐了,返回首页