博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于centos的freeradius高可用lvs(UDP)
阅读量:5743 次
发布时间:2019-06-18

本文共 3694 字,大约阅读时间需要 12 分钟。

最近在做freeradius的高可用配置,使用lvs的vip做轮询:

  freeradius的配置见前面的文章;

  下面是lvs的keepalived的配置:

    global_defs {

      router_id LVS_DEVEL_TEST
    }

    vrrp_sync_group LVS_RA {

      group {
        VI_1
      }
    }

    vrrp_instance VI_1 {

      state MASTER    #主备
      interface eth0
      virtual_router_id 123   #局域网内的唯一标识
      priority 80    #优先级
      advert_int 3
      authentication {
        auth_type PASS
        auth_pass 1111
      }
      virtual_ipaddress { 
        x.x.x.x     #虚拟ip地址
      }
      debug
      }

      virtual_server x.x.x.x 1812 {    #虚拟ip地址 UDP端口

        delay_loop 6
        lb_algo sh    #调度算法
        lb_kind TUN    #lvs的转发模式
        protocol UDP     #UDP协议

        real_server x.x.x.x 1812 {   #real IP地址和UDP端口

          MISC_CHECK {     #MISC的检测方式

            misc_path "/data/shell/UDP_CHECK.sh x.x.x.x 1812"  #UDP的检测脚本如下
            misc_timeout 10 #脚本执行超时时间
            misc_dynamic
          }
         }

        real_server x.x.x.x 1812 {

          MISC_CHECK {
            misc_path "/data/shell/UDP_CHECK.sh x.x.x.x 1812"
            misc_timeout 10
            misc_dynamic
          }
        }

      }

  UDP检测脚本/data/shell/UDP_CHECK.sh:

     #!/bin/bash

     /usr/bin/nc -uz -w1 $1 $2 | grep succeeded > /dev/null
     exit $?

注意:freeradius和keepalived不能在一台服务器上,会对包的转发产生影响

  下面需要在real上绑定一下vip并且脚本需放到/etc/rc.d/init.d/目录底下,绑定脚本addVIP内容如下:

    #!/bin/bash

    IPADDR=(x.x.x.x)     //填写VIP地址
    NUM=`expr ${#IPADDR[*]} - 1`

 

    start_vip(){

      for i in `seq 0 $NUM`;do
        ifconfig lo:$i ${IPADDR[$i]} broadcast ${IPADDR[$i]} netmask 255.255.255.255 up
        route add -host ${IPADDR[$i]} dev lo:$i  
      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 "0">/proc/sys/net/ipv4/conf/all/rp_filter
        echo "0">/proc/sys/net/ipv4/conf/eth0/rp_filter
        echo "0">/proc/sys/net/ipv4/conf/lo/rp_filter
        echo "0">/proc/sys/net/ipv4/conf/default/rp_filter
        /sbin/sysctl -p >/dev/null 2>&1
    }

 

    stop_vip(){

        for i in `seq 0 $NUM`;do
          /sbin/route del -host ${IPADDR[$i]} dev lo:$i
          /sbin/ifconfig lo:$i ${IPADDR[$i]} broadcast ${IPADDR[$i]} netmask 255.255.255.255 down
        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 "0" >/proc/sys/net/ipv4/ip_forward
          echo "1">/proc/sys/net/ipv4/conf/all/rp_filter
          echo "1">/proc/sys/net/ipv4/conf/eth0/rp_filter
          echo "1">/proc/sys/net/ipv4/conf/lo/rp_filter
          echo "1">/proc/sys/net/ipv4/conf/default/rp_filter
          /sbin/sysctl -p >/dev/null 2>&1          //这里的文件不一定全部存在,主要看系统
    }

    case $1 in

      start|START)
        start_vip
        if [ $? == "0" ];then
          echo "setting vip success"
        else
          echo "setting vip fault"
        fi
        ;;
      stop|STOP)
        stop_vip
        if [ $? == "0" ];then
          echo "remove vip success"
        else
          echo "remove vip fault"
        fi
        ;;
      *)
        echo "Usage: $0 {start|stop}"
        exit 1
        ;;
    esac

在real上执行此脚本(前提是给定执行权限):#/etc/rc.d/init.d/addVIP  start  

  绑定效果如下;

  

  开启lvs服务器的keepalived服务,如果freeradius服务正常,则lvs看到效果如下:

  

 

最后找一台服务器用radius的测试命令radtest去测试吧!

  说明一下为什么需要在real服务器上绑定VIP:在 DR 模式下,由于 UDP 是无连接状态的,当 RS 回应结果时默认采用原先的地址,Client 在转发数据包时,源地址不是原先请求的 IP(VS IP),所以会存 在问题 。

 

转载于:https://www.cnblogs.com/qfdxxdr/p/6652030.html

你可能感兴趣的文章
【WebRTC音频预处理单元APM的整体编译及使用 - android】
查看>>
SpringMVC简单构造restful, 并返回json
查看>>
找出IO消耗较高的进程
查看>>
Oracle11g数据库迁移到Oracle12C的PDB(使用impdp/expdp)
查看>>
Linux上的Web服务调试工具-MitmProxy
查看>>
raid-1 镜像卷的创建
查看>>
A Vision for Making Deep Learning Simple
查看>>
正常流,dom树,css脱离文档流就不占据空间了吗?脱离文档流是不是指该元素从dom树中脱离?...
查看>>
ORACLE中date类型字段的处理
查看>>
dotlx实验
查看>>
SQL -- ifnull(sum(属性) vs 对象.属性)
查看>>
java.lang.Random误区
查看>>
初学者
查看>>
Secure Delivery Center快速入门指南(一):概述
查看>>
Kendo UI常用示例汇总(十三)
查看>>
Zend Studio使用教程:将应用程序部署到Zend Server(2/2)
查看>>
FR 参数为空时显示所有结果
查看>>
js中bind、call、apply函数的用法
查看>>
OC高效率52之多用GCD,少用performSelector系列方法
查看>>
sqoop导入关系型数据库-解密Sqoop
查看>>