我不知道如何面对具有挑战性的情况:按需唤醒服务器。
问题
当传入数据包到达时,唤醒监听特定端口的物理服务器。客户端和服务器之间可能存在控制器/中间件,但它不应影响带宽(并且对用户透明)。
主要目标:节省电力消耗。
我尝试过的方法
我在本次演示中尝试的设置适用于 Samba NAS 服务器。
preexec samba 命令 (自动 WoL 远程文件系统,文件服务器的透明网关): 该解决方案的目标是公开一个接受所有请求的前端 NAS,当用户想要访问特定共享时,preexec 命令将使用自定义脚本唤醒服务器。
- 优点:对已建立状态的用户透明
- 缺点:不通用,带宽受影响
防火墙唤醒:与上一个选项类似,但作用于传输层,针对请求的端口,防火墙将唤醒服务器。需要子网来伪装服务器。
- 优点:通用,对已建立状态的用户透明
- 缺点:带宽受影响,需要新的子网
远程视频服务器:基于负载平衡环境,目标是利用浮动 IP 地址。我设想修改 ipvs 堆栈(管理工具或者保持活跃) 通过在请求到达时实现唤醒服务器功能。这需要大量的工作和搜索,这就是为什么我更愿意看看是否还有其他解决方案 ;)
- 优点:通用,对已建立状态的用户透明,带宽不受影响
- 缺点:设置起来困难吗?
这是 NAS 服务器的一个示例,但我更喜欢采用优雅而通用的解决方案来解决这个问题。
有任何想法吗 ? :)
答案1
可能是最简单的解决方案,完全透明:
- 选择一个“WoL 服务器”:可以是一台微型信用卡计算机,也可以是一台现有机器上的服务 - 任何你可以运行数据包捕获并且可以使用(或多或少)专用 NIC 进行捕获的东西;可能你也可以使用适合编写脚本的路由器
- 在物理服务器的交换机上,配置从物理服务器端口到 WoL 服务器端口的端口镜像
- 在 WoL 服务器上,使用适当的过滤器运行数据包捕获 - 物理服务器 IP 的 ARP、HTTP 套接字的 SYN,...
- 在 WoL 服务器上,运行一个小脚本来监控捕获的数据包,并在命中时将 WoL 数据包发送到物理服务器
如果您使用更高层触发帧(如 HTTP 的 SYN),请不要忘记在上游路由器上添加静态 ARP 条目。