Google | GCP HTTP负载均衡

1,353 阅读2分钟

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

本篇文章首先回顾之前讲到的虚拟机,K8s的创建方式,同时介绍HTTP负载均衡器创建方法,整个过程基于Cloud Shell 命令行工具。

创建计算实例

  1. 将实例命名为 nucleus-jumphost-923 。
  2. 使用“f1-micro”机器类型。
  3. 使用默认映像类型 (Debian Linux)。
  4. 配置可用区域为us-east1-b

gcloud config set compute/zone us-east1-b

gcloud compute instances create nucleus-jumphost-853 --machine-type f1-micro  --zone  us-east1-b

image.png

创建K8s服务集群

  1. 创建集群(位于 us-east1-b 可用区)以托管该服务。
  2. 使用 Docker 容器 hello-app (gcr.io/google-samples/hello-app:2.0) 作为临时占位;该团队稍后会将该容器替换为自己创建的容器。
  3. 在端口 8081 上公开该应用。
gcloud config set compute/zone  us-east1-b 

gcloud container clusters create --machine-type=e2-medium lab-cluster

gcloud container clusters get-credentials lab-cluster 

kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:2.0

kubectl expose deployment hello-server --type=LoadBalancer --port 8081


image.png

设置HTTP负载均衡器

上文讲到了传统的网络负载均衡器,接下来您将基于包含 2 个 nginx 网络服务器的代管式实例组创建 HTTP 负载均衡器。并且使用以下代码配置网络服务器;

cat << EOF > startup.sh
#! /bin/bash
apt-get update
apt-get install -y nginx
service nginx start
sed -i -- 's/nginx/Google Cloud Platform - '"\$HOSTNAME"'/' /var/www/html/index.nginx-debian.html
EOF

您需要执行的操作:

  1. 创建一个实例模板。
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 -y nginx  
		service nginx start  
		sed -i -- "s/nginx/Google Cloud Platform - " \$HOSTNAME"'/' /var/www/html/index.nginx-debian.html'

  1. 创建目标池。
  gcloud compute target-pools create www-pool \
    --region  --http-health-check basic-check
  1. 创建代管式实例组。
gcloud compute instance-groups managed create lb-backend-group \
   --template=lb-backend-template --size=2 --zone= 
  1. 创建一条名为 accept-tcp-rule-315 的防火墙规则,以允许定向到端口 80 的 TCP 流量。

gcloud compute firewall-rules create accept-tcp-rule-315 \
  --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

  1. 创建一项健康检查。
gcloud compute health-checks create http http-basic-check \
  --port 80
  1. 创建后端服务,然后使用指定端口 (http:80) 挂接代管式实例组。
gcloud compute backend-services create web-backend-service \
  --protocol=HTTP \
  --port-name=http \
  --health-checks=http-basic-check \
  --global
  
  
gcloud compute backend-services add-backend web-backend-service \
  --instance-group=lb-backend-group \
  --instance-group-zone= \
  --global
  
  
  1. 创建网址映射并定位到 HTTP 代理,以将请求路由到您的网址映射。
gcloud compute url-maps create web-map-http \
    --default-service web-backend-service
	
gcloud compute target-http-proxies create http-lb-proxy \
    --url-map web-map-http

  1. 创建转发规则。
gcloud compute forwarding-rules create http-content-rule \
    --address=lb-ipv4-1\
    --global \
    --target-http-proxy=http-lb-proxy \
    --ports=80