DNS负载均衡

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介:
  昨天一直在测试DNS轮询,在CU上看到了有人推荐lbnamed然后就 google了一下,搜到很多文章,不是文章太老,根本不试用,就是些的很烂,让人摸不到头脑,写的不详细,让人会晕,我语言表达能力也不好,我尽量来写详细一下,写明了一些。首先声明我是在内网测试与公网会有些不同!如果你是公网就要申请域名解析服务~

域名: ludy.com

域名解析服务: ns1.ludy.com  //公网的话,要去你的域名服务商去申请的

software : bind-9.5.0-P2.tar.gz  lbcd-3.3.0.tar.gz   lbnamed-2.3.2.tar.gz  Stanford-DNSserver.tar.gz
bind9 服务器:192.168.6.3
lbnamed 服务器:192.168.6.105
web1           :192.168.6.101
web2           :192.168.6.102

安装步骤:

一.分别在两台 web服务器上安装 lbcd-3.3.0.tar.gz
tar zxvf lbcd-3.3.0.tar.gz
cd lbcd-3.3.0
./configure --prefix=/usr/local/lbcd
make
make install 
运行 lbcd 不需要任何参数
/usr/local/lbcd/sbin/lbcd 
二.安装配置 bind9
1.安装域名服务器 bind9
tar zxvf bind-9.5.0-P2.tar.gz
cd bind-9.5.0-P2
 ./configure --prefix=/usr/local/bind --enable-threads --enable-largefile --disable-openssl-version-check --disable-ipv6
make 
make install
2.配置bind9
因为我是在内网作测试,不是合法的 域名解析服务,所以我要欺骗bind 修改/etc/hosts
vim /etc/hosts
192.168.6.3     ns1.ludy.com

cd /usr/local/bind
sbin/rndc-confgen > etc/rndc.conf
生成rndc控制命令的key文件
cd etc
tail -10 rndc.conf |head -9|sed s/#\//g > named.conf
生成 named.conf
dig > named.root
生成named.root 文件

建立 正向 localhost.zone
vim localhost.zone

$TTL 86400
$ORIGIN localhost.
@    1D    IN    SOA    @    root (
           42    ;serial
           3H    ;refresh
           15M    ;retry
           1W    ;expiry
           1D )    ;minimum
    1D    IN    NS    @
    1D    IN    A    127.0.0.1

建立named.local反向解析文件

$TTL    86400
@    IN    SOA    localhost.    root.localhost. (
            2008121617    ;Serial
            28800        ;Refresh
            14400        ;Retry
            3600000        ;Expire
            86400 )        ;Minimum
    IN    NS    localhost.
1    IN    PTR    localhost.   ;不要忘记此处有点

建立  ludy.com 正向解析文件

vim ludy.com

$TTL 300
$ORIGIN ludy.com.
@    IN    SOA    ns1.ludy.com.      root.ludy.com. (
            2008041001    ;serial number YYMMDDNN
            28800        ;Refresh
            7200        ;Retry
            864000        ;Expire
            300 );        ;Min TTL
ludy.com.    IN    NS    ns1.ludy.com.
best.ludy.com.    IN    NS    ns1.ludy.com. ;是为lbnamed 准备的
ns1        IN    A    192.168.6.3
ludy.com.    IN    MX    10 mail.ludy.com.
ludy.com.    IN    A    192.168.6.3
mail        IN    A    192.168.6.188
www1        IN    A    192.168.6.101   ; web服务器1
www2        IN    A    192.168.6.102   ; web服务器2
www        IN    CNAME    [url]www.best.ludy.com.[/url] ;是为lbnamed 准备的

因为我之需要 域名解析服务,所以我就不建反向解析了 

配置 named.conf 

 key "rndc-key" {
     algorithm hmac-md5;
     secret "uKQKHQrih/M81kiqkwy62g==";
 };
 
 controls {
     inet 127.0.0.1 port 953
         allow { 127.0.0.1; } keys { "rndc-key"; };
 };
options {
    directory "/usr/local/bind/etc/namebd";
    forwarders { 192.168.6.105; };
    notify no;
    pid-file "/usr/local/bind/var/run/named.pid";
    auth-nxdomain no;
    version "server 2008 dns 8.0";
    blackhole { none; };
    allow-recursion{ any; };
    #设置允许查询IP列表。
    listen-on port 53 {192.168.6.3;};
    #如果是双IP可以指定其中一个IP,作为服务当然双网卡也可以用
    max-cache-size 50M;       #设置缓存大小
    allow-query { any; };
    #允许递归查询的IP列表,也就是自己的域名列表中没有要查询的DNS,可以转发到转发器
    allow-transfer { 192.168.6.3/24; 127.0.0.1/8; };
    #transfer 是主辅DNS服务器之间域名zone数据传输许可
};
zone "." in {
    type hint;
    file "/usr/local/bind/etc/named.root";
};
zone "localhost" in {
    type master;
    file "/usr/local/bind/etc/localhost.zone";
};
zone "0.0.127.in-addr.arpa" in {
    type master;
    file "/usr/local/bind/etc/named.local";
    allow-update { none; };
};
zone "ludy.com" in {
    type master;
    file "/usr/local/bind/etc/ludy.com";
    allow-update { none; };
};

配置完成 可以启动 bind9了
/usr/local/bind/sbin/named -g 可以看到启动日志,如果有错误 在慢慢排查,一般都是那里空格没有加或者是 没有加 “.”
在 web1 web2 lbnamed 服务器的 /etc/resolv.conf 都改为
vim /etc/resolv.conf
nameserver 192.168.6.3
然后作测试  nslookup ns1.ludy.com
Server:        192.168.6.3
Address:    192.168.6.3#53

Name:    ns1.ludy.com
Address: 192.168.6.3
好 bind9 OK,下面来安装 重要的 lbnamed
三,安装 lbnamed
tar zxvf  lbnamed-2.3.2.tar.gz
mv lbnamed-2.3.2 /usr/local/lbnamed
cd /usr/local/lbnamed
配置 lbnamed.config
mv lbnamed.config lbnamed.config.bak
vim lbnamed.config
www1.ludy.com    10    www   
www2.ludy.com    10    www    

www        5    0    [url]www.best.ludy.com[/url]

注意,如果想把哪台服务器设置为优先负载的话,就把 默认的 10改低就优先分到哪台服务器了。

配置 lbnamed  我之列出我修改的地方~
vim lbnamed
$poller               = "/usr/local/lbnamed/poller";
$poller_config        = "/usr/local/lbnamed/lbnamed.config";
$hostmaster           = "best.ludy.com";
@servers              = qw(ns1.ludy.com);

$ns->add_static("best.ludy.com",  T_SOA, $soa);
$ns->add_static("best-a.ludy.com",  T_SOA, $soa);

$ns->add_dynamic("best.ludy.com" => \&handle_lb_request);
$ns->add_dynamic("best-a.ludy.com" => \&handle_lb_request);

$ns->add_static("localhost.best.ludy.com",T_A,rr_A(0x7f000001));
$ns->add_static("localhost.best-a.ludy.com",T_A,rr_A(0x7f000001));


foreach (@servers) {
    $ns->add_static("best.ludy.com",   T_NS, rr_NS($_));
    $ns->add_static("best-a.ludy.com",   T_NS, rr_NS($_));


好保存退出

执行 
./lbnamed -l 1.log -d -h 192.168.6.105
-l 是 日志  -d  debug  -h 是 监听IP 地址(本机器地址)

netstat -ant
tcp        0      0 192.168.6.105:53        0.0.0.0:*               LISTEN     
启动成功~
四,测试
在  web1 , web2 上 分别执行

nslookup [url]www.ludy.com[/url]
Server:        192.168.6.3
Address:    192.168.6.3#53

[url]www.ludy.com   [/url] canonical name = [url]www.best.ludy.com.[/url]
[url]www.best.ludy.com   [/url] canonical name = www1.ludy.com.
Name:    www1.ludy.com
Address: 192.168.6.101

都返回的是  www1.ludy.com

好的 看下 lbnamed 服务器 
cd /usr/local/lbnamed
ls

1.log     README        lbnamed.config.lb       lbnamed.config  slbcd
LBCD.pm   lbnamed       lbnamed.config.status   lbnamed.rc
Makefile  lbnamed.config  lbnamed.config.unreach  poller

多了三个文件 lbnamed.config.lb       lbnamed.config.status   lbnamed.config.unreach

查看 lbnamed.config.unreach  如果 为空说明两台 web的lbcd都 执行了,都从两台服务器上 获取了 负载信息。下来我们把 lbnamed.config 
的 www2.ludy.com   10       www
默认的 10 该低一点 改为5
vim lbnamed.config
www1.ludy.com   10      www
www2.ludy.com   5       www


www             5       0       [url]www.best.ludy.com[/url]

在 其中一台web 服务器上 测试 

root@fdfs:/home/ludy# nslookup [url]www.ludy.com[/url]
Server:        192.168.6.3
Address:    192.168.6.3#53

[url]www.ludy.com   [/url] canonical name = [url]www.best.ludy.com.[/url]
[url]www.best.ludy.com   [/url] canonical name = www2.ludy.com.
Name:    www2.ludy.com
Address: 192.168.6.102

到这里就 结束了。

提几点要 注意的地方  就是  lbnamed 服务器 web1 web2的服务器 一定要保证  三台服务器的   /etc/resolv.conf
namedserver  地址一定要是  bind9的地址。

如果有什么问题 在问我  呵呵 ~~



本文转自Deidara 51CTO博客,原文链接:http://blog.51cto.com/deidara/120811,如需转载请自行联系原作者

相关文章
|
3月前
|
负载均衡 算法 Java
Spring Cloud全解析:负载均衡算法
本文介绍了负载均衡的两种方式:集中式负载均衡和进程内负载均衡,以及常见的负载均衡算法,包括轮询、随机、源地址哈希、加权轮询、加权随机和最小连接数等方法,帮助读者更好地理解和应用负载均衡技术。
102 2
|
27天前
|
缓存 负载均衡 监控
slb基于DNS的负载均衡
slb基于DNS的负载均衡
73 8
|
25天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
56 3
|
27天前
|
负载均衡 Java 持续交付
深入解析微服务架构中的服务发现与负载均衡
深入解析微服务架构中的服务发现与负载均衡
61 0
|
4月前
|
负载均衡 网络协议 应用服务中间件
如何配置 DNS 轮询负载均衡以实现高可用性
如何配置 DNS 轮询负载均衡以实现高可用性
368 4
|
4月前
|
负载均衡 网络协议 安全
解析网络流量管理方案:简化基于云的DNS负载均衡
解析网络流量管理方案:简化基于云的DNS负载均衡
107 1
|
5月前
|
负载均衡 Java API
Feign 进行rpc 调用时使用ribbon负载均衡源码解析
Feign 进行rpc 调用时使用ribbon负载均衡源码解析
83 11
|
5月前
|
弹性计算 负载均衡 网络协议
云计算中的弹性伸缩与负载均衡技术解析
【7月更文挑战第4天】弹性伸缩与负载均衡作为云计算平台中的两大关键技术,对于构建高可用、可扩展的应用系统具有重要意义。通过合理利用这两种技术,企业可以灵活应对不断变化的业务需求,降低运营成本,提高资源利用效率。未来,随着技术的不断进步和应用的深入,弹性伸缩与负载均衡技术将在更多领域发挥重要作用,推动云计算技术的持续发展。
|
7月前
|
域名解析 缓存 运维
【域名解析DNS专栏】DNS解析策略:如何实现负载均衡与故障转移
【5月更文挑战第23天】DNS在互联网中扮演关键角色,将域名转换为IP地址。本文探讨DNS的负载均衡和故障转移技术,以增强服务可用性和性能。负载均衡包括轮询(简单分配流量)和加权轮询(按服务器处理能力分配)。故障转移通过主备策略和TTL值实现快速切换,确保服务连续性。实践案例展示了在电商网站如何应用这些策略。DNS策略优化可提升网站速度和稳定性,借助云服务和智能工具,DNS管理更加高效。
687 1
【域名解析DNS专栏】DNS解析策略:如何实现负载均衡与故障转移
|
5月前
|
负载均衡 监控 安全
解析Java中的服务治理与负载均衡
解析Java中的服务治理与负载均衡

相关产品

  • 云解析DNS
  • 推荐镜像

    更多