你好,游客 登录 注册 搜索
背景:
阅读新闻

基于CentOS的FreeRADIUS高可用LVS(UDP)

[日期:2017-04-02] 来源:Linux社区  作者:wangxue2 [字体: ]

最近在CentOS下做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),所以会存 在问题 。

下面再分享一些关于LVS知识的文档。

LVS集群类型简介  http://www.linuxidc.com/Linux/2016-12/138709.htm

《LVS手册》http://www.linuxidc.com/Linux/2016-03/129233.htm

LVS(Linux Virtual Server) 入门详解  http://www.linuxidc.com/Linux/2017-03/141929.htm

LAMP平台LVS负载均衡  http://www.linuxidc.com/Linux/2016-12/138748.htm

LVS + Keepalived 介绍及安装  http://www.linuxidc.com/Linux/2016-08/134791.htm

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-04/142446.htm

linux
相关资讯       freeradius  LVS高可用 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款