标签: azure-load-balancer

Azure App Service负载平衡设置

Azure App Service的ARM模板具有设置以配置负载平衡算法-loadBalancing。根据文档,它可以通过SiteConfig对象获得,并且可以具有以下值:WeightedRoundRobin,LeastRequests,LeastResponseTime,WeightedTotalTraffic,RequestHash。

我们对带有两个实例的Standard S1应用服务计划进行了一些测试。第一个实例对所有请求的响应没有延迟,第二个实例对所有请求的响应延迟了3秒,ARR关联已关闭。

测试表明,所有设置都执行相同的操作-经过一段时间的加速后,所有请求在两个实例之间平均分配。至少对于LeastResponseTime而言,这是意料之中的,它直观地假定将更多流量定向到第一个实例(响应时间短)。

所以问题是,此设置是否还有效?如果可以,在哪种应用程序服务配置中受到尊重?

azure azure-web-sites azure-web-app-service azure-load-balancer

7
推荐指数
0
解决办法
868
查看次数

使用 Azure 负载均衡器持续交付

我们在负载均衡器后面有两个虚拟机。我们希望在进行新部署时使其中一台虚拟机无法公开访问,以便我们可以在应用程序的新版本公开访问之前对其进行测试。当前计划是通过负载均衡器的服务标签更改网络安全组规则来阻止两个虚拟机中的一个: 在此输入图像描述

有用。当我们将 VM1 的 NSG 规则从“允许”更改为“拒绝”时,只有 VM2 保持可公开访问。一旦我们验证新版本按预期工作,我们就会切换 VM2 的 NSG 规则并切换 VM1 的 NSG 规则,因此当我们更新其他虚拟机上的应用程序时,只能访问具有最新版本应用程序的虚拟机。

问题是 NSG 规则不会立即生效,可能需要 1-3 分钟才能使虚拟机无法访问/可访问。此外,如果我们同时为两个虚拟机切换 NSG,我们可能会遇到这样的情况:两个具有不同版本软件的虚拟机都是公开可用的,这可能会导致数据损坏或数据丢失,或者两个虚拟机都无法访问。因此,解决此问题的唯一方法是更改​​ VM2 的 NSG 规则,然后更改 VM1 的 NSG 规则,并让停机时间为 2-6 分钟。有更好的方法吗?

azure-load-balancer

7
推荐指数
1
解决办法
191
查看次数

我应该选择 Azure 应用程序网关还是负载均衡器或前门或流量管理器?

我有一个使用 Angular 8 和 Asp.net Core Web API 开发的 SaaS Web 应用程序。我已将 web api 部署到 azure web 应用程序,并将 angular 前端 web 应用程序部署到另一个 azure web 应用程序。

用户来自中国和澳大利亚等国家。我想要区域负载平衡,就像中国用户在 china azure 区域使用 web 应用程序,澳大利亚用户使用澳大利亚 azure 区域 web 应用程序一样,以便它具有最佳性能。Azure SQL DB 将位于一处(在澳大利亚)。

此外,我想防止对 Web 前端应用程序和 Web api 的攻击,例如 d-dos、Web 抓取和 SQL 注入。对于网页抓取,我想从一个 ip 添加访问速率限制。

你能告诉我应该使用什么服务吗?我在博客上看到了关于 azure 应用程序网关、azure 负载均衡器、azure 前门和 azure 流量管理器的内容。这对我来说有点混乱。我需要一个基于我这个真实世界场景的最佳实践。我应该使用其中一项服务还是应该使用多项服务?

azure-web-app-service azure-application-gateway azure-load-balancer azure-front-door

6
推荐指数
1
解决办法
3559
查看次数

为什么 Azure 应用服务未在实例之间均匀分配流量?

我们的问题是 Azure 应用服务(S3 x 5 实例)未在 5 个实例之间均匀分配请求。结果是,一个实例被请求淹没,并且该应用程序服务的整体 P50 和 P95 响应时间 SLA 被违反。

我已确认应用服务已关闭 ARR Affinity。它是一个完全无状态的 Web API,因此它本身没有什么粘性。

技术细节如下,但问题本质上是这样的

为什么 Azure 晚上不在所有 5 个实例之间分配/循环分配我的流量?

就目前情况而言,扩大或缩小在这里似乎没有意义,因为我最终会得到额外的昂贵实例闲置,而 1 个实例被淹没。

技术细节

以下两张来自 6 月 1 日至 6 月 25 日的应用洞察图表显示了该问题。

requests
| where timestamp > datetime("2020-06-25 00:00:00")  
| where timestamp < datetime("2020-06-25 08:00:00")
//comaprison between 00:00-08:00 on June 1st vs. Today
| where url contains "**ommitted**" 
| project cloud_RoleInstance, itemCount, bin(timestamp, 1h)
| evaluate pivot(cloud_RoleInstance, sum(itemCount))
| render timechart
Run Code Online (Sandbox Code Playgroud)

下面第一张图显示了 6 月 …

load-balancing azure azure-app-service-plans azure-web-app-service azure-load-balancer

6
推荐指数
1
解决办法
1809
查看次数

如何使用 CDN 和负载均衡器进行文件版本控制?

所以我使用一个非常简单的 CDN 服务。您指向您的网站,如果您通过其主机名调用它,他们会在第一次调用后为您缓存它。

我将其用于所有静态内容,例如 JavaScript 文件和图像。

这一切都很完美——而且我喜欢它的维护或设置成本非常低。

当推出新版本的 JavaScript 文件时,问题就出现了。如果文件发生更改,新的 JavaScript 文件会自动获取新的哈希值。

由于在多个实例上的转出并不是同时进行的,因此会出现问题。我尝试在此图中对其进行建模:

图表

用言语来说:

  • 请求以新版本命中服务器
  • 请求带有新版本哈希的 Js 文件
  • CDN正确检测到文件未缓存
  • CDN 从负载均衡器请求带有新哈希的原始文件
  • 负载均衡器将 CDN 请求提供给随机服务器 - 意外地从旧版本的服务器提供服务
  • CDN 使用新哈希缓存旧版本
  • 每个人都可以从 CDN 获取旧版本

我知道如何解决这个问题 - 即手动将文件上传到单独的存储并烘焙哈希值等。但这需要额外的代码并且有更多的“移动部件”,使维护更加复杂。

我更希望拥有像正常 CDN 行为一样无缝运行的东西。我想这是在多个实例上运行的网站的常见问题,但我找不到很多有关此问题的信息。

解决这个问题的常用方法是什么?

编辑

我认为另一个解决方案是以某种方式强制 CDN 转到 .js 文件与原始 html 文件相同的实例 - 但如何实现呢?

hash load-balancing cdn multi-instance-deployment azure-load-balancer

5
推荐指数
1
解决办法
347
查看次数

使用azure aks获取客户端原始IP地址

我目前正在致力于将 AWS EKS 集群复制到 Azure AKS。在我们的 EKS 中,我们使用带有代理协议的外部 Nginx 来识别客户端真实 IP 并检查它是否在我们的 Nginx 中列入白名单。
为此,我们在 AWS 中添加了 Kubernetes 服务注释aws-load-balancer-proxy-protocol以支持 Nginxproxy_protocol指令。

现在这一天已经到来,我们希望也在 Azure AKS 上运行我们的集群,我正在尝试执行相同的机制。
我看到 AKS 负载均衡器对 IP 进行哈希处理,因此我proxy_protocol从 Nginx 配置中删除了该指令,我尝试了几件事,我知道 Azure 负载均衡器不用作代理,但我确实在这里阅读: AKS 负载均衡器标准
我尝试将 IP 列入白名单在 Kubernetes 服务级别使用loadBalancerSourceRangesapi,而不是在 Nginx 级别。

但我认为负载均衡器将 IP 发送到已经散列的集群(这是正确的术语吗?),并且集群似乎忽略了下面的 iploadBalancerSourceRanges并传递它们。

我现在陷入困境,试图了解我缺乏知识的地方,我尝试从两端(负载均衡器和 kubernetes 服务)处理它,但它们似乎都不与我合作。
鉴于我的失败,将客户端真实 IP 地址传递到我的 AKS 群集的“正确”方法是什么?

nginx azure-load-balancer azure-aks

5
推荐指数
1
解决办法
5256
查看次数

当循环可以均匀地分配流量时,为什么我们需要一致的散列

当负载均衡器可以使用循环算法将传入的请求平均分配给节点时,为什么我们需要使用一致性哈希来分配负载?使用一致散列和 RR 分配负载的最佳方案是什么?

load-balancing consistent-hashing azure-load-balancer

4
推荐指数
2
解决办法
2543
查看次数

Azure负载平衡如何扩展App Service计划?

我有一个Azure应用服务,其中我使用App Service Plan Scale Out选项创建了5个实例.现在我不确定Azure如何在这些实例之间平衡请求?我没有看到任何负载均衡器.

另外,我如何知道哪个请求由哪个实例提供?

azure azure-app-service-envrmnt azure-app-service-plans azure-web-app-service azure-load-balancer

3
推荐指数
1
解决办法
2148
查看次数

将静态公共地址分配给Azure容器实例部署

语境

正在处理一个项目,以将一个宁静的API应用程序和单独的TCP服务部署到Azure容器实例。由于遗留原因,TCP服务需要一个静态Ipv4地址。

上下文图

我试图隔离我的选项,以将静态公共IP地址分配给Azure容器实例上托管的TCP服务。有什么选择 ?

经过测试

  1. 具有静态公共IP地址的已部署Azure应用程序网关。App Gateway允许将后端池定向到IP或FQDN端点。这似乎是可操作的(请参见图)。后端池中的所有选项似乎都只允许HTTP和HTTPS,而不允许自定义端口。如果TCP服务可以在80上侦听,而Web API在443上侦听,则可以对此进行操作。应用程序网关是仅用于HTTP和HTTPS流量的第7层资源。

  2. Azure负载平衡器。只能针对VM,可用性集或VM缩放集。

  3. 为资源分配静态地址。不允许用于容器实例。

  4. 交通经理。似乎不是此部署的正确资源类型。

参见图。当我通过BASH会话查询时,API和TCP SERVICE的容器实例具有相同的专用IP地址。建议将它们托管在附图中的同一主机上(标记为容器组)。不知道这是不是正确的标签,抱歉,我是Container tech的新手。

感谢您的任何建议。史考特

containers azure azure-traffic-manager azure-application-gateway azure-load-balancer

3
推荐指数
1
解决办法
1304
查看次数

如何仅将一个静态公共 IP 分配给 AKS-multiAZ 负载均衡器

我正在设置一个多可用区 AKS 集群,我想将我创建的静态公共 IP 分配给此负载均衡器。这是我所拥有的:

#### Creating a Public static IP ####
resource "azurerm_public_ip" "lb-public-ip1" {
  name                = "${var.public_ip_name}"
  location            = "${var.location}"
  resource_group_name = "${var.resource_group_name}"
  allocation_method   = "Static"
  ip_version          = "IPv4"
  sku                 = "standard"
  #domain_name_label   =
  tags = {
    Environment = "${var.environment}"
    owner       = "${var.resource_owner}"
    created-by  = "${var.policy_created_by}"
  }
  depends_on    = ["null_resource.module_depends_on"]
}
data "azurerm_public_ip" "lb-public-ip1" {
  name                = "${azurerm_public_ip.lb-public-ip1.name}"
  resource_group_name = "${azurerm_public_ip.lb-public-ip1.resource_group_name}"
  depends_on          = ["null_resource.module_depends_on"]
}
resource "null_resource" "module_depends_on" {
  triggers = {
    value = "${length(var.module_depends_on)}"
  }
}

#### …
Run Code Online (Sandbox Code Playgroud)

azure terraform azure-load-balancer azure-aks

3
推荐指数
1
解决办法
2604
查看次数