• 幕客老师召集小伙伴
  • 运维高手36项修炼
  • python自动化运维项目实战
  • nginx从入门到实战
  • 阿里云与Centos7实战

keepalive+LVS(DR)实现DNS服务轮训

一、keepalived配置文件配置

! Configuration File for keepalived                                                                                                                                                                      

global_defs {
   notification_email {
   jeson@imoocc.com
   }
   notification_email_from jeson@imoocc.com
   smtp_server www.iaskjob.com
   smtp_connect_timeout 30
   router_id LVS_1
}

vrrp_instance VI_1 {
    interface em1
    state MASTER
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.4
    }
}
virtual_server 192.168.10.4 53 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
#    persistence_timeout 1             
    protocol UDP
    real_server 192.168.10.2 53{
         weight 1
         TCP_CHECK {
         connect_port 53
         connect_timeout 3
         nb_get_retry 3
         delay_before_retry 3
         }
    }
    real_server 192.168.10.3 53{
         weight 1
         TCP_CHECK {
         connect_port 53
         connect_timeout 3
         nb_get_retry 3
         delay_before_retry 3
         }
    }
}

二、启动lvs+dns群集

1.确认keepalived文件中的漂移IP为192.168.10.4

2.两个realserver上的lo:0子接口必须也要绑定漂移IP192.168.10.4,同时必须配置相关路由

3.DNS 使用的UDP协议,但健康检查的方式改为:TCP_CHECK,因为bind同样会监控TCP53端口

4.如果DNS服务器服务于机房所有服务器,那么需要考虑每个vlan地址段的机器都可以请求到,而不只是同vlan的地址。

Realserver中添加:

ifconfig lo:0 192.168.10.4 broadcast 192.168.10.4 netmask 255.255.255.255 up
route add -host 192.168.10.4 dev lo:0

 

arp抑制

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

sysctl -p 生效

 

注意:

arp抑制,加入到sysctl.conf中,服务器重启后,系统将默认覆盖。

三、关于arp抑制

想知道为什么?可以看我这篇文章。

www.imoocc.com/weblog/2017/09/14/lvsdrarp/​
 

 

四、扩展补充

感觉keepalive默认就是为了LVS而产生,TCP_CHECK、 UDP_CHECK这些都支持在LVS上

如:

 SSL_GET {                                    
 url {
 path /
 digest ff20ad2481f97b1754ef3e12ecd3a9cc  健康检查的索引  genhash  -s 192.168.10.138 -p 80 -u /测试文件名  即可得到

 }

 

1、同一个vip,多组服务端口

http://zh.linuxvirtualserver.org/node/2660

2、不同vip,不同网卡,多组服务

http://blog.chinaunix.net/uid-23916356-id-3506943.html

3、DR模式lvs和realserver不能在同一台服务器上

解决了:见博客

 

keepalive+LVS(DR)实现DNS服务轮训

Pingbacks已打开。

引用地址

暂无评论

发表评论