AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[google-cloud-http-load-balancer](server)

Martin Hope
secret_cinema
Asked: 2021-06-29 22:51:07 +0800 CST

具有现有虚拟机的 GCP 负载平衡器

  • 1

我正在 GCP 中设置 HTTPS 负载平衡器,但遇到了一些挑战。

我有两个想要对流量进行负载平衡的现有虚拟机,它们位于两个不同的 GCP VCP 网络中。

通过 GCP 控制台创建负载均衡器时,我被要求选择或创建一个实例组,但在创建一个实例组时,我发现没有添加现有虚拟机的选项。

我想要完成的是创建一个可通过 Internet 使用的负载均衡器,该负载均衡器将流量平衡到位于不同区域的两个不同网络中的两个现有 VM 的流量。我怎样才能做到这一点?

load-balancing google-cloud-platform google-cloud-http-load-balancer
  • 2 个回答
  • 667 Views
Martin Hope
tocas619
Asked: 2021-06-17 18:02:04 +0800 CST

GCP HTTP 负载均衡器背后的 Wordpress 缓慢

  • 0

我在 GCP Compute Engine 上托管一个 Wordpress 实例(使用 Marketplace 图像)。当我直接访问实例 IP 时效果很好,延迟在 20 毫秒左右。

但是,为了确保站点安全,我在实例前面使用了 GCP HTTP 负载均衡器。我已将我的域指向负载均衡器。

当我通过负载平衡器(HTTP 或 HTTPS)访问 Wordpress 时,我得到了一些延迟时间非常长的查询(大约 17 毫秒),但随后每 4 或 5 个查询,就有一个大约需要 5 秒的请求。当我直接访问实例时,这不会发生。

我启用了负载均衡器日志,我观察到实例每隔几个请求就响应缓慢。我尝试将实例的 KeepAlive Apache2 参数设置为 300,但没有任何区别。

这可能是什么根本原因?(我不确定是 Wordpress、实例还是负载均衡器)。

谢谢

google-cloud-platform wordpress apache2 google-cloud-http-load-balancer
  • 2 个回答
  • 245 Views
Martin Hope
Alexander B.
Asked: 2021-05-23 05:55:59 +0800 CST

在 GCP (GAE) 上创建负载均衡器。SSL 证书域卡在 FAILED 状态

  • 0

我是这个话题的新手。我们使用 GCP(App Engine,标准)来托管一个 nodejs 应用程序。然而,出于不同的原因,我们决定创建两个服务——stage和default(认为是同一个应用程序并行运行)。

默认一个与自定义域(GAE 提供的 SSL 证书)连接并正常工作。可以使用 google 生成的 URL (stage-dot-example.appspot.com) 访问舞台服务,并且显然受到 ssl 证书的保护。

然后,我们必须通过合作伙伴的安全审查,我们为此使用了阶段。

结果是我们必须禁用 TLSv1.0 和 TLSv1.1。使用 GAE - 我们需要创建负载均衡器并将 SSL 策略切换到特定于 TLS 的策略。

问题:要创建外部 HTTPS 负载平衡器 - 您必须创建 SSL 证书资源(即您必须拥有域)。使用自定义域,我想这应该不难,但我该如何为舞台做到这一点?我是否在 SSL 证书资源中使用我的阶段域 (...appspot.com)?如果是这样 - 我如何处理 DNS 记录和外部 IP(您需要将 IP 切换到 A 和 AAAA 记录中的外部 IP)?

或者如果我做错了什么 - 你能指出我正确的方向吗?

更新 + 更新 2

我决定走 Wojtek_B 提出的路径。所以我验证了 stage.example.com,它在没有负载均衡器的情况下运行良好。

那时,我的 DNS 记录包括来自 @ 的 4 条 A 和 4 条 AAAA 记录,带有 google 提供的 IP,以及 3 条 CNAME 记录(www、stage、www.stage)指向“ghs.googlehosted.com”。

接下来,我创建了具有 4 个域的 SSL 证书资源:example.com、www.example.com、stage.example.com、www.stage.example.com。

然后我添加了一个外部 HTTPS 负载均衡器(使用外部 IP,例如,1.2.3.4 和上面提到的 SSL 证书)。

我为@、www、stage 和www.stage 添加了新的A 记录以指向1.2.3.4。我已经删除了 CNAME 记录,因为它们过多。

等待 2-3 小时(TTL 为 1/2 小时)后,所有子域都被激活,除了 example.com(卡在 FAILED_NOT_VISIBLE 中)。

回答

一段时间以来,我一直在与托管 SSL 证书陷入供应状态作斗争。我遵循本教程,您应该只创建外部 IP (v4)。但我也有 4 条 AAAA 记录(在域验证期间获得)(显然)ipv6。所以我尝试保留外部 IP (v6),不到一分钟就将所有 4 个(子)域推送到活动状态。

在短短几分钟内,通过 LB 的两个服务都启动并运行所需的 TLS 配置。

load-balancing google-app-engine google-cloud-platform google-cloud-http-load-balancer google-app-engine-standard
  • 1 个回答
  • 712 Views
Martin Hope
Cloud SME
Asked: 2021-04-24 11:56:39 +0800 CST

将区域网络端点组 (NEG) 与 HTTPS 负载均衡器一起使用

  • -3

创建网络端点组时,我需要指定网络端点。对于这些,我可以选择我的 VM 实例并指定主要(内部)IP 地址。

然后我可以选择这个 NEG 作为全局 HTTPS 负载均衡器的后端。

全局分布式负载均衡器如何将流量转发到没有外部 IP 的虚拟机?

如果我创建一个内部负载均衡器,负载均衡器将部署到同一 VPC 中的子网,因此它可以看到我的实例,但全局 HTTPS 负载均衡器不在我的 VPC 中。

load-balancing google-cloud-platform google-cloud-http-load-balancer google-cloud-network-load-balancer
  • 1 个回答
  • 433 Views
Martin Hope
Petr Flaks
Asked: 2021-04-01 07:55:16 +0800 CST

Google Cloud External Load Balancer 的后端服务随机失败并出现 502 服务器错误

  • 1

我有以下外部谷歌云负载均衡器配置:

负载均衡器示意图

  • GlobalNetworkEndpointGroupToClusterByIp是 Internet NEG,类型INTERNET_IP_PORT指向 Kubernetes 集群的 IP。
  • GlobalNetworkEndpointGroupToManagedS3是 Internet NEG,类型INTERNET_FQDN_PORT指向由 Yandex S3 服务管理。

由于某种原因,某些后端服务无法工作,当我尝试连接它们时,它们会响应 HTML 页面显示502 Server Error:

错误:服务器错误

服务器遇到临时错误,无法完成您的请求。

请在 30 秒后重试。

在失败的后端服务日志中总是有以下错误:

jsonPayload: {
  cacheId: "GRU-c0ee45d8"
  @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
  statusDetails: "failed_to_pick_backend"
}

对后端服务的请求在 1 毫秒内失败(如日志中所述),因此它们似乎甚至没有尝试连接到我的 Kubernetes 集群的 IP 或托管 S3 并立即失败。

在发布此问题时,S3 和 Imgproxy 后端服务状况良好,但其他服务无法正常工作:

正常运行时间状态

如果我重新部署所有内容,其他一些服务可能会失败,例如:

  • API 和 Docs 会起作用,其他会失败
  • API、Docs、FPS 和 Imgproxy 将工作,S3 将失败
  • S3 会工作,其他人会失败

所以这绝对是随机的,我不明白为什么会发生。如果我足够幸运,重新部署后所有后端服务都会运行良好。也有可能它们都不起作用。

Kubernetes 集群可以正常工作,它接受连接,托管 S3 也可以正常工作。它看起来像一个错误,但我在 Google 中找不到任何关于此的内容。

这是我的 Terraform 配置的外观:

resource "google_compute_global_network_endpoint_group" "kubernetes-cluster" {
  name                  = "kubernetes-cluster-${var.ENVIRONMENT_NAME}"
  network_endpoint_type = "INTERNET_IP_PORT"

  depends_on = [
    module.kubernetes-resources
  ]
}

resource "google_compute_global_network_endpoint" "kubernetes-cluster" {
  global_network_endpoint_group = google_compute_global_network_endpoint_group.kubernetes-cluster.name
  port                          = 80
  ip_address                    = yandex_vpc_address.kubernetes.external_ipv4_address.0.address
}

resource "google_compute_global_network_endpoint_group" "s3" {
  name                  = "s3-${var.ENVIRONMENT_NAME}"
  network_endpoint_type = "INTERNET_FQDN_PORT"
}

resource "google_compute_global_network_endpoint" "s3" {
  global_network_endpoint_group = google_compute_global_network_endpoint_group.s3.name
  port                          = 443
  fqdn                          = trimprefix(local.s3.endpoint, "https://")
}

resource "google_compute_backend_service" "s3" {
  name = "s3-${var.ENVIRONMENT_NAME}"

  backend {
    group = google_compute_global_network_endpoint_group.s3.self_link
  }

  custom_request_headers = [
    "Host:${google_compute_global_network_endpoint.s3.fqdn}"
  ]

  cdn_policy {
    cache_key_policy {
      include_host         = true
      include_protocol     = false
      include_query_string = false
    }
  }

  enable_cdn            = true
  load_balancing_scheme = "EXTERNAL"

  log_config {
    enable      = true
    sample_rate = 1.0
  }

  port_name   = "https"
  protocol    = "HTTPS"
  timeout_sec = 60
}

resource "google_compute_backend_service" "imgproxy" {
  name = "imgproxy-${var.ENVIRONMENT_NAME}"

  backend {
    group = google_compute_global_network_endpoint_group.kubernetes-cluster.self_link
  }

  cdn_policy {
    cache_key_policy {
      include_host         = true
      include_protocol     = false
      include_query_string = false
    }
  }

  enable_cdn            = true
  load_balancing_scheme = "EXTERNAL"

  log_config {
    enable      = true
    sample_rate = 1.0
  }

  port_name   = "http"
  protocol    = "HTTP"
  timeout_sec = 60
}

resource "google_compute_backend_service" "api" {
  name = "api-${var.ENVIRONMENT_NAME}"

  custom_request_headers = [
    "Access-Control-Allow-Origin:${var.ALLOWED_CORS_ORIGIN}"
  ]

  backend {
    group = google_compute_global_network_endpoint_group.kubernetes-cluster.self_link
  }

  load_balancing_scheme = "EXTERNAL"

  log_config {
    enable      = true
    sample_rate = 1.0
  }

  port_name   = "http"
  protocol    = "HTTP"
  timeout_sec = 60
}

resource "google_compute_backend_service" "front" {
  name = "front-${var.ENVIRONMENT_NAME}"

  backend {
    group = google_compute_global_network_endpoint_group.kubernetes-cluster.self_link
  }

  cdn_policy {
    cache_key_policy {
      include_host         = true
      include_protocol     = false
      include_query_string = true
    }
  }

  enable_cdn            = true
  load_balancing_scheme = "EXTERNAL"

  log_config {
    enable      = true
    sample_rate = 1.0
  }

  port_name   = "http"
  protocol    = "HTTP"
  timeout_sec = 60
}

resource "google_compute_url_map" "default" {
  name            = "default-${var.ENVIRONMENT_NAME}"
  default_service = google_compute_backend_service.front.self_link

  host_rule {
    hosts = [
      local.hosts.api,
      local.hosts.fps
    ]
    path_matcher = "api"

  }

  host_rule {
    hosts = [
      local.hosts.s3
    ]
    path_matcher = "s3"
  }

  host_rule {
    hosts = [
      local.hosts.imgproxy
    ]
    path_matcher = "imgproxy"
  }

  path_matcher {
    default_service = google_compute_backend_service.api.self_link
    name            = "api"
  }

  path_matcher {
    default_service = google_compute_backend_service.s3.self_link
    name            = "s3"
  }

  path_matcher {
    default_service = google_compute_backend_service.imgproxy.self_link
    name            = "imgproxy"
  }

  test {
    host    = local.hosts.docs
    path    = "/"
    service = google_compute_backend_service.front.self_link
  }

  test {
    host    = local.hosts.api
    path    = "/"
    service = google_compute_backend_service.api.self_link
  }

  test {
    host    = local.hosts.fps
    path    = "/"
    service = google_compute_backend_service.api.self_link
  }

  test {
    host    = local.hosts.s3
    path    = "/"
    service = google_compute_backend_service.s3.self_link
  }

  test {
    host    = local.hosts.imgproxy
    path    = "/"
    service = google_compute_backend_service.imgproxy.self_link
  }
}

# See: https://github.com/hashicorp/terraform-provider-google/issues/5356
resource "random_id" "managed-certificate-name" {
  byte_length = 4
  prefix      = "default-${var.ENVIRONMENT_NAME}-"

  keepers = {
    domains = join(",", values(local.hosts))
  }
}

resource "google_compute_managed_ssl_certificate" "default" {
  name = random_id.managed-certificate-name.hex

  lifecycle {
    create_before_destroy = true
  }

  managed {
    domains = values(local.hosts)
  }
}

resource "google_compute_ssl_policy" "default" {
  name    = "default-${var.ENVIRONMENT_NAME}"
  profile = "MODERN"
}

resource "google_compute_target_https_proxy" "default" {
  name       = "default-${var.ENVIRONMENT_NAME}"
  url_map    = google_compute_url_map.default.self_link
  ssl_policy = google_compute_ssl_policy.default.self_link
  ssl_certificates = [
    google_compute_managed_ssl_certificate.default.self_link
  ]
}

resource "google_compute_global_forwarding_rule" "default" {
  name                  = "default-${var.ENVIRONMENT_NAME}"
  load_balancing_scheme = "EXTERNAL"
  port_range            = "443-443"
  target                = google_compute_target_https_proxy.default.self_link
}

UPD。我发现重新创建 NEG 将解决这个问题:

  1. 等到 Terraform 完成部署。
  2. 通过具有相同配置的 Google Cloud Platform Console NEG 创建。
  3. 编辑后端服务以使用新创建的 NEG。
  4. 有用!

但这绝对是 hack,似乎没有办法用 Terraform 自动化它。我会继续调查这个问题。

load-balancing google-cloud-platform google-cloud-http-load-balancer
  • 1 个回答
  • 904 Views
Martin Hope
Louis Sayers
Asked: 2020-12-02 20:29:54 +0800 CST

在使用 GCP 负载均衡器配置 IAP 的情况下,如何从 HTTP 重定向到 HTTPS?

  • 1

我目前有一个托管在 Google Compute Engine 上的网站,该网站通过位于负载均衡器后面的 Identity-Aware-Proxy 进行了身份验证。这一切都适用于 https,但我想确保 http 重定向到 https,因为它目前只响应 404。

因此,我遵循了https://cloud.google.com/load-balancing/docs/https/setting-up-http-https-redirect,它告诉您设置第二个负载均衡器以将 http 流量重定向到 https。

但是,问题是,按照这些说明操作后,当我浏览到http://my-website.com时,我收到以下错误:

错误 403(禁止)!!1

  1. 那是一个错误。

您的客户端无权从此服务器获取 URL /。我们知道的就这些。

尽管 http 负载均衡器设置了 301 - 永久移动完整路径重定向,但在浏览器开发人员工具网络选项卡中没有发生重定向。它只是立即以 403 响应。URL 也使用 http:// 方案。


总而言之,我的设置如下所示:

外部 HTTPS 负载均衡器

  • 前端 - HTTPS、静态 IP、仅限 HTTPS
  • 后端 - Identity-Aware-Proxy(通过 Identity Platform 进行电子邮件身份验证)-> Compute Engine 实例组

外部 HTTP 负载均衡器

  • 前端 - HTTP,静态 IP(与上面的 HTTPS 负载均衡器相同)
  • 后端 - 无
  • 主机和路径规则:
    • 模式:高级主机和路径规则(URL 重定向、URL 重写)
    • 行动:将客户端重定向到不同的主机/路径
    • 主机重定向: https ://my-website.com
    • 路径值: *
    • 重定向响应代码: 301 - 永久移动
    • HTTPS 重定向:已启用

任何想法如何解决这个问题,而不是得到 403 将不胜感激!

http https http-status-code-403 google-cloud-http-load-balancer
  • 1 个回答
  • 982 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve