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

基于centos的freeradius高可用lvs(UDP)的更多相关文章

  1. Keepalived之高可用LVS集群

    前文我们聊了下keepalived的邮件通知相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13645163.html:今天我们来说说keepalive ...

  2. 基于Consul的数据库高可用架构【转】

    几个月没有更新博客了,已经长草了,特意来除草.本次主要分享如何利用consul来实现redis以及mysql的高可用.以前的公司mysql是单机单实例,高可用MHA加vip就能搞定,新公司mysql是 ...

  3. 美团点评基于MGR的CMDB高可用架构搭建之路【转】

    王志朋 美团点评DBA 曾在京东金融担任DBA,目前就职于美团点评,主要负责金融业务线数据库及基础组件数据库的运维. MySQL Group Replication(以下简称MGR),于5.7.17版 ...

  4. 基于nginx+xxl-job+springboot高可用分布式任务调度系统

    技术.原理讲解: <分布式任务调度平台XXL-JOB--源码解析一:项目介绍> <分布式任务调度平台XXL-JOB--源码解析二:基于docker搭建admin调度中心和execut ...

  5. 基于docker实现redis高可用集群

    基于docker实现redis高可用集群 yls 2019-9-20 简介 基于docker和docker-compose 使用redis集群和sentinel集群,达到redis高可用,为缓存做铺垫 ...

  6. 七、Hadoop3.3.1 HA 高可用集群QJM (基于Zookeeper,NameNode高可用+Yarn高可用)

    目录 前文 Hadoop3.3.1 HA 高可用集群的搭建 QJM 的 NameNode HA Hadoop HA模式搭建(高可用) 1.集群规划 2.Zookeeper集群搭建: 3.修改Hadoo ...

  7. LVS + Keepalived + Nginx基于DR模式构建高可用方案

    在大型网站中一般服务端会做集群,同时利用负载均衡器做负载均衡.这样有利于将大量的请求分散到各个服务器上,提升网站的响应速度.当然为了解决单点故障的问题,还会做热备份方案.这里演示利用LVS做负载均衡器 ...

  8. 也不知怎么了LVS.SH找不到,网上搜了一篇环境搭配CENTOS下面的高可用 参考

    系统环境: ************************************************************ 两台服务器都装了 CentOS-5.2-x86_64 系统 Vir ...

  9. 基于Containerd安装部署高可用Kubernetes集群

    转载自:https://blog.weiyigeek.top/2021/7-30-623.html 简述 Kubernetes(后续简称k8s)是 Google(2014年6月) 开源的一个容器编排引 ...

随机推荐

  1. CF1114E Arithmetic Progression

    给定一个打乱的等差数列,每次两种操作. 1.查询一个位置. 2.查询是否有比x大的数字. 一共60次操作. sol: 30次操作即可二分出首项. 剩下30次操作查询出30个位置然后两两做差取gcd即可 ...

  2. 使用saltui实现图片预览查看

    项目是基于dingyou-dingtalk-mobile脚手架的一个微应用,这个脚手架使用的UI是antd-mobile,它提供了一个图片上传的组件,但是未提供图片预览的组件,在网上找了不少如何在re ...

  3. hdu-4738-tarjin/割边

    http://acm.hdu.edu.cn/showproblem.php?pid=4738 求得是边权最小的割边,和求割点类似用tarjin,但要注意的是不能走从父亲过来的那一条边,在割点里那样理解 ...

  4. 使用spring-cloud-starter-bus-amqp做微服务配置刷广播,config-client配置 未刷新的 问题

    在需要配置刷新的(类或方法)上 加上 @RefreshScope 扩展:spring cloud:config-server中@RefreshScope的"陷阱"

  5. Git:标签管理

    1.创建标签 1.1切换需要打标签的分支 git checkout branch-name 1.2创建标签 git tag tag-name 1.3查看标签 git tag 1.4注意:打标签时默认在 ...

  6. Python的字典dict和set

    Python内置了字典:dict的支持,dict全称dictionary: 表达式为dict{key,value} 使用键值对来存储数据 eg: 使用dict来存储姓名和分数 d = {'bob':2 ...

  7. “reliable message”事件引发的思考

    今天无意间看到了“reliable message"事件,平时还真没深入研究过这个事件,于是,就收集资料并稍微研究了一下,以下是官方就该事件给出的说明: When you send a me ...

  8. PyCharm+Scrapy爬取安居客楼盘信息

    一.说明 1.1 开发环境说明 开发环境--PyCharm 爬虫框架--Scrapy 开发语言--Python 3.6 安装第三方库--Scrapy.pymysql.matplotlib 数据库--M ...

  9. Node.js编写be的流程(express)

    Node.js编写be的流程 1.当前项目目录下首先安装express 2.自动生成express插件结构 express -e 3.执行完前两步的效果      4.此时的package.json ...

  10. laravel的firstOrCreate的作用:先查找表,如果有就输出数据,如果没有就插入数据

    public function zan(Post $post){ $param=[ 'user_id'=>\Auth::id(), 'post_id'=>$post->id ] Za ...