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.
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
- Đă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.
- 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.
- 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:
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:
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"
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
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
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
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
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
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") & ‘on-premise-health-check' sau đó chọn xoá
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" & ‘on-prem-neg-2' sau đó chọn xoá
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