• 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

    1. #!/bin/bash
    2. # chkconfig: - 95 50
    3. # description: Config realserver lo and apply noarp
    4. #2019年12月23日 wendianfei upload
    5. #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"
    6. #Then,You need to confirm that the program is configured to start automatically. "chkconfig realserver on"
    7. VIPS="10.21.17.97"
    8. OLD_VIPS=`/sbin/ip a show dev lo |grep 'global'|awk '{print $4}'`
    9. . /etc/rc.d/init.d/functions
    10. start() {
    11. for VIP in $VIPS
    12. do
    13. ifconfig lo:`echo $VIP|awk -F. '{print $3"-"$4}'` $VIP netmask 255.255.255.255 broadcast $VIP
    14. /sbin/route add -host $VIP dev lo:`echo $VIP|awk -F. '{print $3"-"$4}'`
    15. done
    16. echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    17. echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
    18. echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
    19. echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
    20. echo "RealServer Start: [ OK ]"
    21. }
    22. stop() {
    23. for VIP in $OLD_VIPS
    24. do
    25. ifconfig lo:`echo $VIP|awk -F. '{print $3"-"$4}'` down
    26. route del $VIP >/dev/null 2>&1
    27. done
    28. echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    29. echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
    30. echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
    31. echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
    32. echo "RealServer Stoped: [ OK ]"
    33. }
    34. case "$1" in
    35. start)
    36. start
    37. ;;
    38. stop)
    39. stop
    40. ;;
    41. restart)
    42. stop
    43. start
    44. ;;
    45. *)
    46. echo "Usage: $0 {start|stop|restart}"
    47. exit 1
    48. esac
    49. 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配置

    1. ### Config file keepalived LVS
    2. global_defs {
    3. router_id LVS_Server_1
    4. script_user root
    5. enable_script_security
    6. }
    7. vrrp_instance LVS_1 {
    8. state MASTER #备的为BACKUP
    9. interface ens192
    10. virtual_router_id 151
    11. priority 150 #主的大于备的
    12. advert_int 2
    13. authentication {
    14. auth_type PASS
    15. auth_pass wdf.com
    16. }
    17. virtual_ipaddress {
    18. 10.21.17.97
    19. }
    20. }
    21. virtual_server_group dns-udp-53 {
    22. 10.21.17.97 53
    23. }
    24. virtual_server group dns-udp-53 {
    25. delay_loop 5
    26. lb_algo wrr
    27. lb_kind DR
    28. protocol UDP
    29. real_server 10.21.17.60 53 {
    30. weight 10
    31. MISC_CHECK {
    32. misc_path "/root/check_dns.sh 10.21.17.60"
    33. misc_timeout 10
    34. misc_dynamic
    35. }
    36. }
    37. real_server 10.21.17.61 53 {
    38. weight 10
    39. MISC_CHECK {
    40. misc_path "/root/check_dns.sh 10.21.17.61"
    41. misc_timeout 10
    42. misc_dynamic
    43. }
    44. }
    45. }

    备:keepalive配置

    1. ## Config file keepalived LVS
    2. global_defs {
    3. router_id LVS_Server_1
    4. script_user root
    5. enable_script_security
    6. }
    7. vrrp_instance LVS_1 {
    8. state BACKUP
    9. interface ens192
    10. virtual_router_id 151
    11. priority 80
    12. advert_int 2
    13. authentication {
    14. auth_type PASS
    15. auth_pass wdf.com
    16. }
    17. virtual_ipaddress {
    18. 10.21.17.97
    19. }
    20. }
    21. virtual_server_group dns-udp-53 {
    22. 10.21.17.97 53
    23. }
    24. virtual_server group dns-udp-53 {
    25. delay_loop 5
    26. lb_algo wrr
    27. lb_kind DR
    28. protocol UDP
    29. real_server 10.21.17.60 53 {
    30. weight 10
    31. MISC_CHECK {
    32. misc_path "/root/check_dns.sh 10.21.17.60"
    33. misc_timeout 10
    34. misc_dynamic
    35. }
    36. }
    37. real_server 10.21.17.61 53 {
    38. weight 10
    39. MISC_CHECK {
    40. misc_path "/root/check_dns.sh 10.21.17.61"
    41. misc_timeout 10
    42. misc_dynamic
    43. }
    44. }
    45. }

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

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

  • 相关阅读:
    TRex学习之旅三
    linux驱动.之 网络udp应用层测试工具demon(一)
    使用Tornado进行网络异步编程
    java集合之常用集合类——list集合
    亚马逊频繁扫号下的跨境电商,跨境电商卖家应该何去何从?
    [附源码]Python计算机毕业设计Django电商小程序
    jekins相关资料
    ShowMeAI —— Show u 三连
    leecode |美化数组的最小删除个数
    【无标题】
  • 原文地址:https://blog.csdn.net/qq_26711103/article/details/128092839