阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

138次阅读
没有评论

共计 3795 个字符,预计需要花费 10 分钟才能阅读完成。

最近在 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  

绑定效果如下;

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

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

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

 

最后找一台服务器用 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

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计3795字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中