我的舵服务器运行良好,但每隔 5 分钟左右,我就会被踢出 HTML 会话,并且会出现“Rudder 正在加载,请等待”屏幕。过一段时间后,我就可以正常使用它了。
我该如何阻止这种行为发生?
答案1
Rudder 在服务器上有一个配置规则,规定“rudder 服务器必须启动并可访问。如果不是,请尝试重新启动它”。默认情况下,代理每 5 分钟检查一次规则。
http://localhost:8080/rudder/api/status
通过访问 URL并期望以 200 OK 状态显示“OK”文本响应来检查规则。
因此,为了验证问题是否与该规则有关,您可以尝试在 Rudder 服务器上以 root 身份执行以下命令:
$ /var/rudder/cfengine-community/bin/cf-agent -KI
检查输出中是否有类似这样的内容:
2014-10-07T10:06:03+0200 info: /default/root_component_check/methods/'any'/default/generic_alive_check/commands/'/usr/bin/curl -s http://localhost:8080/rudder/api/status |/bin/grep -q OK'[0]: Executing 'no timeout' ... '/usr/bin/curl -s http://localhost:8080/rudder/api/status |/bin/grep -q OK'
2014-10-07T10:06:03+0200 error: /default/root_component_check/methods/'any'/default/generic_alive_check/commands/'/usr/bin/curl -s http://localhost:8080/rudder/api/status |/bin/grep -q OK'[0]: Finished command related to promiser '/usr/bin/curl -s http://localhost:8080/rudder/api/status |/bin/grep -q OK' -- an error occurred, returned 1
2014-10-07T10:06:03+0200 info: /default/root_component_check/methods/'any'/default/generic_alive_check/commands/'/usr/bin/curl -s http://localhost:8080/rudder/api/status |/bin/grep -q OK'[0]: Completed execution of '/usr/bin/curl -s http://localhost:8080/rudder/api/status |/bin/grep -q OK'
R: @@server-roles@@result_error@@server-roles@@server-roles-directive@@0@@Check rudder status@@None@@2014-10-07 08:06:02+00:00##root@#The http://localhost:8080/rudder/api/status web application failed to respond for the second time. Restarting jetty NOW !
如果是,请在 Rudder 重新启动后手动执行以下命令:
curl -v -X GET http://localhost:8080/rudder/api/status
如果未能返回“HTTP/1.1 200 OK”和“OK”,则说明存在某些因素阻碍测试成功。最可能的情况是:
- 您是否更改了配置文件中的“rudder.rest.allowNonAuthenticatedUser”值/opt/rudder/etc/rudder-web.properties? 如果不想改变其他东西,必须将其设为“true”。
- 您是否有一些从本地主机到其自身的防火墙过滤连接?
- 也许是因为 IPv6 本地主机无法正确解析。
对于最后一种情况:Java 尽力在 IPv4 上使用 IPv6,因此如果在 /etc/hosts 中有:
::1 localhost
这可能会导致问题。尝试将其更改为:
::1 ip6-localhost
并检查是否有如下一行:
127.0.0.1 localhost