最近在做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. mac使用迁移助理迁移数据之后homestead无法打开

    1. 错误大致如下: here was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling Vir ...

  2. 5月30---6月2 DedeCMS以及动态仿站

    什么是DedeCMS 织梦内容管理系统(DedeCMS),是一个集内容发布.编辑.管理检索等于一体的网站管理系统(Web CMS),他拥有国外CMS众多特点之外,还结合中国用户的需要,对内容管理系统概 ...

  3. element-ui table中排序 取消表格默认排序问题

    sortTable  设置为 custom 一定要设置在列上

  4. python-flask-请求源码流程

    启动先执行manage.py 中的    app.run() class Flask(_PackageBoundObject): def run(self, host=None, port=None, ...

  5. sqlite3 查询表

    cx = sqlite3.connect("c:/数据库地址") # 打开数据库cu = cx.cursor()# query the tablerows = cu.execute ...

  6. DBMS_ROWID定位数据行物理存储位置

    对于Oracle中的堆表,我们可以通过oracle内置的ROWID伪列得到对应行记录所在的ROWID的值(注意,这个ROWID只是一个伪列,实际的块中并不存在该列).然后我们可以通过DBMS_ROWI ...

  7. Liunx下安装jdk7

    一. 查询系统中是否有安装过jdk: #  rpm -qa | grep java 查询到有安装,使用命令卸载: #  rpm -e --nodeps java-1.6.0-openjdk-1.6.0 ...

  8. Ubuntu中安装deb包程序

    deb是Debian Linux的安装格式,跟Red Hat Linux的rpm非常相似,最基本的安装命令是:dpkg -i file.deb dpkg 是Debian Package的简写,是为De ...

  9. 通过配置hosts.allow和hosts.deny文件允许或禁止ssh或telnet操作

    1.登录主机,如果是普通账户先切换至root账号 su root 2.编缉/etc/hosts.allow文件 vi /etc/hosts.allow 允许内容 书写格式(改成自自需要的IP或IP段) ...

  10. Tomcat指定JDK路径(Linux+Windows)

    当系统有多套JDK,不方便在系统配统一的JAVA_HOME时,我们可能想给tomcat指定JDK路径. 1.Linux下Tomcat指定JDK路径 找到$CATALINE_HOME/bin/catal ...