Linux Virtual Server là gì? LVS là gì?

 

Linux virtual server (LVS) là kỹ thuật nhóm các server đơn lẻ thành một server duy nhất mà người dùng không hề biết về sự tồn tại của các server đơn lẻ này. Server duy nhất này được gọi là virtual server hay còn gọi là bộ cân bằng tải – load balancer có một địa chỉ IP ảo (Virtual IP hay VIP) và đằng sau nó là các real server.

LVS có 3 phương thức để xử lý các request được gửi từ người dùng, đó là:

  • . LVS VIA NAT
  • . LVS VIA IP tunneling
  • . LVS VIA Direct Routing

1. LVS VIA NAT là gì?

Linux Virtual Server via NAT kỹ thuật đơn giản nhất. Các real server chỉ cần là những hệ điều hành bất kỳ hỗ trợ được TCP/IP stack. LVS NAT sử dụng kỹ thuật IP masquerading trong Linux. Bộ cân bằng tải Load Balancer sẽ nhận request từ người dùng thông qua virtual IP là một IP public, sau đó load balancer này sẽ chuyển các gói tin đến các real server thông qua các private IP và cuối cùng chuyển các response về cho người dùng.

Hãy xem một ví dụ sao để hiểu hơn về LVS NAT. Giả sử ta có:

Client Source Address: 183.83.214.214

Virtual IP (IP gán vào Load Balancer): 212.71.233.103

Real Server1: 10.1.10.1

Real Server2: 10.1.10.2

Bước 1: User(183.83.214.214) gửi request đến VIP của Load balancer(212.71.233.103)

Bước 2: Nhận được request, Load balancer check địa chỉ đích và port và sẽ lưu thông tin kết nối vào một bảng, sau đó chuyển cho một real server đã được lựa chọn trong pool bằng thuât toán lựa chọn. Lúc này kết nối của request trông như sau:

Bước 3: Load balancer nhận response từ real server và viết lại địa chỉ nguồn của gói tin và trả lại cho người dùng:

Ưu điểm của LVS NAT là real server có thể chạy bất cứ hệ điều hành nào và chỉ cần duy nhất một địa chỉ IP đứng trước Load balance.

Nhược điểm của LVS NAT là Load balancer phải viết lại địa chỉ đích 2 lần cho mỗi request, điều này sẽ dẫn đến việc làm cạn kiệt tài nguyên khi số lượng request gia tăng, đặc biệt là khi có nhiều real server. Hơn nữa các response đều phải thêm 1 lần nữa đi qua Load balance nên thắt cổ chai tại LB là điều không thể tránh khỏi.

2. LVS VIA IP Tunneling là gì?

LVS IP Tunneling là một giải pháp tốt hơn so với LVS NAT vì 2 lý do sau:

. Thứ nhất Load balancer không phải ghi lại nhiều lần các địa chỉ của gói tin

. Thứ hai các response trả về không cần phải đi qua Load Balancer.

Kỹ thuật được sử dụng ở đây là gửi các packet đến các real server thông qua IP tunneling luôn mà không cần phải trả response về cho LB. Điểm quan trọng cần lưu ý về kỹ thuật LVS IP tunneling này là mỗi real server phải có một interface tunnel, và chúng cùng nằm trong mạng LAN hoặc WAN. Các bước được mô tả như sau:

Bước 1: Client gửi request đến VIP, ở đây là địa chỉ của Load Balancer

Bước 2: Load Balancer kiểm tra gói tin với dịch vụ trong đó, nó đóng gói tin này bên trong một gói tin IP khác và chuyển đến Real Server. Load Balancer sẽ thêm thông tin kết nối vào bảng định tuyến sao cho các request tiếp theo đến từ cùng connection đó có thể được chuyển tiếp đến cùng Real server đang xử lý request cũ.

IP Tunneling giống như VPN. Real server có thể có bất cứ địa chỉ IP nào nhưng nó cần phải có địa chỉ IP ảo (VIP) của Load Balancer được cấu hình trên một interface ảo. Điều đó có nghĩa tất cả các server trong LVS IP Tunneling đều có VIP. Đều này dẫn đến một vấn đề về ARP đó là khi client và LVS cluster nằm trên cùng mạng, Real server sẽ không trả lại các ARP request cho VIP dẫn đến việc client có thể không kết nối đến được real server trực tiếp mà phải đi qua Load Balancer. Vấn đề này được giải quyết bằng cách gán VIP trên các interface non-arp như lo:0 trong Real Server.

Bước 3: Real Server bóc các gói tin được gửi bới Load Balancer, đọc gói tin gốc từ client và xử lý dữ liêu và trả về trực tiếp cho client.

Ưu điểm của phương pháp này là Load Balancer sẽ không bị rơi vào tình trạng quá tải với việc phải thay đổi các gói tin nhưng nhược điểm là đòi hỏi Real server phải hỗ trợ IP Tunneling.

3. LVS VIA Direct Routing là gì ?

Ở phương thức này, ta không còn phải bận tâm về tunneling như LVS Tunneling hay rewrite packet của LVS NAT. Phương thức này tương đối giống phương pháp thứ hai ở một khía cạnh đó là Response sẽ được trả trực tiếp từ real server về người dùng. IP ảo được gán và chia sẻ trên cả Load Balancer cũng như trên các real server. Điểm quan trọng trong phương thức này là do Load Balancer, real server cùng nằm trên cùng mạng vật lý nên IP ảo phải được gán vào các interface không response các ARP request – interface non-arp.

Bước 1: Như thường lệ, client gửi request đến VIP trên Load Balancer. LB sẽ chuyển nó đến các real server theo thuật toán lựa chọn. Khi real server nhận được request, nó sẽ thay đổi frame của gói tin với địa mac là địa chỉ của real server để retransmit trên LAN. Đó là lý do vì sao LB và real server phải nằm trên cùng một phân đoạn LAN.

Bước 2: Real server có cùng IP ảo được cấu hình trên các interface non-arp, nó nhận các gói tin và xử lý nó, sau đó chuyển các response về lại cho client.

Ưu điểm chính của phương thức này là giảm thiểu tải tại các nút thắt nhưng nhược điểm là đòi hỏi các Real Server và Load Balancer phải nằm cùng trên 1 phân đoạn mạng.

Be the first to comment

Leave a Reply

Your email address will not be published.


*