LVS+keepalive配置DNS的UDP53端口负载均衡

两台rs需要进行lvs相关配置我这里用脚本实现,对于后端RS无论tcpudp都是一样的。

将脚本放到/etc/init.d/ 下

赋予执行权限

chmod +x /etc/init.d/realserver

执行脚本

/etc/init.d/realserver restart

设置开机自启动

chkconfig realserver on

#!/bin/bash
# chkconfig: - 95 50
# description: Config realserver lo and apply noarp 
#2019年12月23日 wendianfei upload
#This VIPS can write more than two IP separated by spaces.for example:VIPS="10.10.10.10 10.10.10.11 192.168.1.10 192.168.1.11"
#Then,You need to confirm that the program is configured to start automatically. "chkconfig realserver on"
VIPS="10.21.17.97"
OLD_VIPS=`/sbin/ip a show dev lo |grep 'global'|awk '{print $4}'`

. /etc/rc.d/init.d/functions
start() {
      for VIP in $VIPS
      do
      ifconfig lo:`echo $VIP|awk -F. '{print $3"-"$4}'` $VIP netmask 255.255.255.255 broadcast $VIP
      /sbin/route add -host $VIP dev lo:`echo $VIP|awk -F. '{print $3"-"$4}'`
      done
      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
      echo "RealServer Start:                          [ OK ]"
}

stop() {
      for VIP  in $OLD_VIPS
      do
      ifconfig lo:`echo $VIP|awk -F. '{print $3"-"$4}'` down
      route del  $VIP  >/dev/null 2>&1
      done
      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 "RealServer Stoped:                         [ OK ]"
}


case "$1" in
    start)
         start
         ;;
    stop)
         stop
         ;;
    restart)
         stop
         start
         ;;
*)
      echo "Usage: $0 {start|stop|restart}"
      exit 1
esac

exit 0

配置完后端rs的lvs配置后,安装并配置keepalived服务端。

yum install -y keepalived.x86_64

yum install -y ipvsadm

接下来配置keepalive。

UDP和TCP的主要区别就是,keepalve本身支持TCP的检测,UDP的不行,所以UDP要用到

MISC_CHECK模块自己写脚本进行检测,keepalive服务认为,脚本返回值为0代表正常,返回值为1代表异常。我们的脚本可以只要能实现正常返回0,异常范围1即可,可以自由发挥。

###主keepavlie配置

### Config file keepalived LVS
global_defs {
   router_id LVS_Server_1
   script_user root
   enable_script_security
 }

vrrp_instance LVS_1 {
    state MASTER           #备的为BACKUP
    interface ens192
    virtual_router_id 151
    priority 150          #主的大于备的
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass wdf.com
    }
    
 virtual_ipaddress {
        10.21.17.97
    }
}


virtual_server_group dns-udp-53 {
    10.21.17.97 53
}

virtual_server group dns-udp-53 {
    delay_loop 5
    lb_algo wrr
    lb_kind DR
    protocol UDP

    real_server 10.21.17.60 53 {
        weight 10
        MISC_CHECK {
        misc_path "/root/check_dns.sh  10.21.17.60"
        misc_timeout 10
        misc_dynamic
        }
    }
    real_server 10.21.17.61 53 {
        weight 10
        MISC_CHECK {
        misc_path "/root/check_dns.sh  10.21.17.61"
        misc_timeout 10
        misc_dynamic
        }
    }


}

备:keepalive配置

## Config file keepalived LVS

global_defs {
   router_id LVS_Server_1
   script_user root
   enable_script_security
 }

vrrp_instance LVS_1 {
    state BACKUP
    interface ens192
    virtual_router_id 151
    priority 80
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass wdf.com
    }
    
 virtual_ipaddress {
        10.21.17.97
    }
}


virtual_server_group dns-udp-53 {
    10.21.17.97 53
}

virtual_server group dns-udp-53 {
    delay_loop 5
    lb_algo wrr
    lb_kind DR
    protocol UDP

    real_server 10.21.17.60 53 {
        weight 10
        MISC_CHECK {
        misc_path "/root/check_dns.sh  10.21.17.60"
        misc_timeout 10
        misc_dynamic
        }
    }
    real_server 10.21.17.61 53 {
        weight 10
        MISC_CHECK {
        misc_path "/root/check_dns.sh  10.21.17.61"
        misc_timeout 10
        misc_dynamic
        }
    }


}

下面附上我的dns服务检测的脚本:

#!/bin/bash
# Program:
#       check health
# History:
# 2022/11/25    wendianfei version:0.0.1
IP=$1  
count=$( /usr/bin/dig @$1 www.wdf.com| grep 192.168.66.1 | wc -l)
echo $count 
if [ ${count} -gt 0 ]
then
 
    exit 0
    
else
 
    exit 1
    
fi

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值