Load Balancing – Cân bằng tải là gì ?

Giới Thiệu

Làm thế nào để hệ thống luôn hoạt động một cách ổn định, đạt được hiệu suất cao và đảm bảo cho máy chủ đáp ứng được khi có lượng request tăng đột ngột và bất thường ? đó là vấn đề khá đau đầu của các nhà phát triển khi tổ chức cơ sở mạng cho các website, ứng dụng,Database và các dịch vụ khác.Đó là lý do Load Balancing ra đời để khắc phục những vấn đề ở trên .

Các vấn đề ghặp phải khi vận hành hệ thống

Với các hệ thống , website hay các ứng dụng truyền thống thông thường thì sẽ được tổ chức như sau :

vậy vấn đề đặt ra ở đây là khi có một lượng người dùng lớn. request liên tục lên hệ thống hoặc trong quá trình hoạt động server đó bị đầy ổ cứng hoặc ghặp phải vấn đề nào đó làm cho server tự nhiên lăn quay ra chết thì hệ thống được deploy trên server đó sẽ bị tê liệt, người dùng không thể truy cập cũng như xử dụng dịch vụ . Do vậy hậu quả của nó để lại vồ cùng khôn lường với các nhà phát triển. Vậy có cách nào để giải quyết những vấn đề đó . Thực ra thì có 2 giải pháp để khắc phục những vấn đề đó

-cách thứ nhất Vertical Scale : có nghĩa là sẽ tăng cường khả năng phục vụ của server bằng cách nâng cấp phần cứng như nâng cấp Memory,CPU,HDD ..v..v. cách này có ưu điểm là tiết kiệm thời gian và hầu như không thay đổi cấu trúc tổ chức mô hình mạng của hệ thống tuy nhiên nếu Scale theo cách này thì các nhà phát triển tốt rất nhiều chi phí . thậm chí khi lên tới ngưỡng hỗ trợ của máy thì chẳng khác nào tậu mấy con supper-computer về chạy cả

-cách thứ hai Horizontal Scale: ở cách này thì các nhà phát triển không cần phải mua những con server quá khủng mà quan trọng là giá cả phù hợp, ổn định và có thể mua nhiều server đồng dạng để giúp hệ thống đồng bộ phần cứng tránh các rủi ro do trong một mạng có quá nhiều dòng thiết bị khác nhau .

Vậy Load Balancing là gì ?

Nói một cách dễ hiểu thì Load Balancing(gọi tắt là LB) là một hệ thống(phần mềm , thiết bị ) đóng vai trò phân chia các incomming request tới các server đứng sau nó (Backend server) thường thì sẽ có 2 server trở lên

Ví dụ : hệ thống có 3 server và bạn muốn khi có người truy cập thì LB sẽ tự điều hướng, phân chia những request đó tới 3 server kia để không có server nào bị quá tải cũng như không có server nào quá nhàn rỗi. ngoài ra LB cũng có khả năng kiểm tra tình hình “sức khoẻ” của các server con đứng sau nó. Nếu 1 trong các server con đó bị chết thì LB cũng sẽ không điều hướng request vào server đó và sẽ tự điều hướng khi server đó sống trở lại.

Hiện tại có 2 hướng tiếp cận chính là sử dụng phần mềm hoặc phần cứng. Cách sử dụng phần cứng là các thiết bị chuyên dụng, các mạch điều hướng trong thiết bị được thiết kế tối ưu cho việc điều hướng nên cách này có thể gọi là tốt nhất cho load balancer. Tuy nhiên, bạn cần phải mua các thiết bị này, và chi phí thường không nhỏ và khả năng tùy biến không lớn.

Cách thứ hai là sử dụng các phần mềm và cài đặt lên các server trong mạng và làm nhiệm vụ điều hướng tới các server được chỉ định trong mạng khi có truy vấn từ ngoài mạng. Cách này hiện được ưa chuộng hơn bởi không cần mua các thiết bị đắt đỏ và có thể tùy chỉnh hệ thống vì hầu hết là phần mềm nguồn mở.

Web Server Load Balancer

Hiện nay ông lớn về dịch vụ server là Amazon Web Service(AWS) đã có cung cấp dịch vụ LB cho các nhà phát triển nó được gọi là Elastic Load Balancer . sau đây tôi xin trình bày về cách config một ELB của AWS

Phần 1 : tạo các backend servers và deploy source code lên các server đó

Bước 1 :ở màn hình console của AWS (màn hình đầu tiên khi login vào) chọn EC2 

Bước 2.tiếp theo chúng ta sẽ chọn vùng cho server muốn tạo. ví dụ server sẽ được đặt ở (Mỹ, Nhật ..v..v)

 

Bước 3 :vào màn hình quản lý instance(instance ở đây đóng vai trò là các server). ở màn hình này sẽ cho phép start,stop các server đã được tạo trước đó hoặc tạo thêm các server mới

Bước 4:ở màn hình quản lý instance chọn launch instance để bắt đầu tạo 1 instance mới.ở màn hình create instance sẽ bắt đầu bằng cách chọn hệ điều hành cho server

Bước 5 :tiếp theo AWS sẽ bắt bạn chọn cấu hình cho server ví dụ như 4core 16Gb Ram , Storage là loại gì (EBS only là chỉ có ổ ảo, còn ghi là SSD là ổ vật lý luôn :D)

Bước 6 : ở màn hình tiếp theo sẽ là việc cấu hình các thông tin cho instance đó ở bước này thì đa số để mặc định. mình cũng chỉ để các trường là mặc định 😀

Bước 7 : ở bước này sẽ chọn dung lượng cho ổ cứng của instance

Bước 8 :Bước tiếp theo là Add tag phần này next luôn cũng được mình chưa thấy cái tag này có tác dụng gì 😀

Bước 9: Bước tiếp theo là sẽ phải security group. Theo như AWS giải thích thì đây là tập hợp các quy tắc tường lửa kiểm soát lưu lượng truy cập. nôm na là sẽ là chỗ mở các cổng mà user có thể truy cập vào hệ thống của mình .ở đây bạn có thể create 1 security group và dùng chung cho các server khác cũng được 😀 . ở đây tôi chọn phương thức access là HTTP và mở port mặc định là 80 .

Bước cuối. review lại 1 lần nữa về instance vừa config nếu phát hiện sai sót cần phải previous về bước đó và config lại. nếu không có sai sót gì hãy click launch để hoàn tất

Phần 2: Create Load Balancer cho những instance vừa tạo

sau khi đã create 2 instance và deploy soucre code lên 2 server đó thì ta sẽ create Elastic Load Balancer cho 2 server mình vừa tạo

Bước 1: Tạo Elastic Load Balance . ở bước này thì nó cũng gần giống như ở phần tạo instance . đầu tiên ta sẽ tìm đến tab Load Balancers trong Load Balancing

Bước 2 : Trong màn hình quản lý Load Balancer ta chọn Create Load Balancer để tạo Load Balancer – ở đây bơi lý do bảo mật xin phép anh em mình k show ảnh

Bước 3 : ở đây AWS cho chọn 3 loại Load Balancer là Application Load Balancer, Network Load Balancer,Classic Load Balancer. ở bước này mình chưa tìm hiểu về 2 Load Balancer là Application Load Balancer và Network Load Balancer mà chỉ thao tác trên Classic Load Balancer . mong anh em thông cảm :D. click Create để bắt đầu cuộc chơi nhé anh em =)))))

Bước 4 :Ở màn hình tiếp theo ta khá quan trọng. Đó là việc ELB sẽ giao tiếp với các backend servers. ở màn hình này việc đầu tiên là đặt tên cho ELB sắp tạo . sau đó ta sẽ config cho user sẽ request tới ELB này qua phương thức nào,port nào và ELB sẽ phân phối các request của user tới các backend servers qua phương thức nào, port nào

chú thích 1 chút ở đây :

  1. 1 là tên của ELB
  2. 2 là user sẽ request tới ELB bằng HTTP hoặc HTTPS hay TCP ..v..v..
  3. 3 port sẽ mở để user request tới ELB
  4. 4 là ELB sẽ tương tác với backend servers qua HTTP hoặc HTTPS hat TCP. Lưu ý : trong trường hợp instance của bạn deploy và config là TCP chỉ định chạy vào cổng 8080 thì ELB cũng phải được chọn là TCP và Port nào đó . nếu không config protocol giống nhau thì ELB sẽ không forward được request tới các backend servers. Nói một cách dễ hiểu là instance config protocol như thế nào thì ELB hãy config giống như vậy
  5. 5 port của instance vừa tạo

Bước 5:Bước này thì giống như bước create Security Groups giống như lúc tạo instnace

Bước 6 : Bước này sẽ là việc config việc check “Sức Khoẻ” của ELB tới backend server . ở đây nguyên lý của nó là sẽ ping tới backend servers nếu nhận về 200 thì là server còn sống. Nếu không trả về 200 => server chết thì nó sẽ không phân phối request tới server đó nữa

Bước 7:Bước tiếp theo sẽ chọn các instance trước đó đã tạo . vào ELB ở đây sẽ là option và chọn thôi =)). ở phần này vì lý do bảo mật thông tin. Xin phép anh em mình không show ảnh

Bước 8:Bước tiếp theo thì là phần add Tag. Phần này cũng giống như là add tag của instance thôi. Mình không nói nữa

Bước 9 : Cũng giống như là phần review của instance .

Cuối cùng sau khi thực hiện xong các bứớc thì ELB đã được tạo xong . các bạn nên đợi khoảng 5-10 phút để hệ thống setup. Và sau đó trở lại màn hình quản lý Load Balancer ở bước 1 phần create Load Balancer . chọn ELB vừa được tạo. chọn Instances . và kiểm tra xem 2 instance vừa được add vào có status là Inservice thì ElB đã tương tác được với các end servers.sau đó ta test bằng cách coppy trường DNS name ở tab Description và truy cập.

Hãy thử và xem điều kỳ diệu gì sẽ sảy ra nhé.

Trên đây là những gì mình đã tìm hiểu và ứng dụng vào công việc thực tế. rất mong những ý kiến đóng góp của anh em để làm động lực cho những bài viết sắp tới . xin hẹn các anh em vào những bài viết tới .

Thanks for Reading . Best Regards 😀

Leave a Reply

Your email address will not be published. Required fields are marked *