如何在GCP中设置一个HTTP负载平衡器

101 阅读4分钟

简介

大家好!今天在这篇博客中,我们将学习如何在GCP中设置一个HTTP负载平衡器。。

它是如何工作的

HTTP(S)负载平衡是在谷歌前端(GFE)上实现的。GFE分布在全球,使用谷歌的全球网络和控制平面共同运作。你可以配置URL规则,将一些URL路由到一组实例上,而将其他URL路由到其他实例上。

请求总是被路由到离用户最近的实例组。如果该组有足够的容量,并且适合该请求。如果最近的组没有足够的容量,请求会被发送到最近的有容量的组。

要用计算引擎后端设置负载均衡器,你的虚拟机需要在一个实例组中。管理的实例组提供运行外部HTTP负载均衡器的后端服务器的虚拟机。在本实验室中,后端为自己的主机名服务。

涉及的步骤

现在,让我们开始设置负载均衡器所涉及的步骤 -

  • 激活云外壳
  • 设置默认地区和区域
  • 创建负载均衡器模板
  • 在模板的基础上创建一个管理实例组
  • 创建防火墙规则
  • 设置一个全局静态外部 IP 地址
  • 创建一个健康检查
  • 创建一个后端服务
  • 向后端服务添加实例
  • 创建一个URL地图
  • 创建一个目标HTTP代理
  • 创建一个全局转发规则

1.激活云端外壳

启动你的GCP控制台后,在右上角的工具栏中寻找激活云端外壳 的按钮,如下图所示-- 2.

Load BalancerLoad Balancer

2.设置默认地区和区域

要在云端外壳中设置默认区域,请使用以下命令-- 1.

gcloud config set compute/zone us-central1

要设置默认的区域 -

gcloud config set compute/zone us-central1-a

3.创建负载均衡器模板

gcloud compute instance-templates create lb-backend-template \
   --region= \
   --network=default \
   --subnet=default \
   --tags=allow-health-check \
   --machine-type=e2-medium \
   --image-family=debian-11 \
   --image-project=debian-cloud \
   --metadata=startup-script='#!/bin/bash
     apt-get update
     apt-get install apache2 -y
     a2ensite default-ssl
     a2enmod ssl
     vm_hostname="$(curl -H "Metadata-Flavor:Google" \
     http://169.254.169.254/computeMetadata/v1/instance/name)"
     echo "Page served from: $vm_hostname" | \
     tee /var/www/html/index.html
     systemctl restart apache2'

4.基于模板创建一个管理实例组

管理实例组(MIG)让你在多个相同的虚拟机上操作应用程序。你可以通过利用MIG的自动服务,包括自动缩放、自动修复、区域(多区)部署和自动更新,使你的工作负载具有可扩展性和高可用性。

gcloud compute instance-groups managed create lb-backend-group \
   --template=lb-backend-template --size=2 --zone= 

5.创建防火墙规则

这里,我们要创建一个名为fw-allow-health-check的防火墙规则。

gcloud compute firewall-rules create fw-allow-health-check \
  --network=default \
  --action=allow \
  --direction=ingress \
  --source-ranges=130.211.0.0/22,35.191.0.0/16 \
  --target-tags=allow-health-check \
  --rules=tcp:80

6.设置一个全局静态外部 IP 地址

现在实例已经启动并运行,设置一个全局静态外部 IP 地址,你的客户用它来访问你的负载均衡器。

gcloud compute addresses create lb-ipv4-1 \
  --ip-version=IPV4 \
  --global

注意保留的 IPv4 地址。\

gcloud compute addresses describe lb-ipv4-1 \
  --format="get(address)" \
  --global

7.创建一个健康检查

谷歌云提供了健康检查机制,以确定后端实例是否正确响应流量。

gcloud compute health-checks create http http-basic-check \
  --port 80

8.创建一个后端服务

gcloud compute backend-services create web-backend-service \
  --protocol=HTTP \
  --port-name=http \
  --health-checks=http-basic-check \
  --global

9.向后端服务添加实例

gcloud compute backend-services add-backend web-backend-service \
  --instance-group=lb-backend-group \
  --instance-group-zone= \
  --global

10.创建一个URL地图

URL地图是一种谷歌云配置资源,用于将请求路由到后端服务或后端桶。例如,使用外部HTTP(S)负载均衡器,你可以使用一个URL地图,根据URL地图中配置的规则,将请求路由到不同的目的地。

  • example.com/video的请求去到一个后端服务。
  • example.com/audio的请求转到另一个后端服务。
  • example.com/images的请求转到一个云存储后端桶。
  • 对任何其他主机和路径组合的请求转到一个默认的后端服务。
gcloud compute url-maps create web-map-http \
    --default-service web-backend-service

11.创建一个目标HTTP代理

gcloud compute target-http-proxies create http-lb-proxy \
    --url-map web-map-http

12.创建一个全局转发规则

一个转发规则及其对应的IP地址代表了谷歌云负载均衡器的前端配置。

gcloud compute forwarding-rules create http-content-rule \
    --address=lb-ipv4-1\
    --global \
    --target-http-proxy=http-lb-proxy \
    --ports=80