Sử dụng Trình cân bằng tải kết hợp HTTP bên ngoài để truy cập Nhóm thiết bị đầu cuối mạng

1. Giới thiệu

Chiến lược kết hợp là một giải pháp thực tế để bạn có thể thích ứng với những nhu cầu liên tục thay đổi của thị trường và từng bước hiện đại hoá ứng dụng của mình. Tính năng hỗ trợ kết hợp cho trình cân bằng tải HTTP nội bộ và bên ngoài của Google Cloud giúp mở rộng tính năng cân bằng tải trên đám mây sang các phần phụ trợ tại cơ sở hạ tầng riêng và các nền tảng đám mây khác, đồng thời là một yếu tố thúc đẩy quan trọng cho chiến lược kết hợp của bạn. Quá trình này có thể là tạm thời để cho phép bạn di chuyển sang một giải pháp dựa trên đám mây hiện đại hoặc một thành phần cố định cố định trong cơ sở hạ tầng CNTT của tổ chức.

3312e69c63b02f73.pngs

Trong phòng thí nghiệm này, bạn sẽ tìm hiểu cách tạo Nhóm thiết bị đầu cuối mạng (NEG) bằng hai máy ảo có thể truy cập từ Trình cân bằng tải chung(các) HTTP bên ngoài. Mặc dù NEG trong phòng thí nghiệm này nằm trong GCP, nhưng hệ thống cũng sử dụng quy trình tương tự để giao tiếp với các tài nguyên công khai hoặc tại cơ sở thông qua khả năng kết nối của địa chỉ IP.

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

  • Tạo một VPC tuỳ chỉnh
  • Tạo hai máy ảo (VM) dùng làm Nhóm thiết bị đầu cuối mạng (NEG)
  • Tạo Trình cân bằng tải kết hợp, dịch vụ phụ trợ và các hoạt động kiểm tra tình trạng liên quan
  • Tạo quy tắc tường lửa cho phép truy cập vào Trình cân bằng tải
  • Cloud Router và NAT sẽ được tạo để cho phép cập nhật gói từ Internet
  • Xác thực khả năng kết nối của Nhóm thiết bị đầu cuối mạng

Bạn cần có

  • Kiến thức về trình cân bằng tải

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

  1. Đăng nhập vào 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.

96a9c957bc475304.pngS

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Tên dự án là giá trị nhận dạng cá nhân của bạn cho dự án này. Miễn là tuân theo quy ước đặt tên, bạn có thể sử dụng bất kỳ thứ gì bạn muốn và có thể cập nhật thông tin đó 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 (không thể thay đổi sau khi đã đặt). Bảng điều khiển Cloud 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.
  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 của Google 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í. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" sẽ tư vấn cho bạn cách tắt tài nguyên để bạn không phải chịu thanh toán ngoài hướng dẫn này. 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:

bce75f34b2c53987.png

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:

f6ef2b5f13479f3a.png

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.

2. 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

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]

Perform setting your projectID:
projectid=YOUR-PROJECT-ID
echo $projectid

3. Tạo mạng VPC chế độ tuỳ chỉnh mới

Trong nhiệm vụ này, bạn sẽ tạo một Đám mây riêng ảo (VPC), nền tảng của mạng lưới.

Mạng VPC

Của Cloud Shell

gcloud compute networks create hybrid-network-lb --subnet-mode custom

Tạo mạng con

Của Cloud Shell

gcloud compute networks subnets create network-endpoint-group-subnet --network hybrid-network-lb --range 192.168.10.0/24 --region us-west1

Tạo thực thể Cloud NAT

Mặc dù không nhất thiết phải sử dụng kết nối mạng kết hợp, nhưng phiên bản điện toán cần có kết nối Internet để tải ứng dụng và bản cập nhật xuống.

Trong nhiệm vụ này, bạn sẽ tạo một phiên bản Cloud Router và NAT cho phép kết nối Internet với các phiên bản VM.

Tạo Cloud Router

Của Cloud Shell

gcloud compute routers create crnat --network hybrid-network-lb --region us-west1

Tạo Cloud NAT

Của Cloud Shell

gcloud compute routers nats create cloudnat --router=crnat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west1

4. Tạo 2 thực thể máy ảo

Trong nhiệm vụ này, bạn sẽ tạo 2 thực thể máy ảo chạy Apache. Sau này, các thực thể máy ảo này sẽ trở thành Nhóm thiết bị đầu cuối mạng (NEG).

Từ Cloud Shell, hãy tạo phiên bản tại chỗ đầu tiên, on-prem-neg-1

gcloud compute instances create on-prem-neg-1 \
    --zone=us-west1-a \
    --tags=allow-health-check \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=network-endpoint-group-subnet --no-address \
    --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)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'

Từ Cloud Shell, hãy tạo phiên bản tại chỗ đầu tiên, on-prem-neg-2

gcloud compute instances create on-prem-neg-2 \
    --zone=us-west1-a \
    --tags=allow-health-check \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=network-endpoint-group-subnet --no-address \
    --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)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'

5. Tạo một NEG chứa điểm cuối tại chỗ của bạn

Trước tiên, hãy tạo một NEG có tên on-prem-neg-1 và on-prem-neg-2. Bạn cũng sẽ chỉ định rằng LB phải xem xét rằng để định tuyến và cân bằng tải, các điểm cuối này nằm trong vùng us-west1-a GCP. Vùng được định cấu hình tương ứng với mọi vùng được liên kết với vùng của Tệp đính kèm kết nối/Cổng VPN kết nối cho các phép đo cân bằng tải dựa trên lân cận dùng để cân bằng tải.

Từ Cloud Shell, tạo on-prem-neg-1

gcloud compute network-endpoint-groups create on-prem-neg-1 \
    --network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
    --zone "us-west1-a" \
    --network hybrid-network-lb

Từ Cloud Shell, tạo on-prem-neg-2

gcloud compute network-endpoint-groups create on-prem-neg-2 \
    --network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
    --zone "us-west1-a" \
    --network hybrid-network-lb

Trong lớp học lập trình này, nhóm điểm cuối trên mạng là một thực thể GCE chạy Apache trong GCP. Ngoài ra, bạn có thể chỉ định một thiết bị đầu cuối tại chỗ hoặc một thiết bị đầu cuối trên Internet làm thiết bị đầu cuối trên mạng

Xác định địa chỉ IP GCE bằng Cloud Shell

gcloud compute instances list | grep -i on-prem

Liên kết nhóm điểm cuối mạng với địa chỉ IP của thực thể GCE đã xác định trước đó ở bước trước; cho mỗi phủ định, on-prem-neg-1 & on-prem-neg-2.

Từ Cloud Shell liên kết on-prem-neg-1, hãy cập nhật x.x.x.x với IP đã xác định của bạn

gcloud compute network-endpoint-groups update on-prem-neg-1 \
    --zone="us-west1-a" \
    --add-endpoint="ip=x.x.x.x,port=80"

Từ Cloud Shell liên kết on-prem-neg-2, hãy cập nhật x.x.x.x với IP đã xác định của bạn

gcloud compute network-endpoint-groups update on-prem-neg-2 \
    --zone="us-west1-a" \
    --add-endpoint="ip=x.x.x.x,port=80"

6. Tạo dịch vụ kiểm tra tình trạng http, dịch vụ phụ trợ & tường lửa

Ở bước này, bạn sẽ tạo một dịch vụ phụ trợ chung có tên là dịch vụ on-prem-backend-service. Dịch vụ phụ trợ này xác định cách mặt phẳng dữ liệu sẽ gửi lưu lượng truy cập đến NEG của bạn.

Trước tiên, hãy tạo một quy trình kiểm tra tình trạng có tên là on-prem-health-check (kiểm tra sức khoẻ tại chỗ) để theo dõi tình trạng của mọi thiết bị đầu cuối thuộc NEG này (tức là điểm cuối tại cơ sở của bạn).

Của Cloud Shell

gcloud compute health-checks create http on-prem-health-check

Tạo một dịch vụ phụ trợ có tên là dịch vụ phụ trợ tại chỗ rồi liên kết dịch vụ đó với dịch vụ kiểm tra tình trạng.

Của Cloud Shell

gcloud compute backend-services create on-prem-backend-service \
    --global \
    --load-balancing-scheme=EXTERNAL \
    --health-checks on-prem-health-check

Trình cân bằng tải bên ngoài HTTP(S) và phụ trợ thực hiện kiểm tra tình trạng bắt nguồn từ các mạng con 35.191.0.0/16 và 130.211.0.0/22; do đó, cần có quy tắc tường lửa để cho phép trình cân bằng tải định tuyến phụ trợ.

Của Cloud Shell

gcloud compute firewall-rules create fw-allow-health-check \
    --network=hybrid-network-lb \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-health-check \
    --rules=tcp:80

7. Liên kết NEG và dịch vụ phụ trợ

Thêm NEG tại chỗ vào dịch vụ phụ trợ này

Của Cloud Shell

gcloud compute backend-services add-backend on-prem-backend-service \
    --global \
    --network-endpoint-group on-prem-neg-1 \
    --network-endpoint-group-zone us-west1-a \
    --balancing-mode RATE \
    --max-rate-per-endpoint 5

Thêm NEG tại chỗ vào dịch vụ phụ trợ này

Của Cloud Shell

gcloud compute backend-services add-backend on-prem-backend-service \
    --global \
    --network-endpoint-group on-prem-neg-2 \
    --network-endpoint-group-zone us-west1-a \
    --balancing-mode RATE \
    --max-rate-per-endpoint 5

Đặt trước một Địa chỉ IP tĩnh IPv4 dùng để truy cập vào thiết bị đầu cuối trên mạng

Của Cloud Shell

gcloud compute addresses create hybrid-lb-ip --project=$projectid --global

Chúng ta đã hoàn tất cấu hình CLI. Hãy hoàn tất quá trình định cấu hình trong Cloud Console.

8. Tạo trình cân bằng tải HTTP bên ngoài và liên kết dịch vụ phụ trợ

Trong bảng điều khiển Cloud, hãy chuyển đến mục Cân bằng tải rồi chọn Tạo trình cân bằng tải

Xác định cân bằng tải HTTP(S) và nhấp vào "bắt đầu cấu hình"

70ccd168957e89d9.pngS

Chọn "Từ Internet đến máy ảo của tôi" theo ảnh chụp màn hình dưới đây cho phép công chúng truy cập vào máy ảo của bạn

a55cd31dbeadfecc.png

Cung cấp "xlb" làm tên của trình cân bằng tải và chọn dịch vụ phụ trợ đã tạo trước đó "on-prem-backend-service" rồi "ok" theo ảnh chụp màn hình được cung cấp

f1589df43bf9e3e8.png

Chọn Cấu hình giao diện người dùng, cập nhật tên "xlb-fe" và chọn địa chỉ IPv4 tĩnh đã tạo trước đó, nhớ đừng quên phản chiếu ảnh chụp màn hình được cung cấp b47cd48c7c1ccfc3.png

Chọn "Xem lại và hoàn tất" cho khớp với ảnh chụp màn hình được cung cấp và chọn Tạo

bfa39f7dc3ad91e1.png

Xác thực tình trạng phụ trợ

Trong bảng điều khiển đám mây, hãy đảm bảo phần phụ trợ "xlb" lành mạnh, màu xanh lục theo ảnh chụp màn hình được cung cấp

131bbfc955d6166c.png.

9. Xác thực NEG có thể truy cập được từ Internet

Hãy nhớ rằng Địa chỉ IP tĩnh bên ngoài dùng trong khi tạo trình cân bằng tải hiện là IP giao diện người dùng của các thiết bị đầu cuối trên mạng. Hãy tiến hành xác thực địa chỉ IP trước khi thực thi kiểm thử cuối cùng.

Của Cloud Shell

gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:

Đầu ra (Địa chỉ IP sẽ khác)

Dữ liệu đầu ra từ Cloudshell

$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:
IPAddress: 34.96.103.132

Khi sử dụng địa chỉ IP của giao diện người dùng chung của trình cân bằng tải, bạn có thể truy cập vào phần phụ trợ thiết bị đầu cuối trên mạng. Lưu ý: Trong lớp học lập trình, điểm cuối là một thực thể GCE. Tuy nhiên, bạn có thể sử dụng điểm cuối này với các điểm cuối tại chỗ.

Từ máy trạm cục bộ của bạn, khởi chạy một thiết bị đầu cuối rồi thực hiện cuộn (curl) đến địa chỉ IP của trình cân bằng tải

Từ máy trạm của bạn, thực hiện cuộn tròn dựa trên địa chỉ IP giao diện người dùng. Quan sát 200 OK và thông tin chi tiết về trang có tên và khu vực của thực thể phủ định.

myworkstation$ curl -v 34.96.103.132

* Trying 34.96.103.132...

* TCP_NODELAY set

* Connected to 34.96.103.132 (34.96.103.132) port 80 (#0)

> GET / HTTP/1.1

> Host: 34.96.103.132

> User-Agent: curl/7.64.1

> Accept: */*

>

< HTTP/1.1 200 OK

< Date: Tue, 10 Aug 2021 01:21:54 GMT

< Server: Apache/2.4.25 (Debian)

< Last-Modified: Tue, 10 Aug 2021 00:35:41 GMT

< ETag: "24-5c929ae7384f4"

< Accept-Ranges: bytes

< Content-Length: 36

< Content-Type: text/html

< Via: 1.1 google

<

Page on on-prem-neg-2 in us-west1-a

* Connection #0 to host 34.96.103.132 left intact

* Closing connection 0

Xin chúc mừng! Bạn đã triển khai thành công trình cân bằng tải kết hợp L7 bằng NEG

Chúc mừng bạn đã hoàn thành lớp học lập trình!

Nội dung đã đề cập

  • Tạo một VPC tuỳ chỉnh
  • Tạo hai máy ảo (VM) dùng làm Nhóm thiết bị đầu cuối mạng (NEG)
  • Tạo Trình cân bằng tải kết hợp, dịch vụ phụ trợ và các hoạt động kiểm tra tình trạng liên quan
  • Tạo quy tắc tường lửa cho phép truy cập vào Trình cân bằng tải
  • Xác thực khả năng kết nối của Nhóm thiết bị đầu cuối mạng

10. Các bước dọn dẹp

Trên giao diện người dùng của Cloud Console, hãy xác định và đánh dấu vào ô "xlb" trình cân bằng tải và chọn xoá thông qua Dịch vụ mạng → Cân bằng tải. Sau khi chọn, hãy đánh dấu vào "on- Phần-backend service" ("dịch vụ tại chỗ tại cơ sở hạ tầng") &amp; ‘on-premise-health-check&#39; sau đó chọn xoá

53d7463fe354fe66.pngS

Từ giao diện người dùng Cloud Console, hãy chuyển đến Compute Engine → Nhóm thiết bị đầu cuối mạng. Sau khi được chọn, hãy đánh dấu vào "on-prem-neg-1" &amp; ‘on-prem-neg-2&#39; sau đó chọn xoá

4d8f04264b44d03c.pngS

Xoá các thành phần của phòng thí nghiệm từ vỏ đám mây

gcloud compute routers nats delete cloudnat --router=crnat --region us-west1 --quiet

gcloud compute routers delete crnat  --region us-west1 --quiet

gcloud compute instances delete on-prem-neg-1 --zone=us-west1-a --quiet

gcloud compute instances delete on-prem-neg-2 --zone=us-west1-a --quiet

gcloud compute firewall-rules delete fw-allow-health-check --quiet

gcloud compute networks subnets delete network-endpoint-group-subnet --region=us-west1 --quiet

gcloud compute networks delete hybrid-network-lb --quiet

gcloud compute addresses delete hybrid-lb-ip --global --quiet