theme: orange
我正在参加「掘金·启航计划」
本篇文章介绍云服务提供商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 "
Web Server: www1
" | 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 "
Web Server: www2
" | 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 "
Web Server: www3
" | 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
命令的响应。
HTTP(S) 负载平衡
上面提到的是传统的负载均衡器,GCP还提供一种全球网络层面的负载均衡器,即HTTP(S) 负载平衡。
HTTP(S) 负载平衡是以 Google Front End (GFE) 为基础实现的。这些 GFE 分布于全球各地,可通过 Google 的全球网络和控制层面协同运作。您可以将网址规则配置为将一些网址路由到一组实例,然后将其他网址路由到其他实例。
请求始终会被路由到距离用户最近的那组实例,当然,该组实例必须有足够的处理能力且适合处理该请求才行。如果最近的那组实例没有足够的处理能力,则系统会将该请求发送到有足够处理能力的最近一组实例。
本次实例就不讲这么复杂的负载均衡方式,有兴趣去GCP了解。