– số lượng thực thể vẫn giữ nguyên, chỉ tăng chất lượng của các thực thể
VD: đang dùng một con EC2 t2.micro thì tăng lên thành t2.xlarge
khá nhiều services đang hỗ trợ tự động scale theo chiều dọc | – giữ nguyên chất lượng của các thực thể, tăng số lượng lên để đáp ứng đủ nhu cầu VD: đang có 3 con EC2 t2.large để handle các tasks ⇒ tăng thêm 2 con nữa thành 5 con EC2 t2.large |
Khái niệm về Availibility
Thường đi kèm với scalability
Để ngăn chặn việc mất dữ liệu, service bị gián đoạn ⇒ chạy hệ thống ở nhiều data centers (2 AZs trở lên – multi-AZ)
Load balancing
Điều hướng traffics tới các servers con
giúp cho chạy ổn định, hiệu năng tốt, tăng khả năng chịu lỗi (1 con server bị lỗi/quá tải thì toàn bộ traffics sẽ được forward tới các servers khác)
hoạt động như 1 middleware, giúp thực hiện thêm một số chức năng khác
Elastic Load Balancer
Dễ setup – AWS hỗ trợ từ A đến Z
Tương thích với rất nhiều services:
EC2, EC2 Auto Scaling Groups, Amazon ECS, AWS lamdas
ACM, Cloudwatch (dùng để setup healthcheck)
Route 53, AWS WAF, AWS Global Accelerator
Có 4 loại load balancer trong AWS
Classic (deprecated)
Application
Network
Gateway
Để control traffics (security) trong load balancer ⇒ sử dụng security group
Application load balancer
Xử lý các request ở tầng HTTP/HTTPS
Handle một số lượng nhỏ requests với độ trễ tương đối cao
Có thể route traffics tới các target group
Hỗ trợ WebSocket, redirect (proxy)
Target groups:
Chứa tập hợp các thực thể xử lý các request:
EC2 instances – quản lý bởi auto scaling groupECS tasksLambda functionsIP addresses – private IPs
Một ALB có thể link tới nhiều target groupsCác target groups tự động scale dựa theo health check (có thể là một hoặc một số metrics gì đó như CPU utility, RAM utility, ….)
Có thể routing bằng parameters
Sử dụng X-forward-For để cho server thấy được IP của clients
Network Load Balancer
Xử lý số lượng request rất lớn – hàng triệu requests mỗi giây
Độ trễ thấp
Xử lý các request ở tầng TCP/UDP
Dễ kết hợp với Elastic IP
Target groups của NLB có thể là:
EC2 instances
IP addresses
Các ALB
Có hỗ trợ Health Check
Gateway Load Balancer
Xử lý các request ở tầng mạng
Deploy, scale các app ở bên thứ 3
Các target groups có thể là:
EC2 instances
IP addresses
Một số khái niệm khác
SSL/TLS: ALB và NLB đều hỗ trợ
Connection Draining/Deregistration Delay: khoảng time để xử lý nốt các request đang được xử lý trước khi bị de-register (traffics sẽ được chuyển sang các instance khác)
Auto Scaling Group
Tự động scale in/out các thực thể (EC2) để có thể tải được số lượng requests
Các thông số cơ bản: min, desired, max
Sử dụng health check hoặc cloud watch alarm để scale in/out
Hỗ trợ scaling policy
Scaling cooldown, instance refresh
Các thông tin khác
Sử dụng ALB access log để log thông tin các request (headers, response, độ trễ , IP khách, ….)