Basic Amazon Web Services P4

Hôm nay mình sẽ tiếp tục trình bày với các bạn Phần 4 - bài viết về AWS cơ bản giành cho người mới bắt đầu.
Trong phần 3, mình đã hướng dẫn các bạn: ACL, SG, EC2
Chi tiết các bạn có thể xem lại link bên dưới:
https://viblo.asia/p/basic-amazon-web-services-p3-maGK7429Zj2
Tiếp theo phần 3, hôm nay mình viết thêm phần 4.
Nội dung: Load Blancing AWS ( có thể gọi tắt bằng ELB hoặc LB )

1. Khái niệm cơ bản về Load blancing.

Load blancing là khái niệm về cân bằng tải, cân bằng tải hệ thống, network, web,.. Hiểu đơn giản là để chia tải cho hệ thống mình cho nó nhẹ nhàng, có dự phòng và trơn tu hơn
Ví dụ chúng ta có 1 website, chúng ta để ở trên 2 server, nguời dùng truy cập đông thì nó chia đều lượt truy cập theo tỷ lệ 1:1,
trường hợp 1 con server chết - thì vẫn còn 1 con để chạy.
Trong AWS,
ELB: Elastic Loadblancing - đây là tên gọi chung nhé
ELB chia thành 3 nhánh nữa: ALB, NLB, CLB
'+ ALB (Application Loadblancing)
'+ NLB (Network Loadblancing)
'+ CLB (Classic Loadblancing)

So sánh đơn giản về sự khác nhau 3 LB này:
ALB: (Application Loadblancing): Trong mô hình OSI, nó nằm ở layer 7
'-> Tức là tầng Application, hỗ trợ tốt về HTTP/HTTPS, Config SSL, không hỗ trợ Elastic IP
NLB: (Network Loadblancing) : Trong mô hình OSI, nó nằm ở layer 4
' -> Tức là tầng Transport, , hỗ trợ tốt về TCP/UDP, Config SSL cũng được, hỗ trợ Elastic IP (EIP)
CLB: (Classic Loadblancing): Đây là LB cổ điển, AWS thay thế nó bằng ALB,
'-> nó không hỗ trợ tốt về một số điểm như là: LB multiple port trên cùng Interface, không hỗ trợ config target bằng IP, không hỗ trợ Web socket.


Các bạn tham khảo thêm ở đây
https://aws.amazon.com/elasticloadbalancing/features/?nc=sn&loc=2

2. Demo về NLB (Network Loadblancing)

'- Mình tiến hành demo về NLB (Network Loadblancing) trước luôn nhé.
Mô hình NLB các bạn có thể nhìn vào hình bên dưới để dể hình dung,



2.1 Chuẩn bị môi trường.

Để làm thì các bạn build sẳn: VPC, ACL, SG, 2 con EC2 (Đã cài webserver - Nginx hoặc Apache..).
'-> phần này ở trong phần 2,3 mình đã hướng dẫn rồi đấy
Vậy là chúng ta có sẳn 2 con EC2 rồi:



2.2 Làm việc với NLB

Trong mục tìm kiếm, ta search từ khóa ec2, sau đó nhìn bên tay trái có mục LOAD BLANCING.
Load Blancer -> Create Load Blancer.



Lựa chọn option là NLB nhé.



Name: Đặt tên phù hợp
Scheme:
'+ Lựa chọn internet-facing (Cho phép request từ bên ngoài internet vào NLB -> đến target)
'+ Lựa chọn internal (Chỉ cho phép request từ bên trong ( IP private) vào NLB -> đến target.)
Trong mục Protocol, mặc định thì nó sẽ listen TCP traffic từ port 80,
chúng ta cũng có thể chuyển sang TLS để dùng port 443 hoặc UDP (53)



Tiếp đến, lựa chọn LB cho các AZ. Vì ban đầu mình tạo 2 con ec2 ở trên 2 AZ khác nhau nên ở đây mình chọn 2 nhé.
Có 1 điểm đặc biệt, thì đối với NLB mình có thể chọn IPv4 Asssign là EIP nhé. Ở ALB thì không có chức năng này.



Trong phần Target group, ta lựa chọn instance .



Lựa chọn instance xong thì nhớ add registered nhá



Review lại tổng thể



Sau khi hoàn tất, vào lại Load Blancer, kiểm tra lại phần DNS Name.



Trong phần target group, kiểm tra phần status: healthy nhé.


Như vậy là hoàn thành config NLB rồi đấy, tùy theo mô hình mà mình chỉnh lại cho phù hợp thôi.
Cùng check KQ nhé

2.3 Test kết quả NLB.

Truy cập vào server linux bất kì để test cũng được, vì ELB trên đã public ra ngoài
Chạy client như hình bên dưới

while true;
do;
wget "dns của NLB"
done;



Chúng ta thấy nó load đều 2 con EC2 là được



Hoặc đơn giản hơn
Chúng ta lấy DNS của NLB ở phía trên để truy cập bằng chrome
Sau mỗi lần F5 là mình thấy nội dung web đều trỏ đều cho 2 EC2 này



3. Demo về ALB (Application LoadBlancing)

Cách config ALB cũng tương tượng như NLB thôi, nhưng có một vài điểm khác như bên dưới:
Ta lựa chọn ALB, sau đó đặt tên các kiểu



Trong phần lựa chọn AZ này nè, ta thấy nó khác ALB là không chọn được EIP.


Phần khác tiếp theo đó là về protocol,
ở ALB nó dùng TCP, TLS, UDP, thì bên này chuyên cho http/https



Cũng tiến hành add registered



Sau khi hoàn thành nếu mục healthy có bị fail thì ta kiểm tra lại trong ec2 nhé



Heal check của ALB là nó default sẽ ping vào file index trong đường dẫn /var/www/html.
nếu không có thì sẽ không check được.
Kiểm tra xem có không, nếu không có thì ta thêm vào



3.1 Test kết quả ALB.

Kết quả thành công, ta cũng dùng trình duyệt truy cập bằng dns của ALB cho khỏe, test cho nhanh gọn



Còn không thì mình sử dụng tool cURL để check




3.2 Các tham số basic trong Heathcheck.

Có một số tham số trong heath check các bạn để ý nhá


heath check thì nó sẽ check server, services có chạy OK không ?
Các tham số để check thường sẽ có mấy thông số sau:

         +  Ping Protocol (tcp,http,https,ssl), default là http
          +  Ping Port ( 1 đến 65535), default ping port 80
          +  Ping path: default - check dựa vào file index.html
          +  Response Time Out: Valid values từ 2 đến 60, default là 5 giây
          +  Heath check interval: thời gian giữa các lần check, từ 5 đến 300, default là 30 
             -> Nghĩa là cứ 30s hệ thông check 1 lần.
          +  Unhealthy Threshold: Số lần kiểm tra thất bại trước khi thông báo, từ 2 đến 10 lần, default là 2 
              -> Nghĩa là cứ sau 2 lần check mà fail thì sẽ thông báo.
          +  Healthy Threshold: Số lần kiểm tra tình trạng server OK, từ 2 đến 10 lần, default là 10 
              -> Nghĩa là cứ sau 10 lần check liên tiếp OK, thì thông báo OK.
          +  Connection Draining: (default 300s) :
              -> ví dụ có 3 EC2, 1 EC2 bị xoá ... thì trước khi xoá, ELB sẽ move lần lượt các connection sang 2 EC2 khác. 
              -> mặc định khoảng 300s move xong.

3.3 Phân biệt listen port, forward port.

Phân biệt listen port, forward port, heathcheck trong ELB.
'- Listen port là listen từ ngoài vào ELB.
'- Forward port là forward từ ELB đến EC2.
'- Heathcheck nó có thể dùng port của forward để check status trong EC2 luôn.

Vâng, thì bài viết của mình đến đây là kết thúc rồi.
Trong phần tiếp theo, phần 5 mình sẽ viết về Auto Scale
Bài viết mình cũng còn khá sơ sài và basic, bạn đọc thấy phần nào không ổn thì comment trao đổi để tốt hơn nhé..
Thank you !

Nguồn tham khảo:
https://linuxacademy.com/cp/modules/view/id/161
https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html
https://cuongquach.com/cau-hinh-public-aws-application-load-balancer-cho-web.html
https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-healthchecks.html