Amazon ELB 自动运行状况检查有什么作用以及它的期望是什么?

2023-12-23

事情是这样的:

  1. 我们已经实现了一个 C++ RESTful API 服务器,带有内置的 HTTP 解析器,并且没有像 apache 或任何类似的标准 HTTP 服务器
  2. 它已经在 Amazon 结构中使用了几个月,使用普通通信和 SSL 通信,并且没有发现与 Amazon 基础设施相关的问题
  3. 我们正在使用 Amazon ELB 部署我们的第一个后端
  4. Amazon ELB 有一个可定制的运行状况检查系统,但也是一个自动系统,如上所述here http://docs.amazonwebservices.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-healthcheck.html
  5. 我们没有找到有关健康检查系统发送哪些数据的文档
  6. 后端简单地挂在套接字读取指令上,最终关闭连接

我不是在寻找问题的解决方案,因为后端不是基于标准的 Web 服务器,只要有人知道 ELB 健康检查系统正在发送什么样的消息,因为我们没有找到有关此的文档,任何地方。

非常感谢您的帮助。谢谢。


Amazon ELB 具有可定制的健康检查系统,但也可作为 自动的,如上所述here http://docs.amazonwebservices.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-healthcheck.html

With 可定制您可能指的是通过 AWS 管理控制台配置的运行状况检查(请参阅配置健康检查设置 http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/configure-healthcheck.html)或通过 API(参见配置健康检查 http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_ConfigureHealthCheck.html).

字段中概述了以这种方式配置的通过健康检查的要求Target of the 健康检查 http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_HealthCheck.html数据类型文档:

指定正在检查的实例。协议是 TCP, HTTP、HTTPS 或 SSL。有效端口的范围是一 (1) 到 65535。

Note

  • TCP 是默认值,指定为 TCP: 端口对,例如 “TCP:5000”。在这种情况下,健康检查只是尝试打开 TCP 连接到指定端口上的实例。连接失败 在配置的超时时间内被认为是不健康的。

  • SSL 也指定为 SSL: 端口对,例如 SSL:5000。

  • 对于 HTTP 或 HTTPS 协议,情况有所不同。你必须 在字符串中包含 ping 路径。 HTTP 被指定为 HTTP:端口;/;PathToPing;分组,例如 “HTTP:80/天气/美国/华盛顿州/西雅图”。在这种情况下,HTTP GET 请求是 发布到给定端口和路径上的实例。任何答案其他 在超时时间内超过“200 OK”被认为是不健康的。

  • HTTP ping 目标的总长度需要为 1024 16 位 Unicode 字符或更少。

[强调我的]

With 自动的您可能指的是段落中描述的健康检查Cause within 为什么健康检查的URL与API和控制台中显示的URL不同? http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-healthcheck.html#ts-elb-healthcheck-different-url:

除了为负载均衡器配置的运行状况检查之外, 进行第二次健康检查通过服务来防止 因未经授权而终止实例而导致的潜在副作用 被注销。为了执行此检查,负载均衡器会打开一个 运行状况检查配置到的同一端口上的 TCP 连接 使用,健康检查完毕后关闭连接 完全的。[强调我的]

这段落Solution澄清此处的有效负载为零,即它类似于上面针对可配置运行状况检查描述的非 HTTP/HTTPS 方法:

这项额外的健康检查不会影响您的性能 应用程序,因为它没有向您的后端发送任何数据 实例。您无法禁用或关闭此运行状况检查。

总结/解决方案

假设你的RESTful API 服务器,内置 HTTP 解析器实际上应该只提供 HTTP 服务,您将需要处理两个健康检查:

  1. 第一个是你自己配置的作为 HTTP:port;/;PathToPing- 您将收到HTTP GET请求并必须回答200 OK在指定的超时时间内被认为是健康的。
  2. 第二个由服务自动配置 - 它将在上面配置的 HTTP 端口上打开一个 TCP 连接,不会发送任何数据,然后在健康检查完成后关闭连接。

总之,您的服务器可能已经表现得很好,而您只是对第二次运行状况检查的行为感到恼火 - ELB 是否真的认为您的服务器不健康?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Amazon ELB 自动运行状况检查有什么作用以及它的期望是什么? 的相关文章

随机推荐

  • 如何使用 pywin32 从 ms 项目中的任务使用情况中提取数据?

    我正在尝试使用 pywin32 Python 库将数据从 MSProject mpp 文件提取到 Excel 文件 我希望我的员工在其中注册他们的工作时间 我可以从任何我想要的字段中提取数据 但任务使用表除外 该表显示每天任务 一个人 X
  • 未捕获的类型错误:Module.cwrap 不是函数

    我需要在浏览器端解码 h264 数据 因为我使用 emscripten 在 Web Assembly 中构建 openh264 库 我已经成功构建它并尝试在 java 脚本中使用它来解码 h264 数据 但我收到以下一行的一个错误 var
  • Sqlite for iOS 是用哪种线程模式编译的?

    这一页http www sqlite org threadsafe html http www sqlite org threadsafe html提到 单线程 多线程 连载 iOS 5中集成的sqlite是用什么模式编译的 好的 所以 s
  • 用于获取 PancakeSwap 上币安智能链代币价格的 API

    我有一个代币的地址 我需要获取它的 BUSD 或 BNB 价格 如果没有其他办法的话 使用付费API是没有问题的 该代币可能不会出现在热门列表中 因此最好直接从 PancakeSwap 获取价格 这是直接从 PancakeSwap 获取的方
  • 隐藏后的CSS无限动画不重置(Chrome)

    这里我有一个 CSS 关键帧动画的例子 你可以在这个演示 http jsfiddle net umbreak q234Lsx8 1 该代码每 1 4 秒就会将 img 缩放到 0 75 然后返回到其原始 1 比例 效果很好 然后我添加一个简
  • 如何使用 CSS 动画更改 CSS 动画中的字体颜色

    我正在努力做到这一点 以便当我打开页面时 test将显示为红色并且testing将显示为白色 当页面打开时 我要保留一个延迟 如果您运行该程序 您将看到 Css hero h1 display block width fit content
  • iOS 蓝牙后台模式

    我希望继续扫描蓝牙设备 并且希望应用程序在后台运行 是否可以 似乎如果我有一个连接的蓝牙设备 并且有数据传输 那么该应用程序就会在后台保持唤醒状态 但是 如果我只是在后台扫描 似乎即使我有Uses Bluetooth LE accessor
  • 在 ext4 上覆盖小文件是原子的吗?

    假设我们有一个文件FILE SIZE字节 并且 FILE SIZE lt min page size physical block size 文件大小永远不会改变 即truncate 或附加write 从未执行过 仅通过使用以下命令完全覆盖
  • 条件语句体内是否有可能存在多个语句?

    我主要是一名 C 因此是一名 OO 命令式 程序员 我觉得很奇怪的是 在条件语句中 每个求值只能有一个语句 例如函数式语言 Scheme 中的 if 语句 例如 let arg1 0 arg2 1 if gt arg1 arg2 arg1
  • 在 sqlplus 输入文件中参数化表名

    我正在尝试使用 sqlplus 和 Oracle 假脱机功能导出一些数据 问题是我定义导出的 SQL 输入文件不允许我参数化从中导出数据的表名 它需要一个文字 在 shell 脚本中调用 sqlplus sqlplus USER PASSW
  • 使用 C# 中的 powershell cmdlet 重新启动 Hyper V 计算机

    我正在尝试构建一个应用程序来重新启动 Server 2012 中 Hyper V 中的虚拟机 我重新启动了列表中的每个虚拟机 但我想对其进行调整以关闭机器然后重新打开 注释的代码是强制重启的工作 提前致谢 public async stat
  • Hibernate 4.3,在构建 SessionFactory 时为什么我们必须提供两次属性?

    使用 Hibernate 4 3 5 当您想要创建 SessionFactory 例如单元测试 时 您必须提供属性两次 一次配置 第二次 将设置应用到服务注册表构建器时 该示例如下所示 Properties properties new P
  • 仅使用 SSE2 提取 SSE 混洗的 32 位值

    我正在尝试以有效的方式从 128 位寄存器中提取 4 个字节 问题是每个值都在一个单独的 32 位中 120 0 0 0 55 0 0 0 42 0 0 0 120 0 0 0 我想将128位转换为32位它的形式 120 55 42 120
  • Lombok 不生成 getters/setters(使用 Luna 或命令行编译)

    我第一次尝试龙目岛 我尝试尽可能地遵循指示 但是当我查看编译的类 使用反编译器 时 它们没有任何生成的 getter 或 setter 我的安装步骤 下载lombok 1 14 8并运行java jar lombok jar 它将 lomb
  • 用于执行 cvs 到 svn 迁移的 cvs2svn 替代方案

    我正在尝试在运行 OS X Server 的新 XServe 服务器上执行从 cvs 到 svn 的迁移 OS X 预装的 cvs2svn 和 dbm 库之间存在已知冲突 错误为 错误 cvs2svn 使用anydbm 包 该包依赖于较低级
  • 有人可以向我解释一下这个功能是如何工作的吗?

    我正在学习编码 并试图理解高阶函数和抽象 我不明白这段代码如何运行以返回 true function greaterThan n return function m return m gt n var greaterThan10 great
  • 在 Qt 中集成 Bullet 简单演示

    我想将 Bullet 演示集成到 Qt 应用程序中 我使用的是 Bullet 附带的 Bullet 演示示例 名为 App BasicDemo 如果我在没有 Qt 的情况下执行此应用程序 它会打开一个窗口并呈现得很好 所以我想 如果我只是把
  • 如何使用js触发'contenteditable'元素进入编辑状态?

    我想使用 contenteditable 属性实现元素就地编辑 是否可以通过鼠标事件模拟而不是用户单击进入编辑状态 function triggerEvent element eventType let rect element getBo
  • AttributeError:“命名空间”对象没有属性

    我正在编写一个程序 使用urllib2从 http 站点下载 CSV 数据 该程序在 Python 中运行时工作正常 但我也尝试使用argparse能够从命令行输入 url 当我运行它时 出现以下错误 File urlcsv py line
  • Amazon ELB 自动运行状况检查有什么作用以及它的期望是什么?

    事情是这样的 我们已经实现了一个 C RESTful API 服务器 带有内置的 HTTP 解析器 并且没有像 apache 或任何类似的标准 HTTP 服务器 它已经在 Amazon 结构中使用了几个月 使用普通通信和 SSL 通信 并且