我正在开发一些 Web 服务,其 AAA 由 Debian 上的 FreeRADIUS + MySQL 实现。
我现在正在处理的问题是 RADIUS 的 HA 和可扩展性。如果 FreeRADIUS 机器或 MySQL 机器发生故障,则会导致整个服务中断。
我已查看了以下白皮书:
http://www.mysql.com/why-mysql/white-papers/mysql_wp_ha_auth_account.php
http://www.mysql.com/why-mysql/white-papers/mysql_wp_scaling_web_databases.php
现在我有以下一组问题:
- 据我所知,两个 FreeRADIUS 服务器可以使用相同的 MySQL 数据库而不会“破坏”其完整性,对吗?如果是这样,这种设置的性能缺陷是什么?
- 什么应该冗余以实现存档 HA?是 FreeRADIUS 服务器本身还是仅仅是其 MySQL 数据存储,或者两者兼而有之?什么应该冗余以实现存档可扩展性?
- 如果RADIUS服务器增多,如何实现互联网上分布的Web服务器的负载均衡?
- 如何在互联网上分发 MySQL 集群?(我应该使用复制并将两个集群成员留在同一个本地网络中吗?
答案1
- 确实可以将多个 FreeRadius 服务器连接到 MySQL 集群,这将为您提供双方的 HA(Radius 和 SQL)
- 至于问题 2。您需要创建一个至少包含 2 台机器的 MySQL 集群,同时您还需要至少 2 台安装了 FreeRadius 的机器。显然,您可以在每台机器上安装 2 台同时安装 MySQL 和 FreeRadius 的机器,这取决于您的安装大小与客户端数量。
- 这很大程度上取决于您的 Radius 客户端的实现方式,它是否支持多台服务器?它是否支持权重或优先级?
- MySQL 有许多构建集群的选项,为此,我建议参考 MySQL Cluster 白皮书并选择最适合您需求的选项。
答案2
- 使用 radius 服务器不应破坏数据的完整性。只有接收请求的 radius 服务器才会执行适当的身份验证/记账查询。此外,如果需要,可以使用 DB 级别的锁定。
- 为了提供冗余,需要复制 radius 服务器和 mysql DB。
- 您需要在 radius 服务器之前安装一些负载均衡器。这必须是基于 UDP 的负载均衡器。您可以考虑的另一个选项是负载平衡请求手动来自您的服务(例如,您可以随机挑选多个 IP 中的一个并将其用作 radius 服务器)。这取决于您的服务实现。