基于centos的freeradius高可用lvs(UDP)
最近在做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)的更多相关文章
- Keepalived之高可用LVS集群
前文我们聊了下keepalived的邮件通知相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13645163.html:今天我们来说说keepalive ...
- 基于Consul的数据库高可用架构【转】
几个月没有更新博客了,已经长草了,特意来除草.本次主要分享如何利用consul来实现redis以及mysql的高可用.以前的公司mysql是单机单实例,高可用MHA加vip就能搞定,新公司mysql是 ...
- 美团点评基于MGR的CMDB高可用架构搭建之路【转】
王志朋 美团点评DBA 曾在京东金融担任DBA,目前就职于美团点评,主要负责金融业务线数据库及基础组件数据库的运维. MySQL Group Replication(以下简称MGR),于5.7.17版 ...
- 基于nginx+xxl-job+springboot高可用分布式任务调度系统
技术.原理讲解: <分布式任务调度平台XXL-JOB--源码解析一:项目介绍> <分布式任务调度平台XXL-JOB--源码解析二:基于docker搭建admin调度中心和execut ...
- 基于docker实现redis高可用集群
基于docker实现redis高可用集群 yls 2019-9-20 简介 基于docker和docker-compose 使用redis集群和sentinel集群,达到redis高可用,为缓存做铺垫 ...
- 七、Hadoop3.3.1 HA 高可用集群QJM (基于Zookeeper,NameNode高可用+Yarn高可用)
目录 前文 Hadoop3.3.1 HA 高可用集群的搭建 QJM 的 NameNode HA Hadoop HA模式搭建(高可用) 1.集群规划 2.Zookeeper集群搭建: 3.修改Hadoo ...
- LVS + Keepalived + Nginx基于DR模式构建高可用方案
在大型网站中一般服务端会做集群,同时利用负载均衡器做负载均衡.这样有利于将大量的请求分散到各个服务器上,提升网站的响应速度.当然为了解决单点故障的问题,还会做热备份方案.这里演示利用LVS做负载均衡器 ...
- 也不知怎么了LVS.SH找不到,网上搜了一篇环境搭配CENTOS下面的高可用 参考
系统环境: ************************************************************ 两台服务器都装了 CentOS-5.2-x86_64 系统 Vir ...
- 基于Containerd安装部署高可用Kubernetes集群
转载自:https://blog.weiyigeek.top/2021/7-30-623.html 简述 Kubernetes(后续简称k8s)是 Google(2014年6月) 开源的一个容器编排引 ...
随机推荐
- css 选择器三
2.4.10 浮动 浮动是css里面布局最多的一个属性,也是很重要的一个属性. float:表示浮动的意思.它有四个值. none: 表示不浮动,默认 left: 表示左浮动 right:表示右浮动 ...
- 6月4 Smarty练习增删改
练习Smarty的增删改所需要用到的数据库名称:timu,xuanxiang,kemu,nandu,leixing,然后使用smarty模板将前端后后台分割开来: 主页后台页面:zhupm.php & ...
- stl中的transform()注意其与for_each的不同点(有无返回值)
#include<iostream> using namespace std; #include"vector" #include"algorithm&quo ...
- maven中 install的install:install的区别
如果一个项目,你想安装jar包到本地仓库,可能会报The packaging for this project did not assign a file to the build artifact ...
- Mac下配置/使用GitHub
一.配置1. 查看是否有id_rsa.pub文件:cd ~/.ssh 2. 如果没有id_rsa.pub文件,执行如下命令来生成id_rsa.pub文件: ssh-keygen -t rsa -C & ...
- python目录和文件操作
一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 要操作目录,必须引入os模块 import os1.得到当前工作目录,即当前Python脚本工作的目录路径: os ...
- 牛客网第一场E题 Removal
链接:https://www.nowcoder.com/acm/contest/139/E 来源:牛客网 Bobo has a sequence of integers s1, s2, ..., sn ...
- 自签名证书说明——自签名证书的Issuer和Subject是一样的。不安全的原因是:没有得到专业SSL证书颁发的机构的技术支持?比如使用不安全的1024位非对称密钥对,有效期设置很长等
一般的数字证书产品的主题通常含有如下字段:公用名称 (Common Name) 简称:CN 字段,对于 SSL 证书,一般为网站域名:而对于代码签名证书则为申请单位名称:而对于客户端证书则为证书申请者 ...
- Linux修改用户密码有效期
linux默认用户的密码是永不过期的,但是出于安全考虑在企业环境中一般会要求设置过期日期:但有时要求90天就过期,在这种严柯条件下我们有可能想给某个或某些用户开设后门,延长其密码有效期. 一.用户密码 ...
- 动态规划入门——数字三角形(Java)
动态规划的概念对于新手来说枯燥难懂,就算看懂了,做题的时候依旧抓耳挠腮的毫无头绪,这些比较难理解的算法,还是需要根据例子来一步步学习和理解,从而熟练掌握,下面,咱们就通过一个简单的小例子来学习动态规划 ...