centos8安装部署RADIUS+MySQLPGSQL高可用架构实现

打印 上一主题 下一主题

主题 1667|帖子 1667|积分 5001

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
以下是针对中大型网络的 RADIUS+MySQL/PGSQL高可用方案 的完整实现,包含数据库集成、主备集群部署和Keepalived配置:

一、MySQL/PGSQL数据库集成(以MySQL为例)
1. 数据库服务器部署
# 在独立服务器上安装MySQL(建议至少2核4G配置)
sudo dnf install mariadb-server mariadb-backup -y
sudo systemctl enable --now mariadb
sudo mysql_secure_installation
 
# 创建RADIUS专用数据库
mysql -u root -p
CREATE DATABASE radius CHARACTER SET utf8mb4;
CREATE USER 'radius'@'%' IDENTIFIED BY 'StrongDBpass123!';
GRANT ALL ON radius.* TO 'radius'@'%';
FLUSH PRIVILEGES;
2. 导入FreeRADIUS数据库结构
bash
# 在RADIUS服务器实行
sudo mysql -u radius -p -h  radius < /etc/raddb/mods-config/sql/main/mysql/schema.sql
3. 配置FreeRADIUS SQL模块
bash
sudo vi /etc/raddb/mods-enabled/sql
修改以下关键参数:
ini
driver = "rlm_sql_mysql"
dialect = "mysql"
server = ""
port = 3306
login = "radius"
password = "StrongDBpass123!"
read_clients = yes
4. 数据库高可用方案(主从复制)
主库配置
bash
sudo vi /etc/my.cnf.d/server.cnf
添加:
[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = ROW
binlog_do_db = radius
从库配置
[mysqld]
server-id = 2
relay-log = mysql-relay-bin
read_only = ON
配置复制
-- 在主库实行
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'' IDENTIFIED BY 'ReplPass123!';
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS; -- 记录File和Position值
 
-- 在从库实行
CHANGE MASTER TO
  MASTER_HOST='',
  MASTER_USER='repl',
  MASTER_PASSWORD='ReplPass123!',
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=123456;
START SLAVE;

二、FreeRADIUS高可用集群(主备+Keepalived)
1. 架构计划
                   +-------------+
                   |  Keepalived |
                   |  VIP: 192.168.1.200
                   +------+------+
                          |
        +-----------------+-----------------+
        |                                   |
+-------+-------+                   +-------+-------+
|  RADIUS主节点 |                   |  RADIUS备节点 |
|  192.168.1.101|                   |  192.168.1.102|
+---------------+                   +---------------+
        |                                   |
        +----------------+------------------+
                        |
                 +------+------+
                 |  MySQL主从  |
                 +-------------+
2. 主备节点配置
全部RADIUS节点实行
# 安装FreeRADIUS和MySQL客户端
sudo dnf install freeradius freeradius-mysql mariadb
 
# 同一配置文件(通过rsync同步)
sudo rsync -avz /etc/raddb/ root@:/etc/raddb/
3. Keepalived配置
主节点 (/etc/keepalived/keepalived.conf):
vrrp_instance VI_RADIUS {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass Keep@live123
    }
    virtual_ipaddress {
        192.168.1.200/24 dev eth0
    }
    notify_master "/usr/local/bin/radius_failover.sh master"
    notify_backup "/usr/local/bin/radius_failover.sh backup"
}
备节点
vrrp_instance VI_RADIUS {
    state BACKUP
    priority 90
    # 其他配置与主节点相同
}
故障切换脚本 (/usr/local/bin/radius_failover.sh):
#!/bin/bash
case "$1" in
    master)
        systemctl start radiusd
        logger "RADIUS切换为主节点"
        ;;
    backup)
        systemctl stop radiusd
        logger "RADIUS切换为备节点"
        ;;
esac
4. 启动服务
bash
sudo systemctl enable --now keepalived
sudo systemctl start radiusd  # 仅在主节点启动

三、网络装备配置调整
全部装备将RADIUS服务器指向VIP:
cisco
! 思科装备
radius-server host 192.168.1.200 auth-port 1812 key RadiusSecret123
huawei
# 华为装备
radius-server template radius1
 radius-server shared-key cipher RadiusSecret123
 radius-server authentication 192.168.1.200 1812

四、运维监控方案
1. 状态检查脚本
#!/bin/bash
# 检查VIP是否正常
if ip addr show eth0 | grep -q "192.168.1.200"; then
    if ! systemctl is-active radiusd >/dev/null; then
        systemctl restart radiusd
    fi
fi
 
# 检查数据库复制状态
DB_SLAVE_STATUS=$(mysql -u root -p -e "SHOW SLAVE STATUS\G" | grep "Running:")
if [[ $DB_SLAVE_STATUS != *"Yes"* ]]; then
    echo "数据库复制非常!" | mail -s "RADIUS告警" admin@example.com
fi
2. 监控指标建议
监控项
阈值
告警方式
RADIUS进程状态
非active
企业微信/邮件
MySQL复制延迟
> 60秒
短信
认证请求成功率
< 95% (5分钟)
声光告警
VIP漂移事件
任何切换
日记记录
3. 备份策略
# 每日全量备份
0 2 * * * /usr/bin/mariabackup --backup --user=backup --password=B@ckup123 --target-dir=/backup/radiusdb/$(date +\%F)
 
# 配置文件备份
0 3 * * * tar czf /backup/radius_conf/radius_$(date +\%F).tar.gz /etc/raddb/ /etc/keepalived/

五、故障模拟测试
1. 主节点宕机测试
# 在主节点实行
sudo systemctl stop radiusd
sudo systemctl stop keepalived
 
# 验证:
# 1. VIP应在30秒内漂移到备节点
# 2. 备节点自动启动radiusd服务
# 3. 网络装备认证连续可用
2. 数据库主从切换测试
-- 在主库实行
STOP SLAVE;
RESET MASTER;
 
-- 在从库实行
STOP SLAVE;
RESET SLAVE ALL;
SET GLOBAL read_only = OFF;

六、安全加固建议

  • 通信加密
# 在全部RADIUS节点配置TLS
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/raddb/certs/server.key \
  -out /etc/raddb/certs/server.crt

  • 数据库访问控制
-- 限制访问IP
GRANT ALL ON radius.* TO 'radius'@'192.168.1.%' IDENTIFIED BY 'NewPass456!';

  • 审计日记
# 记录全部管理操作
sudo vi /etc/rsyslog.d/radius_admin.conf
添加:
:syslogtag, contains, "sudo" /var/log/radius_admin.log
& stop

该方案实现了:
<ol start="1">高性能:MySQL主从支持每秒1000+认证请求
高可用:主备切换时间
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

八卦阵

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表