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ề Trình cân bằng tải HTTP bên ngoài có tính năng Quản lý lưu lượng truy cập nâng cao (Envoy)!

Phiên bản mới nhất của Trình cân bằng tải bên ngoài HTTP(S) có tính năng Quản lý lưu lượng truy cập nâng cao có tất cả các tính năng của Trình cân bằng tải bên ngoài HTTP(S) toàn cầu phiên bản cũ hiện có, nhưng có danh sách ngày càng tăng 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à chức năng mới đối với Bộ cân bằng tải của chúng tôi, còn 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ó. Sau đây là danh sách một phần các chức năng này:

  • Phân tách lưu lượng truy cập có tần suất
  • Yêu cầu phản chiếu
  • Phát hiện giá trị ngoại lệ
  • Thử gửi lại yêu cầu
  • Chèn lỗi
  • Các lựa chọn khác về Backend Session Affinity
  • Các lựa chọn bổ sung về việc chuyển đổi tiêu đề
  • Chia sẻ tài nguyên trên nhiều nguồn gốc (CORS)
  • 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 một Nhóm phiên bản được quản lý và các quy tắc tường lửa cũng như VPC liên kết
  • 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 bộ 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ó

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

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

dd8bd5e8e1341878.png

Hình 1 – Cấu trúc liên kết định tuyến của 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 phiên bản được quản lý, một nhóm ở 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 chức năng nâng cao mà trình cân bằng tải dựa trên envoy hỗ trợ. Sau khi triển khai, bạn sẽ tạo một số tải mô phỏng và xác minh rằng các cấu hình bạn đặt đang hoạt động phù hợp.

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

Thiết lập môi trường theo tốc độ của riêng bạn

  1. Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một 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.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Tên dự án là tên hiển thị cho những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn luôn có thể cập nhật thông tin này.
  • Mã dự án là giá trị duy nhất trên tất cả các dự án trê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 thì bạn không cần quan tâm đến chuỗi này. 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 (thường được xác định là PROJECT_ID). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có được chấp nhận hay không. Bạn không thể thay đổi tên này sau bước này và tên này sẽ tồn tại trong suốt thời gian của dự án.
  • Để bạn nắm được thông tin, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
  1. Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá dự án. 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ù 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 trên Cloud.

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

55efc1aaa7a4d3ad.png

Quá trình này chỉ mất vài phút để cung cấp và kết nối với môi trường. Khi quá trình này kết thúc, bạn sẽ thấy như sau:

7ffe5cbb04455448.png

Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nền tảng này cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện mọi thao tác trong lớp học lập trình này trong trình duyệt. Bạn không cần cài đặt bất cứ thứ gì.

Trước khi bắt đầu

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

gcloud config list project

gcloud config set project [YOUR-PROJECT-NAME]

PROJECT_ID=[YOUR-PROJECT-NAME]

echo $PROJECT_ID

Cho phép API

Bật tất cả cá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 VPC

Tạo mạng VPC

Từ 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 quy tắc tường lửa VPC

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

Từ 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 phiên bản được quản lý, trong đó có các mẫu cho tài nguyên phụ trợ mà Bộ cân bằng tải HTTP sử dụng. Trước tiên, chúng ta sẽ tạo các Mẫu phiên bản để xác định cấu hình cho các VM 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 phiên bản được quản lý tham chiếu đến một Mẫu phiên bản.

Nhóm phiên bản được quản lý có thể có phạm vi theo khu vực hoặc theo vùng. Trong bài tập này, chúng ta sẽ tạo 3 Nhóm phiên bản được quản lý theo khu vực, một nhóm ở us-east1, một nhóm ở us-west1 và một nhóm ở us-central1.

Trong phần này, bạn có thể thấy một tập lệnh khởi động được tạo sẵn sẽ được tham chiếu khi tạo phiên bản. 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 một ứng dụng web. Bạn có thể khám phá tập lệnh này.

Tạo mẫu phiên bản miền Đông, miền Tây và miền Trung

Bước đầu tiên là tạo mẫu phiên bản us-east-1.

Từ Cloud Shell

gcloud compute instance-templates create us-east1-template \
   --region=us-east1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-12 \
   --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 phiên bản us-west-1.

Từ Cloud Shell

gcloud compute instance-templates create us-west1-template \
   --region=us-west1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-12 \
   --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 phiên bản us-central-1.

Từ Cloud Shell

gcloud compute instance-templates create us-central1-template \
   --region=us-central1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-12 \
   --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 rằng các mẫu phiên bản của chúng tôi đã được tạo thành công bằng lệnh gcloud sau:

Từ 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 phiên bản đượ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 phiên bản được quản lý từ các mẫu phiên bản mà chúng ta đã tạo trước đó.

Từ 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

Từ 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

Từ 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 rằng các nhóm phiên bản đã được tạo thành công bằng lệnh gcloud sau:

Từ 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 được định cấu hình để chạy một máy chủ web Apache bằng một tập lệnh PHP đơn giản giúp hiển thị:

c87ca81d3125ac61.png

Để đảm bảo máy chủ web của bạn đang hoạt động đúng cách, hãy chuyển đến Compute Engine -> Phiên bản VM. Đảm bảo rằng các phiên bản mới (ví dụ: us-east1-mig-xxx) đã được tạo theo định nghĩa nhóm phiên bản của chúng.

Bây giờ, hãy thực hiện một yêu cầu web trong trình duyệt để đảm bảo máy chủ web đang chạy (quá trình này có thể mất một phút để bắt đầu). Trên trang VM instances (Các phiên bản máy ảo) trong Compute Engine, hãy chọn một phiên bản do nhóm phiên bản 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 truy cập vào http://<IP_Address>

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

Tạo quy trình kiểm tra tình trạng

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

Từ Cloud Shell

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

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

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

Từ 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 cho miền Đông, miền Tây và miền Trung.

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

Từ 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 phiên bản được quản lý ở miền Tây.

Từ 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 phiên bản được quản lý ở Trung tâm.

Từ 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 Nhóm thực thể được quản lý mà chúng ta đã tạo trước đó vào từng dịch vụ phụ trợ.

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

Từ 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ợ.

Từ 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ợ.

Từ 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 chứa 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. Chúng ta phải tạo một tệp .yaml chứa cấu hình. Trong tệp .yaml, chúng ta đã tạo một quy tắc so khớp tiền tố trên /roundrobbin, vì vậy, chỉ lưu lượng truy cập khớp với /roundrobbin mới chịu ảnh hưởng của các cấu hình này. Chúng tôi đã chỉ định rằng 50% lưu lượng truy cập sẽ chuyển đến east-backend-service và 50% lưu lượng truy cập sẽ chuyển đến west-backend-service. Ngoài ra, chúng tôi đã thêm một giá trị tiêu đề phản hồi:{test} sẽ xuất hiện trên tất cả các phản hồi. Cuối cùng, chúng tôi đã thêm yêu cầu rằng tất cả lưu lượng truy cập phải được phản chiếu đến central-backend-service. Lưu lượng truy cập được sao chép và gửi đến đây chỉ nhằm mục đích thử nghiệm.

Lưu ví dụ này 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 URL Map bằng cách nhập tài liệu từ máy tính của bạn. Xin 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.

Từ 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 quá trình 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ẽ ánh xạ địa chỉ IP mà bạn đã đặt trước đó vào bản đồ URL của bộ cân bằng tải mà bạn đã tạo.

Từ 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 một quy tắc chuyển tiếp chung để ánh xạ địa chỉ IP đã đặt trước trước đó đến proxy HTTP.

Từ 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 nâng cao về giao thông đang hoạt động

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

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

Để SSH vào VM mà chúng ta sẽ tạo lưu lượng truy cập, 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 VM.

Từ 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

Giờ đây, bạn sẽ tạo siege-vm mà bạn sẽ dùng để tạo tải

Từ 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 VM mà bạn đã tạo. Sau khi tạo, hãy nhấp vào SSH để chạy một 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à bạn đã đặt trước cho trình cân bằng tải http bên ngoài.

Từ 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 mức phân bổ tải

Giờ đây, khi Siege đang chạy, bạn cần kiểm tra để đảm bảo lưu lượng truy cập được phân phối đều cho các nhóm phiên bản đượ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 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 phiên bản đượ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 Dịch vụ mạng > Cân bằng tải. Chọn trình cân bằng tải web-map-http. Chuyển đến thẻ Giám sát, bạn sẽ thấy biểu đồ bên dưới.

f4d6803db44be253.png

Bạn sẽ có thể thấy việc 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 được phân chia đều vì bạn đã định cấu hình mức phân chia 50/50 theo phương thức luân phiên.

Để 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 hay không, bạn cần kiểm tra mức sử dụng của nhóm phiên bản được quản lý central-backend-service. Để thực hiện việc này, hãy chuyển đến phần Compute (Điện toán), Compute Engine, Instance Groups (Nhóm phiên bản) 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 cho thấy lưu lượng truy cập đã được phản chiếu đến nhóm phiên bản được quản lý này.

Ngừng cuộc bao vây

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

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ể nhanh chóng xác thực rằng bộ cân bằng tải http đang gửi tiêu đề phản hồi thích hợp. Bạn đã định cấu hình để gửi kiểm thử tiêu đề có giá trị nội dung. Việc chạy lệnh curl từ Cloud Shell sẽ cho ra phản hồi như mong đợi.

Từ 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. Dọn dẹp phòng thí nghiệm

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

Từ 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 tất Lớp học lập trình về LB HTTP bên ngoài có tính năng Quản lý lưu lượng truy cập nâng cao (Envoy)!

Nội dung đã đề cập

  • Cách thiết lập một Nhóm phiên bản được quản lý và các quy tắc tường lửa cũng như VPC liên kết
  • 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 bộ 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 ( đường liên kết)