Giới thiệu
Chào các bạn tới với series thực hành về AWS, ở bài này chúng ta sẽ tìm hiểu cách kết nối Virtual Private Cloud giữa AWS và Google Cloud Platform. Nếu các bạn sử dụng AWS nhiều thì chắc ta đã nghe nói tới Site-to-Site VPN, dùng để kết nối network của on premise tới VPC của AWS, nhưng ngoài cộng dụng đó thì nó còn khá nhiều công dụng khác rất hữu ích. Một trong số các công dụng đó là chủ đề mà ta sẽ tìm hiểu ở bài này, sử dụng Site-to-Site VPN để kết nối local network giữa AWS và GCP.
Trước khi bắt tay vào làm, thì có một vấn đề ta cần trả lời trước là: Tại sao lại phải xài multi cloud rồi dùng VPN để kết nối tụi nó với nhau chi cho cực vậy?
Multi cloud
Đây chỉ là quan điểm cá nhân của mình thôi nhé 🤣. Ví dụ được đặt ra là ta cần xây dựng một giải pháp để streaming hành động của khách hàng ở trên một trang thương mại điện tử với số lượng truy cập khá cao và sau khi streaming và tổng hợp được tất cả các hành động của khách hàng thì ta cần phân tích dữ liệu đó để phân tích được sở thích của khách hàng.
Với yêu cầu ở trên thì hệ thống của ta sẽ có hai phần chính. Hệ thống event streaming và hệ thống phân tích dữ liệu. Mình sẽ chọn xây dựng hệ thống event streaming ở trên AWS và xây dựng hệ thống phân tích dữ liệu ở trên GCP.
GCP for Data Analysis
Tại sao là lại xài Google Cloud Platform cho việc phân tích dữ liệu, nó có gì hơn AWS, nó nhanh hơn hay sao? Lý do mình chọn GCP cho việc phân tích dữ liệu không phải vì các công cụ xử lý dữ liệu của GCP nó nhanh hơn hay gì cả, vì mình chưa có đủ kiến thức để có thể đánh giá được là hai công cụ của AWS và GCP thằng nào nhanh hơn, mình chọn GCP vì nó phù hợp cho việc phân tích dữ liệu khách hàng. Vì Google đã đi trước trong việc phân tích dữ liệu người dùng khá lâu, Google sở hữu các dịch vụ có sẵn mà rất dễ dàng kết hợp với GCP trong việc thu thập và thống kê dữ liệu của người dùng, như là Google Analysis, Gmail, Google Ads, Youtube, Google search.
Ngoài ra các UI của các trang report dữ liệu của Google rất đẹp và dễ nhìn, phù hợp cho cả những người mà không phải chuyên dữ liệu khi nhìn vào cũng có thể hiểu. Đây là mô hình ví dụ của việc phân tích dữ liệu của khách hàng dùng GCP.
AWS for Event Streaming
Ngược lại với GCP thì AWS đi trước trong mảng Cloud khá lâu. Nên các dịch vụ dùng để xây dựng ứng dụng của AWS lại thông dụng hơn nhiều, có nhiều documents và usecase, cộng đồng lớn, dễ xử dụng với nhiều tool IaC. Đó là lý do mình chọn AWS cho việc xây dựng hệ thống event streaming. Ví dụ cụ thể là mình cần xây dựng một Kafka Cluster để làm core của hệ thống streaming này, nếu ta tự xây dựng nó trên GCP thì sẽ mất rất nhiều công sức. Trong khi ở trên AWS thì Kafka nó có sẵn, tội gì ta phải tự xây là quản lý một Kafka Cluster 😂 (công việc này không dễ).
Trên AWS thì Kafka service nó lên là AWS MSK, mô hình ví dụ như sau.
Oke, đó là lý do tại sao mình cẩn phải xài multi cloud, nhưng vì tất cả ứng dụng mình đều đặt trong private subnet ở trên VPC, nên bên ngoài sẽ không thể truy cập được.
Vậy thì làm sao ta stream event từ AWS sang GCP được, cả hai ứng dụng đều nằm trong private subnet hết.
Để làm được điều đó thì ta cần phải kết nối hai thằng VPC của hai Cloud lại với nhau, ta sẽ dùng AWS Site-to-Site VPN và Google Cloud VPN.
Connect VPC Network between AWS and GCP
Oke, giờ ta sẽ bắt tay vào làm. Các bạn có thể tạo custom VPC nhé, vì để nhanh mình sẽ sử dụng default VPC. Đầu tiên ta sẽ bắt đầu ở Google Cloud.
Create GCP External IP
Truy cập Google Cloud Console chọn VPC Network -> External IP addresses bấm Reserve a static address.
Nhập như sau.
Điền vào tên là external-ip-aws-cusomter-gateway, Network Service Tier chọn Premium, IP version chọn IPv4, Type chọn Region và lựa Region giống với Region của AWS VPC, trong bài này ta sẽ làm việc ở us-east-1. Bấm tạo.
Đây là IP ta sẽ dùng cho AWS Customer Gateway.
Create AWS Customer Gateway
Truy cập AWS Console, chọn VPC -> Customer gateways, bấm tạo.
Điền như sau.
Tên ta nhập gcp-customer-gateway, IP address ta điền vào External IP ta vừa tạo ở GCP. Bấm tạo.
Create AWS Virtual private gateways
Tiếp theo ta sẽ tạo AWS VGW, truy cập Virtual private gateways Console, nó nằm ở dưới menu Customer Gateway.
Bấm tạo. Nhập như sau.
Tên điền vgw-default-vpc, ASN chọn default. Bấm tạo.
Tiếp theo ta sẽ gán VGW này vào default VPC. Nhấn Action -> Attach to VPC.
Chọn default VPC.
Bấm Attach.
Create AWS Site-to-Site VPN
Tiếp theo ta sẽ AWS VPN để connect tới GCP. Truy cập Site-to-Site VPN.
Bấm tạo, ta điền như sau.
Tên nhập vào aws-vpn-gcp, chọn virtual private gateway và customer gateway ta vừa tạo. Phần Routing options ta chọn Static, nhập vào ô Static IP prefixes là CIRD Block của GCP với giá trị 10.142.0.0/20
Để xem CIRD Block của GCP VPC ở một region nào đó, ta truy cập Google Console ở mục VPC networks.
Quay lại AWS Console bấm Create VPN connection. Sau khi tạo ta đợi cho status của nó thành Available nhé.
Sau đó ta chọn Download configuration của VPN này xuống. Nó sẽ hiện ra cái modal.
Vendor và Platform ta chọn Generic, phần Software ta chọn Vendor Agnostic, IKE version ta chọn ikev1.
Create GCP Cloud VPN
Tiếp theo ta sẽ tạo VPN Connection ở trên GCP, truy cập Google Cloud Console, chọn VPN.
Bấm tạo.
Chọn Classic VPN, bấm tiếp tục. Ở form Google Compute Engine VPN gateway ta điền như sau.
Tên ta nhập vào là aws-vpn-gcp, network chọn default, region nhớ chọn us-east1, IP address ta chọn External IP ta đã tạo ở trên.
Tiếp theo là phần quan trọng, ở mục VPN tunnel, ta điền như sau.
Mục name ta điền là aws-vpn-gcp-tunnel-1, IKE version ta chọn IKEv1, còn giá trị của Remote peer IP address và IKE pre-shared key, ta tìm ở trong file mà ta tải xuống hồi nãy từ Site-to-Site VPN. Bạn kiếm đoạn hai phần sau.
Giá trị của Virtual Private Gateway và Pre-Shared Key là hai giá trị ta cần. Phần Routing options ta chọn Route-based, và điền vào CIRD Block của VPC bên AWS.
Bấm tạo. Đợi VPN tunnel status chuyển thành Established.
Đợi một chút, quay lại AWS ở phần Site-to-Site VPN, ta bấm vào VPN ta vừa tạo và kiểm tra phần Tunnel state. Bạn sẽ thấy trạng thái của Tunnel 1 đã bược bật lên.
Ta sẽ thấy có warning là cần sử dụng cả hai tunnel, khi ở môi trường production, bạn nên tạo cả hai tunnel.
Ok, tới đây là ta đã tạo được kết nối từ AWS sang GCP. Bước cuối cùng ta cần làm là enable Security Group để hai thằng có thể thoải mái nói chuyện với nhau.
Enable Security Group
Ta cập nhật SG của AWS để các ứng dụng từ GCP có thể thoải mái truy cập tới AWS VPC, bấm vào SG ở VPC, chọn default SG và sửa Inbound rules như sau.
Sau đó ta cập nhật Firewall Rule ở bên GCP để các ứng dụng của AWS có thể thoải mái truy cập tới GCP VPC. Truy cập GCP Console, bấm vào memu Firewall, chọn default-allow-internal và Edit nó.
Ta thêm vào CIDR Block của AWS VPC là 172.31.0.0/16
Bấm save. Bây giờ thì các ứng dụng của AWS và GCP của ta đã có thể nói chuyện với nhau cho dù cả hai đều nằm trong private network 😁.
Kết luận
Vậy là ta đã tìm hiểu xong các kết nối VPC giữa hai Cloud với nhau, sử dụng VPN thì ta không chỉ kết nối giữa AWS và GCP mà còn có thể kết nối giữa AWS và Azure nữa, tùy usecase của chúng ta. Nếu có thắc mắc hoặc cần giải thích rõ thêm chỗ nào thì các bạn có thể hỏi dưới phần comment. Ở bài tiếp theo ta nói về cách config và triển khai Terraform dùng S3 Standard Backend.
Mục tìm kiếm đồng đội
Hiện tại thì bên công ty mình, là Hoàng Phúc International, với hơn 30 năm kinh nghiệm trong lĩnh vực thời trang. Và là trang thương mại điện tử về thời trang lớn nhất Việt Nam. Team công nghệ của HPI đang tìm kiếm đồng đội cho các vị trí như:
- Senior Backend Engineer (Java). Link JD: https://tuyendung.hoang-phuc.com/job/senior-backend-engineer-1022
- Senior Front-end Engineer (VueJS). https://tuyendung.hoang-phuc.com/job/senior-frontend-engineer-1021
- Junior Backend Engineer (Java). https://tuyendung.hoang-phuc.com/job/junior-backend-engineer-1067
- Junior Front-end Engineer (VueJS). https://tuyendung.hoang-phuc.com/careers/job/1068
- App (Flutter). https://tuyendung.hoang-phuc.com/job/mobile-app-engineer-flutter-1239
- Senior Data Engineer. https://tuyendung.hoang-phuc.com/job/seniorjunior-data-engineer-1221
Với mục tiêu trong vòng 5 năm tới về mảng công nghệ là:
- Sẽ có trang web nằm trong top 10 trang web nhanh nhất VN với 20 triệu lượt truy cập mỗi tháng.
- 5 triệu loyal customers và có hơn 10 triệu transactions mỗi năm.
Team đang xây dựng một hệ thống rất lớn với rất nhiều vấn để cần giải quyết, và sẽ có rất nhiều bài toàn thú vị cho các bạn. Nếu các bạn có hứng thú trong việc xây dựng một hệ thống lớn, linh hoạt, dễ dàng mở rộng, và performance cao với kiến trúc microservices thì hãy tham gia với tụi mình.
Nếu các bạn quan tâm hãy gửi CV ở trong trang tuyển dụng của Hoàng Phúc International hoặc qua email của mình nha _@.com
. Cảm ơn các bạn đã đọc.