Architecting on AWS 筆記:Networking
02 Jun 2022網路架構
- Amazon Virtual Private Cloud (VPC):VPC 是一個定義虛擬網路的服務,可讓開發者經由 provision 一個邏輯上隔離的區塊,來提供開發者在這個虛擬網路環境中使用 AWS 資源。
- EC2 instance profile: IAM role 是指臨時的權限,利用 instance profile 將臨時的權限設定給此 instance。
- Security Group (SG):SG 是 EC2 的防火牆。
- Internet Gateway:EC2 經由 internet gateway 與 public IP 來對外聯繫。
- Elastic Network Interface (ENI,彈性網路介面):是一種設定在 VPC 內的虛擬網卡。
- Elastic IP address:EC2 每次拿到的 public IP 都會不同 -> solution: Elastic IP address 可做固定的 public IP
- Route Table:決定去哪裡、怎麼走。
- NAT Gateway (network address translation):NAT 用於分配 public address,這樣 EC2 instance 才能出去,NAT 用於解決 public IP 不夠的問題;而 AWS 的 NAT gateway 可讓 private subnet 有能力存取網際網路的東西,所以 EC2 instance -> private route table -> NAT gateway -> internet gateway -> 0.0.0.0,EC2 instance 可免於被攻擊。
控管網路流量
- 允許哪些封包進來可以從兩個地方設定,以控管網路流量、黑名單 (不會進入到 EC2)。
- Network ACL === NACL, 是 subnet 的防火牆。
- security group === SG, 是 EC2 的防火牆。
- 可在 NACL or SG 設定 traffic inbound/outbound 的 rule,來做流量篩減、能不能存取想要存取 EC2。
VPC Endpoint
- VPC 連到其他服務,可用 VPC endpoint,因為這是 AWS 內網,速度穩定且快速。
- VPC Endpoint 分為 gateway endpoint, interface endpoint。
Gateway Endpoint
老技術,現在只有 S3 和 DynamoalDB 用此 gateway endpoint 技術。
Interface Endpoint
新技術,後來的 AWS 服務都是用這個 interface endpoint 技術,直接路由到指定的服務,稱為 private link。
VPC 和其他 VPC 溝通
- VPC 和其他 VPC 溝通,用 peering。
- peering 可以跨 region / AZ / 帳號。
Transit Gateway
- 由於 VPC 互相連線 full mesh,peering 需要 n(n-1)/2 條,因此要改用 transit gateway。
- transit gateway 類似 hub 集線器的功能,transit gateway 用自己的 route table 來決定目的地。
Site-to-Site VPN
- 建立 virtual private gateway 元件: VPC 位置在哪兒。
- 建立 custom gateway 元件: 告知 local 地端在哪兒。
Direct Connect
direct connect 是指使用 direct connect 目的是不想讓流量走在 internet 而暴露在網際網路上 or 要求穩定的網速 or 法律規範等需求,而改走 AWS 的骨幹網路 (AWS Network)。
Route 53
Route 53 是 AWS 的 DNS 服務,private DNS 是給 VPC 內部用的,只活在 AWS 世界裡。
導流規則
導流規則共以下 7 種
- failover:設定 health check,每隔一段時間就去確認,卻無回應就把 standby 的機器拉上來,把流量導到備案的機器上,backup 機器會放在另一個 region。
- geolocation:就近使用者到最近的 region 的 server。
- geoproximity:server 若在世界各地,難以做到就近使用者到最近的 region 的 server,解法是指定特定的 server 涵蓋的範圍廣一點 (有公式和算百分比),這樣就可以承受多一點訪問的流量,參考文件 https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-geoproximity。
- latency-based:導到延遲低的 server 即可。
- multi-value answer:隨機傳 healthy 的 record (因此會先做 health check),browser 來自行決定要去哪一個 record。
- weighted:權重分流,開發者可自行設定導流到特定伺服器的比例, 用於更版或 A/B Test。