linux udp轮询的方式,基于CentOS的FreeRADIUS高可用LVS(UDP)

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

绑定效果如下;

5dd80c4a0c7c7f50c9c111f86d3c0424.png

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

34ec2b394f1e4485c3dc8ea802392672.png

最后找一台服务器用radius的测试命令radtest去测试吧!

说明一下为什么需要在real服务器上绑定VIP:在 DR 模式下,由于 UDP 是无连接状态的,当 RS 回应结果时默认采用原先的地址,Client 在转发数据包时,源地址不是原先请求的 IP(VS IP),所以会存 在问题 。

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

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在CentOS 7系统上使用HAProxy和Keepalived实现UDP 73端口负载均衡可用的配置步骤: 1. 安装HAProxy和Keepalived ```bash yum install haproxy keepalived -y ``` 2. 配置HAProxy 编辑HAProxy配置文件`/etc/haproxy/haproxy.cfg`,添加如下内容: ```bash frontend udp_front bind *:73 # 监听UDP 73端口 default_backend udp_back backend udp_back balance roundrobin # 负载均衡策略为轮询 server server1 192.168.1.101:73 check # 后端服务器1 server server2 192.168.1.102:73 check # 后端服务器2 ``` 3. 配置Keepalived 编辑Keepalived配置文件`/etc/keepalived/keepalived.conf`,添加如下内容: ```bash global_defs { router_id haproxy } vrrp_instance VI_1 { state MASTER # 主节点为MASTER interface eth0 # 监听网卡 virtual_router_id 51 # 虚拟路由ID,同一物理网络内唯一 priority 101 # 主节点优先级较 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100/24 # 虚拟IP地址 } } virtual_server 192.168.1.100 73 { delay_loop 6 lb_algo rr # 负载均衡算法 lb_kind NAT persistence_timeout 60 protocol UDP real_server 192.168.1.101 73 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.1.102 73 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } ``` 4. 启动服务 启动HAProxy和Keepalived服务: ```bash systemctl start haproxy systemctl start keepalived ``` 5. 验证是否成功 在另外一台主机上使用`nc`命令测试UDP 73端口是否正常: ```bash nc -u 192.168.1.100 73 ``` 如果配置正确,应该能够顺利连接到其中一台后端服务器,实现UDP 73端口的负载均衡和可用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值