设为首页 收藏本站
查看: 1027|回复: 0

[经验分享] DNS部署(四)之lvs+keepalived+bind架构高可用负载均衡DNS系统

[复制链接]

尚未签到

发表于 2018-12-30 11:28:45 | 显示全部楼层 |阅读模式
  1、网络拓扑
  
  2、环境描述

系统描述IP地址作用
LB-master192.168.1.105主备负载均衡器(同时做web和DNS调度)
LB-backup192.168.1.106
DNS-master192.168.1.107VIP:192.168.1.30(LVS DNS节点互为主辅同步)
DNS-backup192.168.1.108
Web节点组192.168.1.201-203VIP:192.168.1.40(LVS web节点)
  3、配置LVS调度器keepalived的配置文件
  keepalived配置双vrrp instance,分别为:WEB实例和DNS实例。
  3.1 主LVS上keepalived的配置文件内容:
  [root@lvs-M ~]#cat /etc/keepalived/keepalived.conf
  ! ConfigurationFile for keepalived
  global_defs {
  notification_email {
  acassen@firewall.loc
  failover@firewall.loc
  sysadmin@firewall.loc
  }
  notification_email_fromAlexandre.Cassen@firewall.loc
  smtp_server 192.168.200.1
  smtp_connect_timeout 30
  router_id lvs_105
  }
  vrrp_instance VI_WEB {
  state MASTER
  interface eth0
  virtual_router_id 51
  priority 100
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 1111
  }
  virtual_ipaddress {
  192.168.1.40/24
  }
  }
  #############LVSWEB################
  virtual_server 192.168.1.40 80 {
  delay_loop 6
  lb_algo rr
  lb_kind DR
  nat_mask 255.255.255.0
  #  persistence_timeout 50
  protocol TCP
  real_server 192.168.1.201 80 {
  weight 100
  TCP_CHECK {
  connect_timeout 8
  nb_get_retry 3
  delay_before_retry 3
  connect_port 80
  }
  }
  real_server 192.168.1.202 80 {
  weight 100
  TCP_CHECK {
  connect_timeout 8
  nb_get_retry 3
  delay_before_retry 3
  connect_port 80
  }
  }
  real_server 192.168.1.203 80 {
  weight 100
  TCP_CHECK {
  connect_timeout 8
  nb_get_retry 3
  delay_before_retry 3
  connect_port 80
  }
  }
  }
  #############DNSInstance start###############
  vrrp_instance VI_DNS {
  state BACKUP
  interface eth0
  virtual_router_id 52
  priority 90
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 1111
  }
  virtual_ipaddress {
   192.168.1.30/24
  }
  }
  ###########LVSDNS#######################
  virtual_server 192.168.1.30 53 {
  delay_loop 6
  lb_algo rr
  lb_kind DR
  nat_mask 255.255.255.0
  # persistence_timeout 50
  protocol UDP
  real_server 192.168.1.107 53 {
  weight 100
  TCP_CHECK {
  connect_timeout 8
  nb_get_retry 3
  delay_before_retry 3
  connect_port 53
  }
  }
  real_server 192.168.1.108 53 {
  weight 100
  TCP_CHECK {
  connect_timeout 8
  nb_get_retry 3
  delay_before_retry 3
  connect_port 53
  }
  }
}
  3.2 备LVS上keepalived的配置文件内容:
[root@lvs-S ~]#cat /etc/keepalived/keepalived.conf  ! ConfigurationFile for keepalived
  global_defs {
  notification_email {
  acassen@firewall.loc
  failover@firewall.loc
  sysadmin@firewall.loc
  }
  notification_email_fromAlexandre.Cassen@firewall.loc
  smtp_server 192.168.200.1
  smtp_connect_timeout 30
  router_id lvs_106
  }
  vrrp_instance VI_WEB {
  state BACKUP
  interface eth0
  virtual_router_id 51
  priority 90
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 1111
  }
  virtual_ipaddress {
   192.168.1.40/24
  }
  }
  #############LVSWEB################
  virtual_server 192.168.1.40 80 {
  delay_loop 6
  lb_algo rr
  lb_kind DR
  nat_mask 255.255.255.0
  #  persistence_timeout 50
  protocol TCP
  real_server 192.168.1.201 80 {
  weight 100
  TCP_CHECK {
  connect_timeout 8
  nb_get_retry 3
  delay_before_retry 3
  connect_port 80
  }
  }
  real_server 192.168.1.202 80 {
  weight 100
  TCP_CHECK {
  connect_timeout 8
  nb_get_retry 3
  delay_before_retry 3
  connect_port 80
  }
  }
  real_server 192.168.1.203 80 {
  weight 100
  TCP_CHECK {
  connect_timeout 8
  nb_get_retry 3
  delay_before_retry 3
  connect_port 80
  }
  }
  }
  #############DNS Instancestart###############
  vrrp_instance VI_DNS {
  state MASTER
  interface eth0
  virtual_router_id 52
  priority 100
  advert_int 1
  authentication {
  auth_type PASS
  auth_pass 1111
  }
  virtual_ipaddress {
   192.168.1.30/24
  }
  }
  ###########LVSDNS#######################
  virtual_server 192.168.1.30 53 {
  delay_loop 6
  lb_algo rr
  lb_kind DR
  nat_mask 255.255.255.0
  # persistence_timeout 50
   protocol UDP
  real_server 192.168.1.107 53 {
  weight 100
  TCP_CHECK {
  connect_timeout 8
  nb_get_retry 3
  delay_before_retry 3
  connect_port 53
  }
  }
  real_server 192.168.1.108 53 {
  weight 100
  TCP_CHECK {
  connect_timeout 8
  nb_get_retry 3
  delay_before_retry 3
  connect_port 53
  }
  }
}
  4、配置LVS节点服务器脚本(WEB节点与DNS节点都要配置)
  4.1 DNS节点的配置内容(主备DNS都有配置):
[root@dns-M ~]# cat /etc/init.d/dns_rs.ctl  #!/bin/bash
  . /etc/init.d/functions
  VIP=192.168.1.30
  case "$1" in
  start)
  echo "start LVS of Realserver DR mode"
  /sbin/ifconfig lo:0 ${VIP} netmask 255.255.255.255 up
  route add -host ${VIP} dev lo
  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
  ;;
  stop)
  /sbin/ifconfig lo:0 ${VIP} netmask 255.255.255.255 down
  route del -host ${VIP} dev lo
  echo "stop LVS of Realserver DR mode"
  echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
  echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
  echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
  ;;
  *)
  echo "Usage: $0 {start|stop}"
  exit 1
  esac
  4.1.1 对上面的脚本赋予权限
  [root@dns-S init.d]# chmod +x dns_rs.ctl
  

  4.2 WEB节点的配置内容(web的所有节点都有配置)
[root@web1 ~]# cat /etc/init.d/web_rs.ctl  #!/bin/bash
  . /etc/init.d/functions
   VIP=192.168.1.40
  case "$1" in
  start)
  echo "start LVS of Realserver DR mode"
  /sbin/ifconfig lo:0 ${VIP} netmask 255.255.255.255 up
  route add -host ${VIP} dev lo
  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
  ;;
  stop)
  /sbin/ifconfig lo:0 ${VIP} netmask 255.255.255.255 down
  route del -host ${VIP} dev lo
  echo "stop LVS of Realserver DR mode"
  echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
  echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
  echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
  ;;
  *)
  echo "Usage: $0 {start|stop}"
  exit 1
  esac
  4.2.1 对上面的脚本赋予权限
[root@web1 init.d]# chmod +x web_rs.ctl


  5、主DNS服务器的区域配置文件修改如下:
  
[root@dns-M ~]# cat /var/named/chroot/var/named/pp.org.zone  $TTL   86400
  @               IN SOA  dns.pp.org.       root.pp.org. (
  203             ; serial (d. adams)
  3H              ; refresh
  15M             ; retry
  1W              ; expiry
  1D)            ; minimum
  IN NS           dns.pp.org.
  IN MX  10       mail.pp.org.
  dns.pp.org.     IN A            192.168.1.107
www             IN  A           192.168.1.40
  
  5.1 修改之后重启DNS服务
  [root@dns-M ~]# rndc reload
  server reload successful
  

  6、综合测试
  测试之前要启动相关服务(keepalived、lvs节点脚本、节点Apache、节点DNS服务器等)
  A:首先启动一台负载均衡调度器的keepalived服务
[root@lvs-M ~]# /etc/init.d/keepalived start  Starting keepalived:                                       [  OK  ]
  [root@lvs-M ~]# ip addr
  1: lo:  mtu16436 qdisc noqueue
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
  inet6 ::1/128 scope host
  valid_lft forever preferred_lft forever
  2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
  link/ether 00:0c:29:81:a8:b3 brd ff:ff:ff:ff:ff:ff
  inet 192.168.1.105/24 brd 192.168.1.255 scope global eth0
  inet 192.168.1.40/24 scopeglobal secondary eth0
      inet 192.168.1.30/24 scopeglobal secondary eth0
  inet6 fe80::20c:29ff:fe81:a8b3/64 scope link
  valid_lft forever preferred_lft forever
  3: sit0:  mtu 1480 qdisc noop
  link/sit 0.0.0.0 brd 0.0.0.0
  查看调度规则:
  
[root@lvs-M ~]# ipvsadm -L -n  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port          Forward Weight ActiveConn InActConn
  UDP 192.168.1.30:53 rr
  -> 192.168.1.108:53            Route   100    0         0
  -> 192.168.1.107:53            Route   100    0         0
  TCP 192.168.1.40:80 rr
  -> 192.168.1.203:80            Route   100    0         0
  -> 192.168.1.202:80            Route   100    0         0
-> 192.168.1.201:80            Route   100    0         0
  
  B.停掉和启用一台DNS服务,观察调度器
[root@dns-S slaves]# /etc/init.d/named stop
  Stoppingnamed:                                           [  OK  ]
  

  查看的日志内容:
  Oct 26 23:38:10 localhostKeepalived_healthcheckers: TCP connection to [192.168.1.108:53] failed !!!
  Oct 26 23:38:10 localhost Keepalived_healthcheckers:Removing service [192.168.1.108:53] from VS [192.168.1.30:53]
  观察lvs调度规则中少了192.168.1.108机器
[root@lvs-M ~]# ipvsadm -L -n  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port          Forward Weight ActiveConn InActConn
  UDP 192.168.1.30:53 rr
  -> 192.168.1.107:53            Route   100    0         0
  TCP 192.168.1.40:80 rr
  -> 192.168.1.203:80            Route   100    0         0
  -> 192.168.1.202:80            Route   100    0         0
  -> 192.168.1.201:80            Route   100    0         0
  

  再次启动回来,查看日志会发现又把对应的IP地址加入了进来!
  C.启动第二台负载均衡调度器的keepalived服务
[root@lvs-S ~]# /etc/init.d/keepalived start  Starting keepalived:                                       [  OK  ]
  

     此时DNS的VIP会分配到第二台负载均衡调度器上
  [root@lvs-S ~]# ip addr
  1: lo:  mtu16436 qdisc noqueue
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
  inet6 ::1/128 scope host
  valid_lft forever preferred_lft forever
  2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
  link/ether 00:0c:29:b5:be:19 brd ff:ff:ff:ff:ff:ff
  inet 192.168.1.106/24 brd 192.168.1.255 scope global eth0
  inet 192.168.1.30/24 scope global secondary eth0
  inet6 fe80::20c:29ff:feb5:be19/64 scope link
  valid_lft forever preferred_lft forever
  3: sit0:  mtu 1480 qdisc noop
link/sit 0.0.0.0brd 0.0.0.0


WEB的VIP仍然在第一台负载均衡调度器上!!
[root@lvs-M ~]#ip addr
1: lo: mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:81:a8:b3 brdff:ff:ff:ff:ff:ff
    inet 192.168.1.105/24 brd 192.168.1.255scope global eth0
    inet 192.168.1.40/24 scope global secondaryeth0
    inet6 fe80::20c:29ff:fe81:a8b3/64 scopelink
       valid_lft forever preferred_lft forever
3: sit0: mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0
  观察调度规则:

     [root@lvs-S ~]#ipvsadm -L -n
     IP VirtualServer version 1.2.1 (size=4096)
     ProtLocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
UDP  192.168.1.30:53 rr
  -> 192.168.1.108:53             Route  100    0         35  
  -> 192.168.1.107:53             Route   100   0         36
TCP  192.168.1.40:80 rr
  -> 192.168.1.203:80             Route   100   0          0
  -> 192.168.1.202:80             Route   100   0          0
  -> 192.168.1.201:80             Route   100   0          0


[root@lvs-M ~]#ipvsadm -L -n
IP VirtualServer version 1.2.1 (size=4096)
ProtLocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
UDP  192.168.1.30:53 rr
  -> 192.168.1.108:53             Route   100   0          0
  -> 192.168.1.107:53             Route   100   0          0
TCP  192.168.1.40:80 rr
  -> 192.168.1.203:80             Route   100   0          35
  -> 192.168.1.202:80             Route   100   0          36
  -> 192.168.1.201:80             Route   100   0          35
综上:主备调度器的keepalived服务都在工作!


注:bind9功能强大,这里只是讨论了最简单的配置!
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657542-1-1.html 上篇帖子: LVS/DR结合keepalived 下篇帖子: keepalived简单原理及配置参数介绍_2015101601
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表