Trang chủTác giảLiên hệ

AWS CDA: HA Architecture

By Nguyễn Huy Hoàng
Published in AWS
October 10, 2021
6 min read

Scalibility & High Availibility

  • Scalability (Khả năng mở rộng) có nghĩa là một ứng dụng/ hệ thống có thể xử lý tải lớn hơn bằng cách thích ứng.
  • Có hai loại khả năng mở rộng:
    • Vertical Scalability: Khả năng mở rộng theo chiều dọc
    • Horizontal Scalability (= elasticity): Khả năng mở rộng theo chiều ngang (=độ đàn hồi)
  • Scalability được liên kết nhưng khác với High Availability (Tính khả dụng cao) alt text

Vertical Scalability

  • Vertically scalability (Khả năng mở rộng theo chiều dọc) có nghĩa là tăng kích thước của phiên bản
  • Ví dụ: ứng dụng của bạn chạy trên t2.micro, mở rộng ứng dụng đó theo chiều dọc có nghĩa là chạy nó trên t2.large
  • Khả năng mở rộng theo chiều dọc rất phổ biến đối với các hệ thống không phân tán, chẳng hạn như cơ sở dữ liệu. RDS, ElastiCache là các dịch vụ có thể mở rộng quy mô theo chiều dọc.
  • Thường có giới hạn về số lượng bạn có thể mở rộng theo chiều dọc (giới hạn phần cứng) alt text

Horizontal Scalability

  • Horizontal Scalability (Khả năng mở rộng theo chiều ngang) có nghĩa là tăng số lượng phiên bản / hệ thống cho ứng dụng của bạn
  • Chia tỷ lệ theo chiều ngang có thể hiểu là hệ thống phân tán.
  • Điều này rất phổ biến đối với các ứng dụng web, các ứng dụng hiện đại
  • Rất dễ dàng mở rộng quy mô theo chiều ngang nhờ các dịch vụ đám mây như Amazon EC2 alt text

High Availability

  • High Availability (Tính sẵn sàng cao) thường đi đôi với việc mở rộng quy mô theo chiều ngang
  • Tính khả dụng cao có nghĩa là chạy ứng dụng / hệ thống của bạn trong ít nhất 2 trung tâm dữ liệu (== AZ)
  • Mục tiêu của tính khả dụng cao là để tồn tại khi mất trung tâm dữ liệu
  • Tính khả dụng cao có thể thụ động (ví dụ như RDS Multi AZ) hoặc có thể chủ động (ví dụ mở rộng quy mô theo chiều ngang) alt text

High Availability & Scalability For EC2

  • Vertical Scaling: Tăng instance size (= scale up / down)
    • Từ: t2.nano - 0.5G of RAM, 1 vCPU
    • Lên: u-12tb1.metal – 12.3 TB of RAM, 448 vCPUs
  • Horizontal Scaling: Tăng số lượng instances (= scale out / in)
    • Auto Scaling Group
    • Load Balancer
  • High Availability: Chạy các instances cho cùng một ứng dụng trên nhiều AZ![alt text](https://kipalog.kaopiz.com/uploads/c8b4/b80b/Screen Shot 2021-07-06 at 21.27.18.png)

Load Balancing?

  • (Load Balancers) Bộ cân bằng tải là các máy chủ chuyển tiếp lưu lượng truy cập internet đến nhiều máy chủ (EC2 instances) ở hạ lưu. alt text

Tại sao phải sử dụng Bộ cân bằng tải?

  • Chia tải trên nhiều instance
  • Đưa ra một điểm truy cập (DNS) duy nhất cho ứng dụng của bạn
  • Xử lý liền mạch các lỗi của các instance
  • Kiểm tra sức khỏe thường xuyên đối với các instance của bạn
  • Cung cấp SSL (HTTPS) cho các trang web của bạn
  • Tăng cường stickiness (độ dính) với cookie
  • Tính khả dụng cao giữa các zone
  • Tách biệt lưu lượng truy cập public với lưu lượng truy cập private alt text

Tại sao phải sử dụng Bộ cân bằng tải EC2?

  • ELB (Elastic Load Balancer) là một bộ cân bằng tải được AWS quản lý
    • AWS đảm bảo rằng nó sẽ luôn hoạt động
    • AWS có nhiệm vụ nâng cấp, bảo trì, cung cấp tính sẵn sàng cao
    • AWS chỉ cung cấp một số configuration knobs (nút)
  • Việc thiết lập bộ cân bằng tải của riêng bạn sẽ tốn ít chi phí hơn nhưng bạn sẽ phải tốn công sức hơn rất nhiều.
  • Nó được tích hợp với nhiều dịch vụ AWS alt text

Health Checks

  • Health Checks (Kiểm tra sức khỏe) rất quan trọng đối với Load Balancers
  • Chúng cho phép LB biết liệu các instance nó chuyển tiếp lưu lượng truy cập đến có sẵn sàng để hồi đáp các yêu cầu hay không
  • Kiểm tra sức khỏe được thực hiện trên một port (cổng) và một route nhất định (thường là /health)
  • Nếu phản hồi không phải là 200 (OK), thì instance đó không khỏe mạnh (unhealthy) alt text

Các loại LB trên AWS

  • AWS có 3 loại managed Load Balancers (Update (2021/07/15): mới thêm 1 loại nữa là Gateway Load Balancer, tổng cộng có 4 loại)
  • Classic Load Balancer (v1 - old generation) – 2009
    • HTTP, HTTPS, TCP
  • Application Load Balancer (v2 - new generation) – 2016
    • HTTP, HTTPS, WebSocket
  • Network Load Balancer (v2 - new generation) – 2017
    • TCP, TLS (secure TCP) & UDP
  • Nhìn chung, bạn nên sử dụng các bộ cân bằng tải thế hệ mới hơn (v2) vì chúng cung cấp nhiều tính năng hơn
  • Bạn có thể thiết lập ELB internal (private) hoặc external (public) alt text

Load Balancer Security Groups

  • Load Balancer Security Group: HTTP/HTTPS From anywhere
  • Application Security Group: HTTP Restricted to Load Balancer alt text

Load Balancer - Good to Know

  • LBs có thể mở rộng quy mô nhưng không ngay lập tức
  • Xử lý sự cố
    • Lỗi 4xx là lỗi do khách hàng gây ra
    • Lỗi 5xx là lỗi do ứng dụng gây ra
    • Lỗi cân bằng tải 503 có nghĩa là hết công suất hoặc không có mục tiêu được đăng ký
    • Nếu LB không thể kết nối với ứng dụng, hoặc health check target bị unhealthy, hãy kiểm tra các security group của bạn
  • Giám sátalt text

Classic Load Balancers (v1)

  • Hỗ trợ TCP (Layer 4), HTTP và HTTPS (Layer 7)
  • Health checks dựa trên TCP hoặc HTTP
  • Cố định hostname dạng XXX.region.elb.amazonaws.com alt text

Application Load Balancer (v2)

  • Application load balancers ở Layer 7 (HTTP)
  • Cân bằng tải cho nhiều ứng dụng HTTP trên nhiều máy chủ (target groups)
  • Cân bằng tải cho nhiều ứng dụng trên cùng một máy chủ (containers)
  • Hỗ trợ HTTP/2 và WebSocket
  • Hỗ trợ chuyển hướng (ví dụ redirect từ HTTP sang HTTPS) alt text
  • Định tuyến đến các target groups khác nhau:
    • Định tuyến dựa trên đường dẫn trong URL (example.com/users & example.com/posts)
    • Định tuyến dựa trên tên máy chủ trong URL (one.example.com & other.example.com)
    • Định tuyến dựa trên Query String, Headers,… (example.com/users?id=123&order=false)
  • ALB rất phù hợp cho ứng dụng microservices & container-based (vd Docker & Amazon ECS)
  • Có tính năng ánh xạ port để chuyển hướng đến một dynamic port trong ECS alt text

HTTP Based Traffic

alt text

Query Strings/Parameters Routing

alt text

Target Groups

  • Có thể là các EC2 instances (có thể được quản lý bởi Auto Scaling Group) – HTTP
  • Có thể là các ECS tasks (do chính ECS quản lý) – HTTP
  • Có thể là các Lambda functions – HTTP request được chuyển thành JSON event
  • Có thể là các IP Addresses – phải là private IPs
  • ALB có thể định tuyến đến nhiều target groups
  • Health checks nằm cùng cấp với target group alt text

Good to Know

  • Cố định hostname dạng (XXX.region.elb.amazonaws.com)
  • Các máy chủ ứng dụng không nhìn thấy trực tiếp IP của máy kháchalt text

Network Load Balancer (v2)

  • Network load balancers (Layer 4) cho phép:
    • Chuyển tiếp lưu lượng TCP & UDP tới các instances của bạn
    • Xử lý hàng triệu yêu cầu mỗi giây
    • Độ trễ ít hơn (~ 100ms so với 400ms đối với ALB)
  • NLB có một IP tĩnh cho mỗi AZ và hỗ trợ gán Elastic IP (hữu ích cho việc đưa IP cụ thể vào danh sách trắng)
  • NLB được sử dụng cho hiệu suất cực cao, lưu lượng TCP hoặc UDP
  • Không được bao gồm trong bậc miễn phí AWS alt text

TCP (Layer 4) Based Traffic

alt text

Load Balancer Stickiness

  • It is possible to implement stickiness so that the same client is always redirected to the same instance behind a load balancer
  • This works for Classic Load Balancers & Application Load Balancers
  • The “cookie” used for stickiness has an expiration date you control
  • Use case: make sure the user doesn’t lose his session data
  • Enabling stickiness may bring imbalance to the load over the backend EC2 instances alt text

SSL/TLS - Basics

  • An SSL Certificate allows traffic between your clients and your load balancer to be encrypted in transit (in-flight encryption)
  • SSL refers to Secure Sockets Layer, used to encrypt connections
  • TLS refers to Transport Layer Security, which is a newer version
  • Nowadays, TLS certificates are mainly used, but people still refer as SSL
  • Public SSL certificates are issued by Certificate Authorities (CA)
  • Comodo, Symantec, GoDaddy, GlobalSign, Digicert, Letsencrypt, etc…
  • SSL certificates have an expiration date (you set) and must be renewed alt text

Load Balancer - SSL Certificates

  • The load balancer uses an X.509 certificate (SSL/TLS server certificate)
  • You can manage certificates using ACM (AWS Certificate Manager)
  • You can create upload your own certificates alternatively
  • HTTPS listener:alt text

SSL – Server Name Indication (SNI)

  • SNI solves the problem of loading multiple SSL certificates onto one web server (to serve multiple websites)
  • It’s a “newer” protocol, and requires the client to indicate the hostname of the target server in the initial SSL handshake
  • The server will then find the correct certificate, or return the default one
  • Note:alt text

Elastic Load Balancers – SSL Certificates

  • Classic Load Balancer (v1)
    • Support only one SSL certificate
    • Must use multiple CLB for multiple hostname with multiple SSL certificates
  • Application Load Balancer (v2)
    • Supports multiple listeners with multiple SSL certificates
    • Uses Server Name Indication (SNI) to make it work
  • Network Load Balancer (v2)alt text

ELB – Connection Draining

  • Feature naming:
    • CLB: Connection Draining
    • Target Group: Deregistration Delay (for ALB & NLB)
  • Time to complete “in-flight requests” while the instance is de-registering or unhealthy
  • Stops sending new requests to the instancevwhich is de-registering
  • Between 1 to 3600 seconds, default is 300vseconds
  • Can be disabled (set value to 0)
  • Set to a low value if your requests are short alt text

Tags

awsAWS
Khóa học AWS cơ bản

Nguyễn Huy Hoàng

Developer

Related Posts

Amazon S3 Access Control - IAM Policies, Bucket Policies and ACLs
October 10, 2021
3 min

AWS CDA: HA Architecture

Published in AWS
October 10, 2021
6 min read

Scalibility & High Availibility

  • Scalability (Khả năng mở rộng) có nghĩa là một ứng dụng/ hệ thống có thể xử lý tải lớn hơn bằng cách thích ứng.
  • Có hai loại khả năng mở rộng:
    • Vertical Scalability: Khả năng mở rộng theo chiều dọc
    • Horizontal Scalability (= elasticity): Khả năng mở rộng theo chiều ngang (=độ đàn hồi)
  • Scalability được liên kết nhưng khác với High Availability (Tính khả dụng cao) alt text

Vertical Scalability

  • Vertically scalability (Khả năng mở rộng theo chiều dọc) có nghĩa là tăng kích thước của phiên bản
  • Ví dụ: ứng dụng của bạn chạy trên t2.micro, mở rộng ứng dụng đó theo chiều dọc có nghĩa là chạy nó trên t2.large
  • Khả năng mở rộng theo chiều dọc rất phổ biến đối với các hệ thống không phân tán, chẳng hạn như cơ sở dữ liệu. RDS, ElastiCache là các dịch vụ có thể mở rộng quy mô theo chiều dọc.
  • Thường có giới hạn về số lượng bạn có thể mở rộng theo chiều dọc (giới hạn phần cứng) alt text

Horizontal Scalability

  • Horizontal Scalability (Khả năng mở rộng theo chiều ngang) có nghĩa là tăng số lượng phiên bản / hệ thống cho ứng dụng của bạn
  • Chia tỷ lệ theo chiều ngang có thể hiểu là hệ thống phân tán.
  • Điều này rất phổ biến đối với các ứng dụng web, các ứng dụng hiện đại
  • Rất dễ dàng mở rộng quy mô theo chiều ngang nhờ các dịch vụ đám mây như Amazon EC2 alt text

High Availability

  • High Availability (Tính sẵn sàng cao) thường đi đôi với việc mở rộng quy mô theo chiều ngang
  • Tính khả dụng cao có nghĩa là chạy ứng dụng / hệ thống của bạn trong ít nhất 2 trung tâm dữ liệu (== AZ)
  • Mục tiêu của tính khả dụng cao là để tồn tại khi mất trung tâm dữ liệu
  • Tính khả dụng cao có thể thụ động (ví dụ như RDS Multi AZ) hoặc có thể chủ động (ví dụ mở rộng quy mô theo chiều ngang) alt text

High Availability & Scalability For EC2

  • Vertical Scaling: Tăng instance size (= scale up / down)
    • Từ: t2.nano - 0.5G of RAM, 1 vCPU
    • Lên: u-12tb1.metal – 12.3 TB of RAM, 448 vCPUs
  • Horizontal Scaling: Tăng số lượng instances (= scale out / in)
    • Auto Scaling Group
    • Load Balancer
  • High Availability: Chạy các instances cho cùng một ứng dụng trên nhiều AZ![alt text](https://kipalog.kaopiz.com/uploads/c8b4/b80b/Screen Shot 2021-07-06 at 21.27.18.png)

Load Balancing?

  • (Load Balancers) Bộ cân bằng tải là các máy chủ chuyển tiếp lưu lượng truy cập internet đến nhiều máy chủ (EC2 instances) ở hạ lưu. alt text

Tại sao phải sử dụng Bộ cân bằng tải?

  • Chia tải trên nhiều instance
  • Đưa ra một điểm truy cập (DNS) duy nhất cho ứng dụng của bạn
  • Xử lý liền mạch các lỗi của các instance
  • Kiểm tra sức khỏe thường xuyên đối với các instance của bạn
  • Cung cấp SSL (HTTPS) cho các trang web của bạn
  • Tăng cường stickiness (độ dính) với cookie
  • Tính khả dụng cao giữa các zone
  • Tách biệt lưu lượng truy cập public với lưu lượng truy cập private alt text

Tại sao phải sử dụng Bộ cân bằng tải EC2?

  • ELB (Elastic Load Balancer) là một bộ cân bằng tải được AWS quản lý
    • AWS đảm bảo rằng nó sẽ luôn hoạt động
    • AWS có nhiệm vụ nâng cấp, bảo trì, cung cấp tính sẵn sàng cao
    • AWS chỉ cung cấp một số configuration knobs (nút)
  • Việc thiết lập bộ cân bằng tải của riêng bạn sẽ tốn ít chi phí hơn nhưng bạn sẽ phải tốn công sức hơn rất nhiều.
  • Nó được tích hợp với nhiều dịch vụ AWS alt text

Health Checks

  • Health Checks (Kiểm tra sức khỏe) rất quan trọng đối với Load Balancers
  • Chúng cho phép LB biết liệu các instance nó chuyển tiếp lưu lượng truy cập đến có sẵn sàng để hồi đáp các yêu cầu hay không
  • Kiểm tra sức khỏe được thực hiện trên một port (cổng) và một route nhất định (thường là /health)
  • Nếu phản hồi không phải là 200 (OK), thì instance đó không khỏe mạnh (unhealthy) alt text

Các loại LB trên AWS

  • AWS có 3 loại managed Load Balancers (Update (2021/07/15): mới thêm 1 loại nữa là Gateway Load Balancer, tổng cộng có 4 loại)
  • Classic Load Balancer (v1 - old generation) – 2009
    • HTTP, HTTPS, TCP
  • Application Load Balancer (v2 - new generation) – 2016
    • HTTP, HTTPS, WebSocket
  • Network Load Balancer (v2 - new generation) – 2017
    • TCP, TLS (secure TCP) & UDP
  • Nhìn chung, bạn nên sử dụng các bộ cân bằng tải thế hệ mới hơn (v2) vì chúng cung cấp nhiều tính năng hơn
  • Bạn có thể thiết lập ELB internal (private) hoặc external (public) alt text

Load Balancer Security Groups

  • Load Balancer Security Group: HTTP/HTTPS From anywhere
  • Application Security Group: HTTP Restricted to Load Balancer alt text

Load Balancer - Good to Know

  • LBs có thể mở rộng quy mô nhưng không ngay lập tức
  • Xử lý sự cố
    • Lỗi 4xx là lỗi do khách hàng gây ra
    • Lỗi 5xx là lỗi do ứng dụng gây ra
    • Lỗi cân bằng tải 503 có nghĩa là hết công suất hoặc không có mục tiêu được đăng ký
    • Nếu LB không thể kết nối với ứng dụng, hoặc health check target bị unhealthy, hãy kiểm tra các security group của bạn
  • Giám sátalt text

Classic Load Balancers (v1)

  • Hỗ trợ TCP (Layer 4), HTTP và HTTPS (Layer 7)
  • Health checks dựa trên TCP hoặc HTTP
  • Cố định hostname dạng XXX.region.elb.amazonaws.com alt text

Application Load Balancer (v2)

  • Application load balancers ở Layer 7 (HTTP)
  • Cân bằng tải cho nhiều ứng dụng HTTP trên nhiều máy chủ (target groups)
  • Cân bằng tải cho nhiều ứng dụng trên cùng một máy chủ (containers)
  • Hỗ trợ HTTP/2 và WebSocket
  • Hỗ trợ chuyển hướng (ví dụ redirect từ HTTP sang HTTPS) alt text
  • Định tuyến đến các target groups khác nhau:
    • Định tuyến dựa trên đường dẫn trong URL (example.com/users & example.com/posts)
    • Định tuyến dựa trên tên máy chủ trong URL (one.example.com & other.example.com)
    • Định tuyến dựa trên Query String, Headers,… (example.com/users?id=123&order=false)
  • ALB rất phù hợp cho ứng dụng microservices & container-based (vd Docker & Amazon ECS)
  • Có tính năng ánh xạ port để chuyển hướng đến một dynamic port trong ECS alt text

HTTP Based Traffic

alt text

Query Strings/Parameters Routing

alt text

Target Groups

  • Có thể là các EC2 instances (có thể được quản lý bởi Auto Scaling Group) – HTTP
  • Có thể là các ECS tasks (do chính ECS quản lý) – HTTP
  • Có thể là các Lambda functions – HTTP request được chuyển thành JSON event
  • Có thể là các IP Addresses – phải là private IPs
  • ALB có thể định tuyến đến nhiều target groups
  • Health checks nằm cùng cấp với target group alt text

Good to Know

  • Cố định hostname dạng (XXX.region.elb.amazonaws.com)
  • Các máy chủ ứng dụng không nhìn thấy trực tiếp IP của máy kháchalt text

Network Load Balancer (v2)

  • Network load balancers (Layer 4) cho phép:
    • Chuyển tiếp lưu lượng TCP & UDP tới các instances của bạn
    • Xử lý hàng triệu yêu cầu mỗi giây
    • Độ trễ ít hơn (~ 100ms so với 400ms đối với ALB)
  • NLB có một IP tĩnh cho mỗi AZ và hỗ trợ gán Elastic IP (hữu ích cho việc đưa IP cụ thể vào danh sách trắng)
  • NLB được sử dụng cho hiệu suất cực cao, lưu lượng TCP hoặc UDP
  • Không được bao gồm trong bậc miễn phí AWS alt text

TCP (Layer 4) Based Traffic

alt text

Load Balancer Stickiness

  • It is possible to implement stickiness so that the same client is always redirected to the same instance behind a load balancer
  • This works for Classic Load Balancers & Application Load Balancers
  • The “cookie” used for stickiness has an expiration date you control
  • Use case: make sure the user doesn’t lose his session data
  • Enabling stickiness may bring imbalance to the load over the backend EC2 instances alt text

SSL/TLS - Basics

  • An SSL Certificate allows traffic between your clients and your load balancer to be encrypted in transit (in-flight encryption)
  • SSL refers to Secure Sockets Layer, used to encrypt connections
  • TLS refers to Transport Layer Security, which is a newer version
  • Nowadays, TLS certificates are mainly used, but people still refer as SSL
  • Public SSL certificates are issued by Certificate Authorities (CA)
  • Comodo, Symantec, GoDaddy, GlobalSign, Digicert, Letsencrypt, etc…
  • SSL certificates have an expiration date (you set) and must be renewed alt text

Load Balancer - SSL Certificates

  • The load balancer uses an X.509 certificate (SSL/TLS server certificate)
  • You can manage certificates using ACM (AWS Certificate Manager)
  • You can create upload your own certificates alternatively
  • HTTPS listener:alt text

SSL – Server Name Indication (SNI)

  • SNI solves the problem of loading multiple SSL certificates onto one web server (to serve multiple websites)
  • It’s a “newer” protocol, and requires the client to indicate the hostname of the target server in the initial SSL handshake
  • The server will then find the correct certificate, or return the default one
  • Note:alt text

Elastic Load Balancers – SSL Certificates

  • Classic Load Balancer (v1)
    • Support only one SSL certificate
    • Must use multiple CLB for multiple hostname with multiple SSL certificates
  • Application Load Balancer (v2)
    • Supports multiple listeners with multiple SSL certificates
    • Uses Server Name Indication (SNI) to make it work
  • Network Load Balancer (v2)alt text

ELB – Connection Draining

  • Feature naming:
    • CLB: Connection Draining
    • Target Group: Deregistration Delay (for ALB & NLB)
  • Time to complete “in-flight requests” while the instance is de-registering or unhealthy
  • Stops sending new requests to the instancevwhich is de-registering
  • Between 1 to 3600 seconds, default is 300vseconds
  • Can be disabled (set value to 0)
  • Set to a low value if your requests are short alt text

Tags

© 2021, All Rights Reserved.

Quick Links

Liên hệ quảng cáoThông tinLiên hệ

Social Media