有时我的 NodeBalancer 会将某个节点从轮换中移除,我想了解该节点,以便重新启动它。我该怎么做?
背景如下:
我有两个相同类型的网站,它们都运行 CPU 密集型应用程序。其中一个网站运行在单个 VPS 上,每天大约执行 3000 次(每次执行需要 5-50 秒),而对于另一个网站,我安装了一个 NodeBalancer,其下有 9 个节点。每个节点执行的负载大约是单个 VPS 的 40-60%。
这一切实际上都运行良好,几乎没有任何中断,但大约每周一次,一个节点停止响应 NodeBalancer 并退出轮换。这通常与非常高的 CPU 使用率有关。现在 - 这种情况从未发生在单个 VPS 上(它已经运行了一年,没有中断或重启)。
所以就像我说的 - 在负载平衡节点上我确实有中断(虽然我运行 99% 相同的脚本和软件),我想找出节点何时退出旋转,这样我就可以重新启动它并让它再次启动并运行。
目前我的解决方法是按照 Linode 发来的邮件操作,这些邮件会提醒我 CPU 使用率过高。在某些情况下,如果节点确实处于非活动状态,我会手动重启。
答案1
一种有点幼稚的方法是让节点服务页面 example.com/node.html,为每个节点返回不同的结果(例如数字 1-9)。然后从外部计算机不断请求该页面(例如每秒一次)。您应该在一定时间间隔(例如一分钟)后从所有服务器收到或多或少随机的结果(系列),然后脚本可以在此之后检查所有数字是否存在,如果缺少节点,则调用 Linode 的 API 来重新启动它。
比这更简单,您是否可以轻松地检查节点本身是否正在接收 Web 请求(来自“netstat”、防火墙、日志等,您甚至可以检查负载均衡器的主机名作为来源),如果不是,是否意味着 LB 已将其退出轮换?
答案2
在互联网上进一步搜索后,发现 Linode 有一个命令行界面,允许人们在节点以及 NodeBalancers 上执行各种操作。
这将帮助我通过执行如下简单命令自动重新启动关闭的节点:
linode restart My-Linode-Label
它还允许我通过执行以下操作列出在 NodeBalancer 上处理流量的所有节点:
linode nodebalancer node-list mynodebalancer 80
我将检查这是否确实为我提供了节点状态或仅显示活动节点并更新答案。这似乎是我正在寻找的解决方案,因为它包含更多我将来最有可能想要的操作,例如启动新节点等。
CLI 可以在 github 上找到https://github.com/linode/cli
更新:此 CLI 确实以名称、状态和地址的简单输出形式向我提供了节点平衡器下每个节点的状态。我可以轻松运行此脚本。
看起来我只需要添加一些 perl 模块就可以了!难以置信 Linode 支持人员竟然不知道这一点……