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
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
- Đă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.
- 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.
- 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:
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:
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ị:
Để đả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.
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.
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)