Google | GCP 负载均衡器实战

2,152 阅读3分钟

我正在参加「掘金·启航计划」

本篇文章介绍云服务提供商GCP的负载均衡器创建方法,整个过程基于Cloud Shell 命令行工具。

设置默认区域、可用区

gcloud config set compute/region us-central1
gcloud config set compute/zone us-central1-a

环境准备

基于Compute Engine 创建三台虚拟机实例,并在实例上安装Apache,并配置一条HTTP 流量访问这些实例的防火墙规则。

//instance1
  gcloud compute instances create www1 \
    --zone= \
    --tags=network-lb-tag \
    --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
      service apache2 restart
      echo "
<h3>Web Server: www1</h3>" | tee /var/www/html/index.html'

//instance2
  gcloud compute instances create www2 \
    --zone= \
    --tags=network-lb-tag \
    --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
      service apache2 restart
      echo "
<h3>Web Server: www2</h3>" | tee /var/www/html/index.html'

//instance3
  gcloud compute instances create www3 \
    --zone= \
    --tags=network-lb-tag \
    --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
      service apache2 restart
      echo "
<h3>Web Server: www3</h3>" | tee /var/www/html/index.html'

//创建防火墙规则允许外部流量访问
gcloud compute firewall-rules create www-firewall-network-lb \
    --target-tags network-lb-tag --allow tcp:80
	
//可查看创建的实例列表
gcloud compute instances list

配置负载均衡服务

为负载平衡器创建静态外部 IP 地址

   gcloud compute addresses create network-lb-ip-1 \
    --region  

添加旧版 HTTP 运行状况检查资源

gcloud compute http-health-checks create basic-check

向实例所在的区域添加目标池,即创建目标池并执行必要的运行状况检查,确保服务正常运行

  gcloud compute target-pools create www-pool \
    --region  --http-health-check basic-check

将实例添加到目标池

gcloud compute target-pools add-instances www-pool \
    --instances www1,www2,www3

最后添加转发规则

gcloud compute forwarding-rules create www-rule \
    --region   \
    --ports 80 \
    --address network-lb-ip-1 \
    --target-pool www-pool

至此,负载均衡服务配置完成,接下来需要将流量发送到转发规则。

gcloud compute forwarding-rules describe www-rule --region us-central1

使用curl命令来访问外部IP地址来观察流量分散到不同的实例

while true; do curl -m1 IP_ADDRESS; done

结果显示,三个实例会随机接受来自curl命令的响应。

image.png

HTTP(S) 负载平衡

上面提到的是传统的负载均衡器,GCP还提供一种全球网络层面的负载均衡器,即HTTP(S) 负载平衡。

HTTP(S) 负载平衡是以 Google Front End (GFE) 为基础实现的。这些 GFE 分布于全球各地,可通过 Google 的全球网络和控制层面协同运作。您可以将网址规则配置为将一些网址路由到一组实例,然后将其他网址路由到其他实例。

请求始终会被路由到距离用户最近的那组实例,当然,该组实例必须有足够的处理能力且适合处理该请求才行。如果最近的那组实例没有足够的处理能力,则系统会将该请求发送到有足够处理能力的最近一组实例。

本次实例就不讲这么复杂的负载均衡方式,有兴趣去GCP了解。