October 22, 2021
static website

Hosting Static Website on GCP without Server

Thông thường, để sử dụng một website cần phải có máy chủ để hosting website của bạn.
Bạn có thể mua một sharing hosting hoặc phải thuê một máy chủ. Việc cấu hình và vận hành một chủ không hề đơn giản.
Để xây dụng một website 1.000.000 user bạn cần làm gì?
– Chuẩn bị một budget thật lớn?
– Thuê một đội IT tinh nhuệ?
Hôm nay, mình xin chia sẻ cách làm một static website có thể phục vụ lên đến 1.000.000 user cùng một lúc vô cùng đơn giản.

I. Tổng quan về mô hình:

  1. User kết nối trực tiếp vào Google HTTP Load Balancing (GLB)
  2. Cấu hình Google Cloud Storage backend của Google Cloud Load Balancing
  3. Các static content như Javascript, Html, CSS, Image được lưu trữ trên Google Cloud Storage

Tại sao mình lại chọn sử dụng GLB ở đây? Google HTTP load balancing có thể xử lý lên đến 1.000.000 queries/s.
HTTP load balancing là LB global sử dụng any cast IP, điều này giúp tối ưu được latency thấp nhất đến với user. Và hơn nữa có GLB chúng ta sẽ dễ dàng cấu hình custom domain, cấu hình SSL và Security với Cloud Armor.

II. Tiến hành cấu hình

  1. Vào Google Cloud Console → Cloud Storage → Create Bucket. Bạn có thể đặt tên cho bucket bất kì.
  2. Upload tất cả các static file như JS, Image, CSS lên Cloud Storage. Điều quan trọng bạn cần phải có 1 file index.html và 1 file 404.html
  3. Sharing file public bằng cách phần quyền  Storage Object Viewer cho user allUsers. Sau đó lưu và Click Allow public access
  4. Open Cloud Shell → Run command:
gsutil web set -m index.html -e 404.html gs://<Tên bucket>

5. Cấu hình Google HTTP Load Balancing backend với Google Cloud Storage
5.1. Reserving an external IP address
Vào phần External IP addresses trên Google Cloud Console → chọn Reserve static address:
Name: tùy chọn
IP Version: Ipv4
–  Type: Global
Click chọn nút Reserve
5.2. Creating the HTTP load balancer with backend buckets
Configuring the backend:

gcloud compute backend-buckets create static-web \
    --gcs-bucket-name=[BUCKET_1_NAME]

Configuring the URL map

gcloud compute url-maps create http-lb \
    --default-backend-bucket=static-web

Configuring the target proxy

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

Configuring the forwarding rule

gcloud compute forwarding-rules create http-lb-forwarding-rule \
    --address=example-ip \
    --global \
    --target-http-proxy=http-lb-proxy \
    --ports=80

6. Cấu hình A record trên DNS về static IP của HTTP Load Balancing.

7. Tiến hành kiểm thử xem các cấu hình đã hoạt động đúng.

III. Lời kết

Bạn sẽ không cần một đội IT hùng mạnh, cũng không cần phải quá lo về chi phí vận hành. Mà vẫn có thể sử dụng Google Cloud để hosting cho website của mình và có thể phục vụ hàng triệu người dùng truy cập một cách dễ dàng với các bước cấu hình đơn giản trên.

Leave a Reply

Your email address will not be published. Required fields are marked *