基于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月) 开源的一个容器编排引 ...
随机推荐
- Python记录_day21 模块
引入模块的方式: 1. import 模块 2. from xxx import 模块 一.collections 模块 1.Counter() counter是一个计数器,主要用来计数,计算一个字符 ...
- hbase知识
HBASE是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统 HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据. HBASE ...
- java使用线程设置定时任务
private static int a=0; public static void main( String[] args ) { timer(); } public static void tim ...
- win10下使用python访问vmbox中的redis
了解到redis没有windows的官方支持,所以在vmbox中的ubuntu装了redis#在ubuntu中 #搜索redis相关软件信息 apt-cache search ^redis #不清楚为 ...
- JSON 对象 与 字符串 互转
$sui = [ 'xixixi' => 'suisuisui', 'hahaha' => 'longlonglong', ]; $data = json_encode($sui); pr ...
- java继承,final,super,Object类,toString,equals,
Java中的内部类:成员内部类静态内部类方法内部类匿名内部类 内部类的主要作用如下: 1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2. 内部类的方法可 ...
- jQuery html5Validate基于HTML5表单 异步服务器端验证
1. HTML5 自带的Validate 很漂亮,很好用, 但是一定要在form里用submit按钮,才生效 <form id="frmInfo" action=" ...
- :after 写三角形 border
.tooltip:after { content: ''; position: absolute; border: 6px solid #5190ac; border-color: #5190ac t ...
- C#调用接口返回json数据中含有双引号 或其他非法字符的解决办法
这几天,调用别人接口返回json数据含有特殊符号(双引号),当转换成json对象总是报错, json字符格式如下 { "BOXINFO":[ { ", "ITE ...
- linux下iostat命令详解
iostat用于输出CPU和磁盘I/O相关的统计信息 iostat语法 用法:iostat [ 选项 ] [ <时间间隔> [ <次数> ]] 常用选项说明: -c:只显示系统 ...