Lớp học lập trình LB HTTP bên ngoài với lớp học lập trình về Quản lý lưu lượng truy cập nâng cao (Envoy)

1. Giới thiệu

Chào mừng bạn đến với Lớp học lập trình về Quản lý lưu lượng truy cập nâng cao (Envoy) trong Lớp học lập trình HTTP bên ngoài!

Phiên bản mới nhất của Trình cân bằng tải ngoài HTTP(S) với tính năng Quản lý lưu lượng nâng cao chứa tất cả các tính năng của Trình cân bằng tải HTTP(S) bên ngoài toàn cầu cổ điển hiện tại của chúng tôi, nhưng với danh sách ngày càng nhiều gồm các tính năng Quản lý lưu lượng truy cập nâng cao. Một số chức năng trong số này là mới đối với Trình cân bằng tải và một số chức năng cung cấp các tính năng nâng cao cho các chức năng hiện có. Một số tính năng trong danh sách này bao gồm:

  • Phân chia lưu lượng truy cập có trọng số
  • Yêu cầu phản chiếu
  • Phát hiện điểm ngoại lai
  • Thử gửi lại yêu cầu
  • Chèn lỗi
  • Các lựa chọn khác về Đối tượng chung sở thích trong phiên phụ trợ
  • Các tuỳ chọn khác để Chuyển đổi tiêu đề
  • Chia sẻ tài nguyên trên nhiều nguồn gốc (CORS)
  • Các thuật toán cân bằng tải mới

Kiến thức bạn sẽ học được

  • Cách thiết lập Nhóm thực thể được quản lý cũng như các quy tắc tường lửa và VPC có liên quan
  • Cách sử dụng các tính năng quản lý lưu lượng truy cập nâng cao của trình cân bằng tải mới
  • Cách xác thực rằng các tính năng quản lý lưu lượng truy cập nâng cao đang hoạt động như dự kiến.

Bạn cần có

  • Kết nối mạng cơ bản và kiến thức cơ bản về HTTP
  • Kiến thức cơ bản về dòng lệnh Unix/Linux

Cấu trúc liên kết của lớp học lập trình và trường hợp sử dụng

dd8bd5e8e1341878.png

Hình 1 – Cấu trúc liên kết định tuyến trình cân bằng tải HTTP

Trong lớp học lập trình này, bạn sẽ thiết lập 3 nhóm thực thể được quản lý, một ở miền Đông, miền Tây và miền Trung. Bạn sẽ tạo một trình cân bằng tải https bên ngoài toàn cầu. Trình cân bằng tải sẽ sử dụng một số tính năng trong danh sách các tính năng nâng cao mà trình cân bằng tải dựa trên envoy hỗ trợ. Sau khi được triển khai, bạn sẽ tạo một số nội dung tải được mô phỏng và xác minh rằng các cấu hình mà bạn đặt đang hoạt động đúng cách.

2. Thiết lập và yêu cầu

Thiết lập môi trường theo tiến độ riêng

  1. Đăng nhập vào Google Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng và bạn có thể cập nhật chuỗi này bất cứ lúc nào.
  • Mã dự án phải là duy nhất trong tất cả các dự án Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này sau khi đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (và mã này thường được xác định là PROJECT_ID). Vì vậy, nếu không thích, bạn có thể tạo một mã ngẫu nhiên khác hoặc bạn có thể thử mã của riêng mình để xem có mã này chưa. Sau đó, video sẽ được "đóng băng" sau khi tạo dự án.
  • Có giá trị thứ ba là Project Number (Số dự án) mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu này.
  1. Tiếp theo, bạn sẽ cần bật tính năng thanh toán trong Cloud Console để sử dụng tài nguyên/API trên Cloud. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên để bạn không phải chịu thanh toán ngoài hướng dẫn này, hãy làm theo mọi thao tác "dọn dẹp" hướng dẫn ở cuối lớp học lập trình. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.

Khởi động Cloud Shell

Mặc dù bạn có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trong Đám mây.

Trong Bảng điều khiển GCP, hãy nhấp vào biểu tượng Cloud Shell ở thanh công cụ trên cùng bên phải:

55efc1aaa7a4d3ad.pngS

Sẽ chỉ mất một chút thời gian để cấp phép và kết nối với môi trường. Sau khi hoàn tất, bạn sẽ thấy như sau:

7ffe5cbb04455448.pngS

Máy ảo này chứa tất cả các công cụ phát triển mà bạn cần. Phiên bản này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Bạn có thể thực hiện tất cả công việc trong phòng thí nghiệm này chỉ bằng một trình duyệt.

Trước khi bắt đầu

Bên trong Cloud Shell, hãy đảm bảo rằng bạn thiết lập mã dự án

dự án danh sách cấu hình gcloud

Dự án thiết lập cấu hình gcloud [YOUR-PROJECT-NAME]

PROJECT_ID=[YOUR-PROJECT-NAME]

lặp lại $PROJECT_ID

Cho phép API

Bật tất cả dịch vụ cần thiết

gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable monitoring.googleapis.com

3. Tạo mạng lưới VPC

Tạo mạng lưới VPC

Của Cloud Shell

gcloud compute networks create httplbs --subnet-mode=auto

Đầu ra

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/httplbs].
NAME: httplbs
SUBNET_MODE: AUTO
BGP_ROUTING_MODE: REGIONAL
IPV4_RANGE:
GATEWAY_IPV4:

Tạo các quy tắc tường lửa VPC

Sau khi tạo VPC, giờ bạn sẽ tạo các quy tắc về tường lửa. Quy tắc tường lửa sẽ được dùng để cho phép tất cả IP truy cập IP ngoài trên trang web của ứng dụng kiểm thử trên cổng 80 đối với lưu lượng truy cập http.

Của Cloud Shell

gcloud compute firewall-rules create httplb-allow-http-rule \
--allow tcp:80 \
--network httplbs \
--source-ranges 0.0.0.0/0 \
--priority 700

Đầu ra

Creating firewall...working..Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/httplb-allow-http-rule].
Creating firewall...done.
NAME: httplb-allow-http-rule
NETWORK: httplbs
DIRECTION: INGRESS
PRIORITY: 700
ALLOW: tcp:80
DENY:
DISABLED: False

4. Thiết lập Nhóm thực thể được quản lý

Bạn cần thiết lập Nhóm thực thể được quản lý bao gồm các mẫu cho tài nguyên phụ trợ mà Trình cân bằng tải HTTP sử dụng. Trước tiên, chúng ta sẽ tạo Instance Mẫu xác định cấu hình cho máy ảo sẽ được tạo cho từng khu vực. Tiếp theo, đối với một phần phụ trợ ở mỗi khu vực, chúng ta sẽ tạo một Nhóm thực thể được quản lý tham chiếu đến một Mẫu thực thể.

Nhóm thực thể được quản lý có thể theo vùng hoặc theo Khu vực. Đối với bài tập trong phòng thí nghiệm này, chúng ta sẽ tạo 3 Nhóm thực thể được quản lý theo khu vực, một ở us-east1, một ở us-west1 và một ở us-central1.

Trong phần này, bạn có thể thấy tập lệnh khởi động được tạo sẵn. Tập lệnh này sẽ được tham chiếu khi tạo thực thể. Tập lệnh khởi động này cài đặt và bật các chức năng của máy chủ web mà chúng ta sẽ dùng để mô phỏng ứng dụng web. Vui lòng khám phá tập lệnh này.

Tạo mẫu thực thể phía Đông, Tây và Trung tâm

Bước đầu tiên là tạo mẫu thực thể us-east-1.

Của Cloud Shell

gcloud compute instance-templates create us-east1-template \
   --region=us-east1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-9 \
   --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'

Đầu ra

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-east1-template].
NAME: us-east1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:02:37.511-08:00

Bước tiếp theo là tạo mẫu thực thể us-west-1.

Của Cloud Shell

gcloud compute instance-templates create us-west1-template \
   --region=us-west1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-9 \
   --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'

Đầu ra

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-west1-template].
NAME: us-west1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:03:08.577-08:00

Bước tiếp theo là tạo mẫu thực thể us-central-1.

Của Cloud Shell

gcloud compute instance-templates create us-central1-template \
   --region=us-central1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-9 \
   --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'

Đầu ra

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-central1-template].
NAME: us-central1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:03:44.179-08:00

Giờ đây, bạn có thể xác minh các mẫu thực thể của chúng ta đã được tạo thành công bằng lệnh gcloud sau đây:

Của Cloud Shell

gcloud compute instance-templates list

Đầu ra

NAME                  MACHINE_TYPE   PREEMPTIBLE  CREATION_TIMESTAMP
us-central1-template   n1-standard-1         2021-11-09T09:25:37.263-08:00
us-east1-template      n1-standard-1         2021-11-09T09:24:35.275-08:00
us-west1-template      n1-standard-1         2021-11-09T09:25:08.016-08:00

Tạo nhóm thực thể được quản lý ở miền Đông, miền Tây và miền Trung

Bây giờ, chúng ta phải tạo một nhóm thực thể được quản lý từ các mẫu thực thể đã tạo trước đó.

Của Cloud Shell

gcloud compute instance-groups managed create us-east1-mig \
--base-instance-name=us-east1-mig \
--size=1 \
--template=us-east1-template \
--zone=us-east1-b 

Đầu ra

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-east1-b/instanceGroupManagers/us-east1-mig].
NAME: us-east1-mig
LOCATION: us-east1-b
SCOPE: zone
BASE_INSTANCE_NAME: us-east1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-east1-template
AUTOSCALED: no

Của Cloud Shell

gcloud compute instance-groups managed create us-west1-mig \
--base-instance-name=us-west1-mig \
--size=1 \
--template=us-west1-template \
--zone=us-west1-a  

Đầu ra

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroupManagers/us-west1-mig].
NAME: us-west1-mig
LOCATION: us-west1-a
SCOPE: zone
BASE_INSTANCE_NAME: us-west1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-west1-template
AUTOSCALED: no

Của Cloud Shell

gcloud compute instance-groups managed create us-central1-mig \
--base-instance-name=us-central1-mig \
--size=1 \
--template=us-central1-template \
--zone=us-central1-a 

Đầu ra

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-central1-a/instanceGroupManagers/us-central1-mig].
NAME: us-central1-mig
LOCATION: us-central1-a
SCOPE: zone
BASE_INSTANCE_NAME: us-central1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-central1-template
AUTOSCALED: no

Chúng ta có thể xác minh các nhóm thực thể của mình đã được tạo thành công hay chưa bằng lệnh gcloud sau đây:

Của Cloud Shell

gcloud compute instance-groups list

Đầu ra

NAME                  LOCATION      SCOPE   NETWORK         MANAGED INSTANCES
us-central1-mig       us-central1   zone    httplbs          Yes      1
us-west1-mig          us-west1      zone    httplbs          Yes      1
us-east1-mig          us-east1      zone    httplbs          Yes      1

Xác minh chức năng của máy chủ web

Mỗi phiên bản đều được định cấu hình để chạy máy chủ web Apache bằng tập lệnh PHP đơn giản hiển thị:

c87ca81d3125ac61.png

Để đảm bảo máy chủ web của bạn hoạt động bình thường, hãy chuyển đến Compute Engine -> thực thể máy ảo. Đảm bảo rằng các bản sao mới (ví dụ: us-east1-mig-xxx) đã được tạo theo định nghĩa về nhóm thực thể tương ứng.

Bây giờ, hãy thực hiện yêu cầu web trong trình duyệt của bạn tới yêu cầu đó để đảm bảo máy chủ web đang chạy (quá trình này có thể mất một phút để khởi động). Trên trang các phiên bản máy ảo trong phần Compute Engine, hãy chọn một phiên bản do nhóm thực thể của bạn tạo rồi nhấp vào IP bên ngoài (công khai) của phiên bản đó.

Hoặc, trong trình duyệt, hãy điều hướng đến http://<IP_Address>

5. Thiết lập Trình cân bằng tải

Tạo tính năng Kiểm tra tình trạng

Trước tiên, chúng tôi phải tạo một quy trình kiểm tra tình trạng cơ bản để đảm bảo các dịch vụ của chúng tôi có thể hoạt động bình thường. Chúng tôi sẽ tạo một quy trình kiểm tra tình trạng cơ bản. Bạn sẽ có nhiều lựa chọn tuỳ chỉnh nâng cao hơn.

Của Cloud Shell

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

Đặt trước địa chỉ IP ngoài

Ở bước này, bạn cần phải đặt trước một địa chỉ IP tĩnh có sẵn trên toàn cầu. Địa chỉ này sau đó sẽ được đính kèm vào Trình cân bằng tải.

Của Cloud Shell

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

Hãy nhớ ghi lại Địa chỉ IP đã được đặt trước.

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

Tạo dịch vụ phụ trợ

Bây giờ, chúng ta phải tạo một dịch vụ phụ trợ cho từng nhóm thực thể được quản lý mà chúng ta đã tạo trước đó. Một hướng cho miền Đông, miền Tây và miền Trung.

Tạo dịch vụ phụ trợ cho nhóm thực thể được quản lý ở miền Đông.

Của Cloud Shell

gcloud compute backend-services create east-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

Tạo một dịch vụ phụ trợ cho nhóm thực thể do phương Tây quản lý.

Của Cloud Shell

gcloud compute backend-services create west-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

Tạo dịch vụ phụ trợ cho nhóm thực thể do Trung tâm quản lý.

Của Cloud Shell

gcloud compute backend-services create central-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

Thêm MIG vào dịch vụ phụ trợ

Giờ đây, khi đã tạo các dịch vụ phụ trợ tương ứng cho từng cụm ứng dụng, chúng ta phải thêm các Nhóm phiên bản được quản lý mà chúng ta đã tạo trước đó vào mỗi dịch vụ phụ trợ.

Thêm East MIG vào dịch vụ phụ trợ.

Của Cloud Shell

gcloud compute backend-services add-backend east-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-east1-mig \
    --instance-group-zone=us-east1-b \
    --global

Thêm West MIG vào dịch vụ phụ trợ.

Của Cloud Shell

gcloud compute backend-services add-backend west-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-west1-mig \
    --instance-group-zone=us-west1-a \
    --global

Thêm MIG Trung tâm vào dịch vụ phụ trợ.

Của Cloud Shell

gcloud compute backend-services add-backend central-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-central1-mig \
    --instance-group-zone=us-central1-a \
    --global

Tạo bản đồ URL

Bản đồ URL là nơi các tính năng quản lý lưu lượng truy cập nâng cao cho phòng thí nghiệm này sẽ hoạt động. Chúng tôi phải tạo một tệp .yaml chứa cấu hình đó. Trong tệp .yaml, chúng tôi đã tạo một kết quả so khớp tiền tố trên /roundrobbin, do đó, chỉ có các cấu hình này ảnh hưởng đến việc so khớp lưu lượng truy cập /roundrobbin. Chúng ta đã chỉ định rằng 50% lưu lượng truy cập nên đến dịch vụ east-backend và 50% lưu lượng truy cập nên đến dịch vụ west-backend-service. Chúng tôi cũng đã thêm một giá trị tiêu đề phản hồi:{test}. Giá trị này sẽ xuất hiện trên tất cả các câu trả lời. Cuối cùng, chúng tôi bổ sung thêm rằng tất cả lưu lượng truy cập phải được phản ánh sang dịch vụ phụ trợ trung tâm. Lưu lượng truy cập được sao chép và gửi tại đây chỉ cho mục đích thử nghiệm.

Lưu ví dụ dưới dạng tệp .yaml trên máy của bạn.

defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
kind: compute #urlMap
name: web-map-http
hostRules:
- hosts:
  - '*'
  pathMatcher: matcher1
pathMatchers:
- defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
  name: matcher1
  routeRules:
  - matchRules:
    - prefixMatch: /roundrobbin
    priority: 2
    headerAction:
        responseHeadersToAdd:
          - headerName: test
            headerValue: value
            replace: True
    routeAction:
        weightedBackendServices:
        - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
          weight: 50
        - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/west-backend-service
          weight: 50
        retryPolicy:
            retryConditions: ['502', '504']
            numRetries: 3
            perTryTimeout:
                seconds: 1
                nanos: 50
        requestMirrorPolicy:
          backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/central-backend-service

Tạo Bản đồ URL để nhập tài liệu từ máy của bạn. Lưu ý rằng đường dẫn nguồn sẽ khác nhau, tuỳ thuộc vào nơi bạn lưu tệp .yaml.

Của Cloud Shell

gcloud compute url-maps import web-map-http \
   --source /Users/[USERNAME]/Documents/Codelab/lbconfig.yaml \
   --global

Tạo giao diện người dùng HTTP

Bước cuối cùng trong việc tạo trình cân bằng tải là tạo giao diện người dùng. Thao tác này sẽ liên kết địa chỉ IP mà bạn đặt trước trước đó với bản đồ URL của trình cân bằng tải mà bạn đã tạo.

Của Cloud Shell

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

Tiếp theo, bạn cần tạo quy tắc chuyển tiếp chung. Quy tắc này sẽ ánh xạ địa chỉ IP đã đặt trước trước đó với proxy HTTP.

Của Cloud Shell

gcloud compute forwarding-rules create http-content-rule \
    --load-balancing-scheme EXTERNAL_MANAGED \
    --address=lb-ipv4-2 \
    --global \
    --target-http-proxy=http-lb-proxy-adv \
    --ports=80

6. Xác minh rằng các Tính năng lưu lượng truy cập nâng cao đang hoạt động

Để xác minh rằng tính năng phân chia lưu lượng truy cập được triển khai đang hoạt động, bạn cần tạo một số lượt tải. Để làm việc này, chúng ta sẽ tạo một máy ảo mới để mô phỏng tải.

Tạo quy tắc cho phép tường lửa SSH

Để tạo lưu lượng truy cập từ bạn qua SSH vào máy ảo mà bạn gửi, trước tiên, bạn cần tạo một quy tắc tường lửa để cho phép lưu lượng truy cập SSH vào máy ảo đó.

Của Cloud Shell

gcloud compute firewall-rules create fw-allow-ssh \
    --network=httplbs \
    --action=allow \
    --direction=ingress \
    --target-tags=allow-ssh \
    --rules=tcp:22

Đầu ra

NAME          NETWORK  DIRECTION  PRIORITY  ALLOW   DENY  DISABLED
fw-allow-ssh  httplbs  INGRESS    1000      tcp:22        False

Tạo Siege-vm

Bây giờ, bạn sẽ tạo siege-vm mà bạn sẽ dùng để tạo lượt tải

Của Cloud Shell

gcloud compute instances create siege-vm \
    --network=httplbs \
    --zone=us-east4-c \
    --machine-type=e2-medium \
    --tags=allow-ssh,http-server \
    --metadata=startup-script='sudo apt-get -y install siege'

Đầu ra

NAME     ZONE        MACHINE_TYPE INTERNAL_IP  EXTERNAL_IP    STATUS
siege-vm us-east4-c  e2-medium    10.150.0.3   34.85.218.119  RUNNING

Tiếp theo, bạn có thể SSH vào máy ảo mà mình đã tạo. Sau khi tạo tệp này, hãy nhấp vào SSH để chạy thiết bị đầu cuối và kết nối.

Sau khi kết nối, hãy chạy lệnh sau để tạo tải. Sử dụng địa chỉ IP mà trước đó bạn đã đặt trước cho trình cân bằng tải http bên ngoài.

Của Cloud Shell

siege -c 250 http://$lb-ipv4-2/roundrobbin

Đầu ra

New configuration template added to /home/cloudcurriculumdeveloper/.siege
Run siege -C to view the current settings in that file
[alert] Zip encoding disabled; siege requires zlib support to enable it: No such file or directory
** SIEGE 4.0.2
** Preparing 250 concurrent users for battle.
The server is now under siege...

Kiểm tra tình trạng phân phối tải

Bây giờ, Chiến dịch bao vây đang chạy, đã đến lúc kiểm tra để đảm bảo rằng lưu lượng truy cập đang được phân bổ đồng đều cho các nhóm thực thể được quản lý ở phía đông và phía tây. Ngoài ra, bạn có thể kiểm tra để đảm bảo rằng tính năng phản chiếu lưu lượng truy cập đang hoạt động và lưu lượng truy cập đang được gửi đến nhóm thực thể được quản lý ở trung tâm.

Trong Cloud Console, trên trình đơn Điều hướng, hãy nhấp vào Network Services > Cân bằng tải. Chọn web-map-http của trình cân bằng tải. Chuyển đến thẻ Giám sát và bạn có thể thấy biểu đồ bên dưới.

f4d6803db44be253.png

Bạn sẽ có thể xem chế độ phân chia lưu lượng truy cập theo thời gian thực cho MIG này. Lưu lượng truy cập sẽ được chia đều vì bạn đã định cấu hình tỷ lệ phân chia theo thứ tự vòng tròn là 50/50.

Để kiểm tra xem chính sách phản chiếu lưu lượng truy cập mà bạn đã tạo có hoạt động không, bạn cần kiểm tra hoạt động sử dụng nhóm thực thể được quản lý trung tâm trong dịch vụ phụ trợ trung tâm. Để thực hiện việc này, hãy chuyển đến phần tính toán, công cụ tính toán, nhóm thực thể rồi chọn us-central1-mig. Tiếp theo, hãy chuyển đến thẻ giám sát.

cf25e44d511529e7.png

Bạn sẽ thấy các biểu đồ được điền sẵn, minh hoạ rằng lưu lượng truy cập đã được đồng bộ hoá với nhóm thực thể được quản lý này.

Dừng cuộc bao vây

Bây giờ, bạn đã chứng minh được rằng tính năng chia tách lưu lượng truy cập nâng cao đang hoạt động, đã đến lúc bạn dừng vòng vây. Để thực hiện việc này, hãy quay lại thiết bị đầu cuối SSH của siege-vm rồi nhấn tổ hợp phím Ctrl+C để dừng cuộc bao vây.

Xác thực tiêu đề phản hồi đang được gửi

Trước khi dọn dẹp, bạn có thể xác thực nhanh xem tiêu đề phản hồi thích hợp có đang được gửi bởi trình cân bằng tải http hay không. Bạn đã định cấu hình trang này để gửi kiểm tra tiêu đề có giá trị nội dung. Chạy lệnh curl từ Cloud shell sẽ đưa ra phản hồi dự kiến.

Của Cloud Shell

curl -svo /dev/null http://lb-ipv4-2/roundrobbin

Đầu ra

*   Trying lb-ipv4-2..
* TCP_NODELAY set
* Connected to  lb-ipv4-2 ( lb-ipv4-2) port 80 (#0)
> GET /roundrobbin HTTP/1.1
> Host:  lb-ipv4-2
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 404 Not Found
< date: Wed, 10 Nov 2021 17:05:27 GMT
< server: envoy
< Content-Length: 273
< content-type: text/html; charset=iso-8859-1
< via: 1.1 google
< test: value
<
{ [273 bytes data]
* Connection #0 to host 34.149.2.26 left intact
* Closing connection 0

7. Vệ sinh phòng thí nghiệm

Giờ đây, khi chúng ta hoàn tất môi trường phòng thí nghiệm, đã đến lúc chia nhỏ môi trường này. Vui lòng chạy các lệnh sau để xoá môi trường thử nghiệm.

Của Cloud Shell

gcloud compute instances delete siege-vm --zone=us-east4-c

gcloud compute forwarding-rules delete http-content-rule --global
gcloud compute target-http-proxies delete http-lb-proxy-adv
gcloud compute url-maps delete web-map-http
gcloud compute backend-services delete east-backend-service --global
gcloud compute backend-services delete west-backend-service --global
gcloud compute backend-services delete central-backend-service --global

gcloud compute addresses delete lb-ipv4-2 --global
gcloud compute health-checks delete http-basic-check 

gcloud compute instance-groups managed delete us-east1-mig --zone us-east1-b
gcloud compute instance-groups managed delete us-west1-mig --zone us-west1-a
gcloud compute instance-groups managed delete us-central1-mig --zone us-central1-a

gcloud compute instance-templates delete "us-east1-template" 
gcloud compute instance-templates delete "us-west1-template" 
gcloud compute instance-templates delete "us-central1-template" 

gcloud compute firewall-rules delete httplb-allow-http-rule
gcloud compute firewall-rules delete fw-allow-ssh

gcloud compute networks delete httplbs 

8. Xin chúc mừng!

Bạn đã hoàn thành Lớp học lập trình về Quản lý lưu lượng truy cập nâng cao (Envoy) qua HTTP bên ngoài!

Nội dung đã đề cập

  • Cách thiết lập Nhóm thực thể được quản lý cũng như các quy tắc tường lửa và VPC có liên quan
  • Cách sử dụng các tính năng quản lý lưu lượng truy cập nâng cao của trình cân bằng tải mới
  • Cách xác thực rằng các tính năng quản lý lưu lượng truy cập nâng cao đang hoạt động như dự kiến.

Các bước tiếp theo

  • Hãy thử một số tính năng định tuyến nâng cao khác như viết lại URL, thêm tiêu đề CORS và nhiều tính năng khác ( link)