2

更新 #2: 我已经检查了 Auto Scaling 组中我的实例的健康状态 - 这里实例的标题为“健康”。(已添加截图)

我按照AWS的这个故障排除教程进行操作 - 没有成功:

解决方案:对您的 Auto Scaling 组使用 ELB 运行状况检查。当您使用 ELB 健康检查时,Auto Scaling 通过检查实例状态检查和 ELB 健康检查的结果来确定您的实例的健康状态。有关更多信息,请参阅Amazon EC2 Auto Scaling 用户指南中的向您的 Auto Scaling 组添加运行状况检查


更新 #1: 我发现这两个节点实例是“OutOfService”(如下面的屏幕截图所示),因为它们无法通过负载均衡器的健康检查 - 这可能是问题吗?我该如何解决?

谢谢!


我目前正准备在 AWS 上托管我的 ShinyApp。

为了使托管具有可扩展性,我决定使用 AWS——更准确地说是 EKS 集群。

对于我遵循本教程的创建:https ://github.com/z0ph/ShinyProxyOnEKS

至此一切正常,除了最后一步:“访问负载均衡器地址和端口时,ShinyProxy的登录界面可以正常显示。

一旦我尝试使用相应的端口调用负载均衡器,负载均衡器就会给我以下错误消息:ERR_EMPTY_RESPONSE。

我不得不承认,我目前有点迷茫,并且缺乏可能出现错误的起点。

我已经能够在集群中托管 Shiny 示例应用程序(教程中的步骤 3.2),所以它一定是由于 Shinyproxy、kubernetes 代理或负载均衡器本身。

我将您链接到以下信息:

  • 概述 EC2 实例(工作区 + 集群节点)
  • 概述负载均衡器
  • 概述存储库
  • Dockerfile ShinyProxy
  • Dockerfile Kubernetes 代理
  • Dockerfile ShinyApp(示例应用程序)

为了安全起见,我已经画了一些信息——如果有什么重要的,请告诉我。

如果您需要其他我没有想到的东西,请给我提示!

请原谅令人困惑的问题和格式 - 我只是不知道如何更好地表达/呈现它。对不起!

致以真诚的感谢和诚挚的问候


概述 EC2 实例(工作区 + 集群节点)

在此处输入图像描述

概述负载均衡器

在此处输入图像描述 在此处输入图像描述

概述存储库

在此处输入图像描述

Dockerfile ShinyProxy(来源https://github.com/openanalytics/shinyproxy-config-examples/tree/master/03-containerized-kubernetes

在此处输入图像描述

Dockerfile Kubernetes 代理(来源https://github.com/openanalytics/shinyproxy-config-examples/tree/master/03-containerized-kubernetes - Fork)

在此处输入图像描述

Dockerfile ShinyApp(示例应用程序)

在此处输入图像描述 在此处输入图像描述

以下文件是教程中的 1:1:

  1. application.yaml (shinyproxy)
  2. sp-authorization.yaml
  3. sp-deployment.yaml
  4. sp-service.yaml

AutoScaling-Group 中的运行状况

在此处输入图像描述

4

1 回答 1

1

不幸的是,有一个已知问题AWS

externalTrafficPolicy: Local with Type: LoadBalancer AWS NLB 健康检查失败 · 问题 #80579 · kubernetes/kubernetes

暂时关闭它,因为这是一个已知问题

根据k8s手册

.spec.externalTrafficPolicy- 表示此服务是否希望将外部流量路由到节点本地或集群范围的端点。有两个可用选项:(Cluster默认)和LocalCluster隐藏客户端源 IP 并可能导致第二跳到另一个节点,但应该具有良好的整体负载分布。Local保留客户端源 IP 并避免 LoadBalancer 和 NodePort 类型服务的第二跳,但存在潜在的不平衡流量传播风险。

但是您可以尝试像在这个答案中那样修复本地协议

于 2021-10-05T17:43:07.747 回答