Ở phần 1 của serries https://blog.vietnamlab.vn/gioi-thieu-elastic-load-balacing-trong-aws/

Mình đã giới thiệu về 3 services ELB mà AWS cung cấp cho người dùng

Tiếp theo đây mình sẽ trình bày rõ hơn về những điều đáng lưu tâm khi xây dựng một load balancer, và xây dựng một load balancer cơ bản

Nội dung của bài viết này bao gồm

  • Security Groups
  • Health Check
  • Cấu hình Classic load balancer

I. Security Groups

Nhu cầu thường thấy của một bài toán áp dụng load balancer (LB)

  • Yêu cầu các request từ phía client đều phải thông qua LB ( các request đều bị hạn chế truy cập trực tiếp đến App Servers )
  • LB là điểm kết nối duy nhất đến môi trường Internet và cung cấp các chứng chỉ SSL cho ứng dụng

Để triển khai một dịch vụ LB thỏa mãn nhu cầu như trên ta phải xây dựng ít nhất là 2 Security Groups

  • Security group của LB:  Cho phép giao thức  HTTP/ HTTPS từ internet
  • Security group của ứng dụng: Cho phép giao thức HTTP từ LB

II. Health-check

Health-check là một vấn đề rất quan trọng đối với một hệ thống có sử dụng LB

  • Health-check Cho phép LB biết được liệu App Server nào đang sẵn sàng để tiếp nhận và xử lý các yêu cầu được chuyển tiếp đến
  • Việc kiểm tra Health-check được thực hiện bằng cách đơn giản là kiểm tra port hoặc gửi 1 request đến app server (ví dụ /heath). Thông điệp App server phản hồi LB cho phép LB phán đoán những request tiếp theo có nên gửi đến App Server này nữa hay không
    Nếu App server trả về khác 200 nghĩa là App Server này đang có vấn đề

III. Triển khai Classic load balancer

Việc triển khai Classic load balancer được AWS hỗ trợ chỉ với một vài thao tác đơn giản là đã có thể xây dựng được một hệ thống xử dụng LB

Việc xây dựng Classic load balancer sẽ bao gồm 4 bước:

  1. Định nghĩa load balancer
  2. Chỉ định Security Groups
  3. Cấu hình Health Check
  4. Thêm EC2 Instance
Để bắt đầu triển 1 Demo cho Classic load balancer ta sẽ chuẩn bị 2 EC2 đóng vai trò là các App server. Sau đó xây dựng LB cho 2 App Server này

Chuẩn bị

Chúng ta tạo 2 Instances EC2 ( 2 instance mình dùng là Ubuntu 20.4 ) và cài dịch vụ apache2 trên mỗi Instance

Sau đó thay đổi nội dung trong /var/www/html/index.html bằng command sau

echo "Instance $(hostname -f)" > /var/www/html/index.html

Sau đó ta thêm Rule cho phép HTTP vào Security Group của Instance này

Lúc này trên trình duyệt khi trỏ đến ip của instance ta sẽ có nội dung như sau

Cài đặt Classic Load Balancer

Bạn vào phần Services →Load Balancing →Create Load Balancer

Bước 1: Định nghĩa load balancer
Bước 2: Chỉ định Security Groups
Bước 3: Cấu hình Security

Bước này bạn có thể bỏ qua vì phần Security Groups chỉ cho phép giao thức HTTP

Bước 4: Cấu hình Health Check
Bước 5: Thêm ECs

Tới đây các thao tác cơ bản để dựng một hệ thống LB coi như đã hoàn thành bạn tiếp tục các thao tác bấm vào nút xanh ở dưới bảng điều khiển để đến phần review xem lại các thông tin cơ bản và create

Bước 6: Kiểm tra service của Instances

Tại bảng điều khiển LB ta có thể kiểm tra trạng thái của các EC2 được thêm vào LB

Sau khi thấy trạng thái chuyển sang InService ta có thể sử dụng browser để xem LB có hoạt động hay không bằng cách sử dụng DNS name

Sau khi xác nhận cấu hình LB thành công ta sẽ chuyển sang bước cuối cùng

Bước cuối: Thiết lập lại security của AppServer

Bây giờ ta sẽ chỉ cho phép HTTP từ LB đến AppServer với source là my-clb-1 ( Đây là tên của Security Group được chỉ định cho LB)

Bây giờ việc truy cập trực tiếp đến Intances sẽ connect time-out và chỉ có thể truy cập thông qua LB

Kết bài

Mình vừa chia sẻ cách triển khai CLB trên AWS cũng như các vấn đề đáng được quan tâm khi cấu hình LB như Security Group, Health Check. Hi vọng bài viết này sẽ giúp ích cho các bạn

Các chủ đề tiếp theo của Series này sẽ là Application Load Balancer, Network Load Balancer, các vấn đề về sticky...Hẹn sớm gặp lại các bạn :D