1. Trang chủ
  2. » Luận Văn - Báo Cáo

NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX

83 2,7K 21

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 83
Dung lượng 6,22 MB

Nội dung

NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX Ngày nay, công nghệ mạng và các hệ thống máy chủ đã có những bước phát triển vượt bậc. Việc truy cập ứng dụng trên các server ngày càng phát triển nhiều và rộng rãi. Vì thế các server mắc phải hiện tượng quá tải, lỗi hệ thống gây khó khăn cho người dùng và người quản trị. Phân tích các kỹ thuật cân bằng tải Web Server. Cài đặt hệ thống Web Server trên nền tảng Linux. Triển khai cài đặt hệ thống cân bằng tải cho Web Server.

Trang 1

NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX

Trang 2

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN

TRẦN HUY ĐÔNG NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX

NGÀNH: CÔNG NGHỆ THÔNG TINCHUYÊN NGÀNH: MẠNG MÁY TÍNH & TRUYỀN THÔNG

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC

NGƯỜI HƯỚNG DẪN

VŨ ĐỨC THI PHẠM NGỌC HƯNG

HƯNG YÊN - 2014

Trang 3

MỤC LỤC

Trang 4

DANH SÁCH HÌNH VẼ

Trang 6

DANH SÁCH TỪ VIẾT TẮT

DNS Domain Name System Hệ thống phân giải tên miềnDRR Dynamic Round Robin Quay vòng động

FTP File Transfer Protocol Giao thức truyền dữ liệu

GSLB Global Server Load Balancing Cân bằng tải máy chủ toàn cầuHTTP Hypertext Transfer Protocol Giao thức truyền tin

IP Internet Protocol Giao thức Internet

LAN Local Access Network Mạng nội bộ

LB Load Balancing Cân bằng tải

LC Least Connections Ít kết nối nhất

LVS Linux Vitual Server Máy chủ Linux ảo

NAT Network Address Translate Chuyển địa chỉ IP

RR Round Robin Quay vòng

SAN Storage Area Network Vùng mạng lưu trữ

SBL Server Load Balancing Cân bằng tải máy chủ

WAN Wide Area Network Mạng diện rộng

WRR Weight Round Robin Quay vòng có trọng số

Trang 7

CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI

1.1 Lý do chọn đề tài

Ngày nay, công nghệ mạng và các hệ thống máy chủ đã có những bước phát triển vượt bậc Việc truy cập ứng dụng trên các server ngày càng phát triển nhiều và rộng rãi Vì thế các server mắc phải hiện tượng quá tải, lỗi hệ thống gây khó khăn cho người dùng và người quản trị

Một hệ thống mạng phải đảm bảo khả năng mở rộng tối ưu để đáp ứng được một lượng lớn yêu cầu của người dùng mà không gây ra bất kỳ một vấn đề rủi ro nào và đồng thời tăng khả năng chịu lỗi cho server Đứng trước sự cạnh tranh về giá thành, việc phát triển và xây dựng các phương pháp cân bằng tải trở nên vô cùng hữu ích

Từ thực tế như vậy em quyết định chọn đề tài “Nghiên cứu kỹ thuật Network Load Balancing trong hệ thống mạng Linux” nhằm tìm hiểu các nguyên lý hoạt động cũng như các thuật toán cân bằng tải để xây dựng một nền tảng vững chắc về vấn đề cân bằng tải cho Web Server, từ đó góp phần thúc đẩy quá trình xây dựng nên một bộ cân bằng tải hoạt động hiệu quả có khả năng đáp ứng nhu cầu cho các Web Server

1.2 Mục tiêu của đề tài

- Phân tích các kỹ thuật cân bằng tải Web Server

- Cài đặt hệ thống Web Server trên nền tảng Linux

- Triển khai cài đặt hệ thống cân bằng tải cho Web Server

1.3 Giới hạn và phạm vi của đề tài

- Nghiên cứu lý thuyết về cân bằng tải đối với Webserver

- Thực hiện bài Lab Cân bằng tải Webserver trên VMware

1.4 Nội dung thực hiện

- Tìm hiểu về kiến trúc web với khả năng mở rộng, khả năng có sẵn cao

- Tìm hiểu các kỹ thuật cân bằng tải web server

- Triển khai cài đặt hệ thống web server

- Cài đặt hệ thống cân bằng tải web server

Trang 8

1.5 Phương pháp tiếp cận

- Cách tiếp cận : Nghiên cứu kỹ thuật cân bằng tải trên nền tảng công nghệ khác nhau như Windows, Linux

- Sử dụng các phương pháp nghiên cứu:

o Phương pháp lý luận: Tham khảo tài liệu trên sách báo, trên mạng internet, đặc biệt là các diễn đàn công nghệ và dịch tài liệu tiếng Anh

o Phương pháp xử lý thông tin: Tiếp cận thông tin, phân loại thông tin

và phân tích thông tin, đồng thời sắp xếp các thông tin một cách logic

o Phương pháp thực nghiệm: Dựa vào lý thuyết để áp dụng vào triển khai xây dựng hệ thống và đánh giá kết quả thực nghiệm nhiều lần nhằm xây dựng hệ thống đáp ứng yêu cầu hiệu quả

o Phương pháp chuyên gia: Nhờ sự giúp đỡ của các thầy giáo có kiến thức chuyên môn về lĩnh vực để nhận xét, đánh giá, đóng góp ý kiến cho đề tài hoàn thiện hơn

Trang 9

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

2.1 Tổng quan về Cân bằng tải

2.1.1 Khái niệm

Ngày nay, khi nhu cầu truy cập internet bùng nổ thì các máy chủ cung cấp dịch vụ đang trở nên quá tải Việc lựa chọn một máy chủ đơn lẻ có cấu hình cực mạnh để đáp ứng nhu cầu này sẽ kéo theo chi phí đầu tư rất lớn Giải pháp hiệu quả được đưa ra là sử dụng một nhóm máy chủ cùng thực hiện một chức năng, dưới sự điều khiển của một công cụ phân phối tải - Giải pháp cân bằng tải

Cân bằng tải là một kỹ thuật để phân phối khối lượng công việc phải xử lý một cách đồng đều trên hai hoặc nhiều máy tính về các vấn đề liên kết mạng, CPU, ổ cứng để có thể sử dụng tài nguyên một cách tối ưu, giảm thiểu thời gian hoạt động, tránh tình trạng quá tải

Sử dụng nhiều dịch vụ với cân bằng tải thay vì một dịch vụ duy nhất có thể làm tăng độ tin cậy thông qua các máy dự phòng Trong đó, cân bằng tải mạng là một kỹ thuật nhằm mở rộng hiệu năng của các máy chủ ứng dụng, chẳng hạn như máy chủ Web, nhờ phân phối các yêu cầu của máy khách cho các máy chủ trong nhóm Khi đó, các máy chủ đều nhận gói IP đến nhưng gói chỉ được xử lý bởi một máy chủ nhất định Các máy chủ trong nhóm sẽ đồng thời đáp ứng các yêu cầu khác nhau của các máy trạm Với kỹ thuật cần bằng tải, quá trình xử lý và thời gian đáp ứng yêu cầu của máy trạm sẽ nhanh hơn nhiều

2.1.2 Chức năng của cân bằng tải

Cân bằng tải có một số chức năng cơ bản sau:

- Chặn lưu lượng mạng (chẳng hạn lưu lượng web) đến một trang web Bản thân thiết bị cân bằng tải có thể là một Proxy hay một Firewall tầng ứng dụng (Application Layer), nó sẽ là đối tượng đầu tiên nhận các yêu cầu trước khi chia tải,

do đó, chức năng này được coi như là thiết yếu của một cân bằng tải

Trang 10

- Tách các lưu lượng thành các yêu cầu riêng biệt và quyết định máy chủ nào nhận các yêu cầu đó Đây là chức năng chủ chốt của cân bằng tải Tùy vào thuật toán áp dụng mà sẽ có từng cách thức khác nhau để phân chia cụ thể cho mỗi máy chủ.

- Duy trì một cơ chế ở những máy chủ đang sẵn sàng Giữa cân bằng tải và máy chủ luôn phải có liên lạc với nhau (Keep Alive) để biết được máy chủ đó còn

2.1.3 Ưu điểm của cân bằng tải

Khả năng của cân bằng tải thể hiện ở các mặt sau:

- Tính linh hoạt (Flexibility)

- Tính sẵn sàng cao (High availability)

- Khả năng mở rộng (Scalability)

Những ưu điểm này sẽ được thể hiện cụ thể ở các phần dưới đây

2.2 Các khái niệm cơ bản về kiến trúc Webserver

Một website với khả năng mở rộng nghĩa là khi số lượng người dùng tăng lên nhanh chóng trong một khoảng thời gian nhất định, website vẫn đáp ứng được nhu cầu, hơn nũa website có khả năng dễ dàng nâng cấp lên để phù hợp với tình hình mới Tại thời điểm ban đầu, các website với khả năng mở rộng lớn thường được thiết kế để phục vụ hàng triệu yêu cầu mỗi ngày, sau đó nó được nâng cấp để phục

vụ thêm nếu như có yêu cầu Để phục vụ được hàng chục triệu lượt truy cập mỗi ngày, website cần phải đáp ứng được yêu cầu về khả năng mở rộng (Scalability), về tính linh hoạt (Flexibility), tính đáp ứng (Responsiveness), tính sẵn sàng cao (High

Trang 11

Availability), tránh được thời gian chết của hệ thống (downtime impact), khả năng bảo trì tốt và được xây dựng với giá thành tốt nhất Dưới đây là các khái niệm về kiến trúc web với khả năng mở rộng: [6]

2.2.1 Khả năng mở rộng (Scalability)

Cân bằng tải chịu trách nhiệm phân phối tải tới nhiều máy chủ trong một hệ thống (Server Farm theo mặt vật lý và được gọi là Server Cluser – các bó Server), với mục đích là nâng cao hiệu quả, tăng sức mạnh phục vụ với số lượng lớn các máy chủ Điều này mang lại lợi ích lớn về kinh tế, vì chỉ phải chi phí cho nhiều máy chủ nhỏ, thay vì đầu tư cho một máy chủ lớn, thiết bị chuyên dụng Ngoài ra, trong quá trình hoạt động, số các máy chủ có thể thay đổi, thêm/bớt, loại bỏ, thay thế một cách dễ dàng mà không ảnh hưởng đến hoạt động của hệ thống, giữ cho hệ thống luôn có tính sẵn sàng cao

2.2.2 Tính linh hoạt (Flexibility)

Hệ thống cho phép bổ sung và loại bỏ các máy chủ bất kỳ khi nào cần và hiệu quả ngay tức thì Thực tế, việc này không làm gián đoạn tới hoạt động của cả hệ thống, mà chỉ tại một điểm (node) trong hệ thống đó Điều này cho phép duy trì, sửa chữa bất kỳ máy chủ nào trong hệ thống (thậm chí trong giờ cao điểm) mà ít tác động hoặc không có tác động nào tới hệ thống Một cân bằng tải (Load Balancer) cũng có thể trực tiếp điều khiển lưu lượng mạng bằng cách sử dụng tập tin cookie, phân tích cú pháp URL, các thuật toán tĩnh/động để tìm ra cách phân tải tối ưu cho hệ thống [8]

2.2.3 Khả năng sẵn sàng cao (High Availability)

Hệ thống sẽ liên tục kiểm tra trạng thái của các máy chủ trong hệ thống và tự động “loại” bất kỳ máy chủ nào không “trả lời” trong một chu kỳ, cũng như tự động

bổ sung máy chủ đó ngay khi nó hoạt động trở lại Quá trình này là hoàn toàn tự động, thông qua cơ chế giao tiếp của cân bằng tải và các máy chủ, không cần có sự tham gia điều khiển trực tiếp của người quản trị Do dó, một hệ thống cân bằng tải

Trang 12

hướng đến tính dự phòng cho thiết bị chính trong trường hợp có thiết bị nào đó bị

“hỏng” [8]

2.2.4 Tính đáp ứng (Responsiveness)

Tính đáp ứng ở đây có thể hiểu là khả năng phục vụ người dùng của hệ thống làm sao để hệ thống có thể phục vụ người dùng tại mọi thời điểm và thời gian đáp ứng là bao lâu Hệ thống gửi response về càng nhanh thì tính đáp ứng của nó càng cao, ngược lại nếu thời gian trì hoãn (delay) càng lớn sẽ khiến người dùng thất vọng

và dẫn tới việc họ tin rằng trang web bị hỏng hay không hoạt động bình thường, điều này rất có hại vì nếu đã mất đi niềm tin nơi người dùng thì chắc rằng họ sẽ không quay trở lại trang web đó nữa Chẳng hạn như khi người dùng truy cập vào một trang web mà phải chờ đợi quá lâu cho việc load dữ liệu, thông tin thì thay vào

đó để không phải tốn mất nhiều thời gian họ sẽ tìm một công việc khác để làm đôi khi họ quên mất rằng mình đang truy cập vào một dịch vụ web và đóng luôn trình duyệt đó lại hoặc sẽ quay trở lại sau một khoảng thời gian khá lâu Điều này rất không tốt bởi trong hệ thống mà họ truy cập vẫn hoạt động và lưu giữ phiên session

mà không phục vụ cho bất cứ ai, đó chính là một sự lãng phí lớn Tính đáp ứng và tính thực hiện là độc lập với nhau, một hệ thống có hiệu năng tốt vẫn có thể có khả năng đáp ứng rất tồi tệ.[8]

2.2.5 Downtime impact

Đây là một vấn đề mà tất cả các hệ thống đều gặp phải, đó là thời gian mà hệ thống bị “chết”, khi mà số lượng các chức năng chính bị down, đây là vấn đề có tính tuần hoàn đối với các nhà phát triển hệ thống Một hệ thống tốt sẽ giúp người dùng truy cập nhanh làm họ cảm thấy hài lòng dẫn đến số lượng người dùng tăng lên và khi số lượng người dùng tăng lên hệ thống sẽ lại bị tắc nghẽn và nhà quản trị mạng sẽ phải đối phó với vấn đề đó, giải quyết nó nhằm tạo ra hệ thống hoạt động được tốt nhất Điều quan trọng là một hệ thống tốt cần phải kéo thời gian chu kì này lên, sao cho hệ thống hoạt động tốt nhất trong thời gian đủ dài trước khi cần phải nâng cấp, cũng như làm sao để xây dựng được hệ thống tốt nhất có khả năng mở

Trang 13

rộng lớn Cùng với các đòi hỏi này, hệ thống cũng cần phải có thể dễ dàng bảo trì và giá thành vừa phải, không quá cao Xây dựng một hệ thống web như vậy sẽ gặp rất nhiều vấn đề khó, những vấn đề quan trọng nhất trong việc thiết kế một website có khả năng mở rộng mà bất cứ nhà phát triển hệ thống web nào cũng phải giải quyết

đó là cân bằng tải cho application server, cân bằng tải cho database-server, tổ chức lưu trữ dữ liệu trên đĩa cứng và cân bằng tải cho cache [8]

2.3 Các vấn đề liên quan tới cân bằng tải

2.3.1 Cân bằng tải cho Application Server

Một trang web phục vụ hàng triệu lượt người truy cập mỗi ngày thì điều quan trọng đầu tiên là phải có một hệ thống server đủ mạnh, khi người dùng tăng lên theo thời gian, hệ thống máy chủ cũng phải được nâng cấp, mở rộng Có hai sự lựa chọn

là mở rộng theo chiều ngang (scaling out) và mở rộng theo chiều dọc (scaling up)

Mở rộng theo chiều dọc nghĩa là khi số lượng người dùng tăng lên, nhà phát triển sẽ nâng cấp server của mình bằng cách tăng cấu hình của máy server, hệ thống vẫn chỉ có một server với cấu hình ngày một mạnh hơn (tăng số lượng chip, tăng dung lượng Ram…) Sử dụng phương pháp này, người quản trị hệ thống sẽ không phải quan tâm đến vấn đề cân bằng tải cho cụm server, hệ thống hoạt động rất tốt khi số lượng người dùng vừa phải Tuy nhiên, phương pháp này cũng có một số vấn

đề hạn chế, đầu tiên là về giá thành, sử dụng một server sẽ tốn kém hơn rất nhiều so với nhiều servers, một ván đề nữa cũng rất quan trọng đó là vấn đề downtime impact, vì chỉ có một server nên nó sẽ trở thành SPOF (single point of failure), nếu như server này bị chết, thì ngay lập tức toàn bộ hệ thống sẽ ngừng hoạt động Phương pháp này còn dẫn đến giới hạn cho hệ thống, bởi đến một mức nào đó hệ thống tổng thể còn phụ thuộc vào nhiều yếu tố như bandwith hay khả năng vào ra của file trên đĩa cứng

Ví dụ sau đây sẽ cho thấy rõ điều đó, giả sử với một site video, băng thông để xem được một clip ở dạng chất lượng trung bình sẽ vào khoảng 512kb/s đến 0.5mb/s Vậy đường truyền 100MB sẽ cho phép tối đa 200 người dùng xem đồng

Trang 14

thời Điều gì sẽ xảy ra nếu muốn có hơn số người dùng đó? Người ta có thể tăng băng thông cho đường truyền lên 1gigabit nhưng sẽ rơi vào tình trạng của scale up

và gặp giới hạn Ngoài ra, tốc độ đọc đĩa cứng chỉ vào khoảng 400mb/s nên dù có tăng tốc độ đường truyền lên thì server vẫn không thể đáp ứng và phục vụ được nhiều hơn nữa Như vậy sử dụng scale up không thể giải quyết vấn đề này

Giải pháp thứ hai là lắp nhiều server song song và chúng hoạt động thành một cụm cluster Theo như ví dụ ở trên, cứ lắp thêm một server lại có khả năng đáp ứng cho 200 người dùng nữa và càng nhiều server thì khả năng mở rộng lại càng lớn Thêm nữa chi phí được giảm thiểu khi sử dụng phương pháp này Vậy thì điểm yếu của giải pháp này là gì? Đó chính là vấn đề cân bằng tải, để cứ mỗi server sẽ thêm được 200 người dùng, hệ thống phải được cân bằng tải một cách tốt nhất sao cho tải được phân phối đều đặn vào trong các máy server Các server phải được nối với nhau như thế nào đều là những bài toán khó Dưới đây là ưu điểm và nhược điểm của từng phương pháp:

Hình 1-1: So sánh giữa Scale out và Scale up

So sánh giá thành khi sử dụng hai phương pháp này:

Trang 15

Hình 1-2: Biểu đồ so sánh giá thành phương pháp scale down và scale up

Như vậy, sự lựa chọn một server chỉ phù hợp cho các hệ thống đòi hỏi sự ổn định cao, với số lượng người dùng tăng lên không quá nhanh và có tiềm lực mạnh

về kinh tế như các hệ thống chứng khoán, ngân hàng …, còn đối với các mạng xã hội khác hay các trang chia sẻ video trực tuyến thì sự lựa chọn nhiều server hoạt động song song là hiệu quả nhất Khi sử dụng phương pháp scale out, yêu cầu từ phía người dùng sẽ được chuyển vào một trong các server này xử lý, từ đó xuất hiện bài toán cân bằng tải (Load Balancing-LB) cho cluster này Nhà phát triển hệ thống làm sao để các server hoạt động cân bằng, nghĩa là các server được phục vụ một lượng yêu cầu phù hợp, tránh không để bất cứ server nào bị quá tải (overload), đồng thời tận dụng được hết tài nguyên hệ thống để phục vụ được lượng truy cấp lớn nhất.[6]

Để cân bằng tải cho hệ thống Web Server cần phải xây dựng một bộ cân bằng tải (Load Balancer) Bộ cân bằng tải này được đặt trước cluster, nhận request từ phía người dùng, xử lý các yêu cầu và chuyển hướng chúng đến server phù hợp

Mô hình tổng quát được miêu tả dưới đây:

Trang 16

Hình 1-3: Mô hình cân bằng tải Web Server cơ bản

Chi tiết về nguyên lý, kỹ thuật và các phương pháp cân bằng tải server cũng như thiết kế bộ cân bằng tải sẽ được làm rõ trong các nội dung về sau

2.3.2 Mở rộng Database Server

Bên cạnh các Web Server, các database server cũng đóng vai trò vô cùng quan trọng trong hệ thống web Sự phát triển của website sẽ dẫn đến yêu cầu phải mở rộng database server, chẳng hạn như lắp thêm server để phục vụ nhu cầu tại một địa điểm đã có server từ trước hoặc lắp mới server ở các vùng khác nhau trên thế giới Cũng như cân bằng tải ở Application Server, mở rộng Database Server cũng có hai phương pháp: mở rộng theo chiều ngang và mở rộng theo chiều dọc

Mở rộng theo chiều dọc: hiện nay các nhà phát triển hệ thống sử dụng kiến trúc SAN (Storage Area Network), DB sẽ được phân chia (partitioning out) theo kiến trúc này SAN là một kiểu kiến trúc kết nối những thiết bị lưu trữ máy tính từ

xa (như disk arrays, tape libraries and optical jukeboxes) để phục vụ theo cách mà những thiết bị ấy được xem như là cục bộ (local) đối với hệ điều hành Như vậy, hệ thống lưu trữ chỉ được xem như một Database Server duy nhất, vì vậy mà nó hoạt động rất hiệu quả

Trang 17

Kiến trúc này sẽ tăng đáng kể khả năng của Database Server, tuy vậy vì giá thành của nó rất đắt nên nó không được sử dụng rộng rãi mà chỉ được dùng trong các hệ thống lớn và quan trọng.

Hình 1.4: Mở rộng database server sử dụng kiến trúc SAN

Mở rộng DB theo chiều ngang (scaling out), nghĩa là tăng số lượng các node Database Server, như minh họa sau đây:

Trang 18

Hình 1.5: Mở rộng database theo chiều ngang

Có 2 lựa chọn để cài đặt theo phương pháp này:

• Shared Nothing Cluster

• Real Application Cluster (Shared storage cluster)

a) Shared Nothing Cluster

Trong phương pháp Shared nothing cluster, mỗi database server sẽ chứa một bản coppy hoàn toàn của database, tức là tất cả các DBServer sẽ giống nhau Không

có dữ liệu được chia sẻ giữa các DB Server Nodes, các file DB thực sự sẽ dược chứa trong SAN Kiến trúc này được hỗ trợ một cách tự nhiên bởi hầu hết các RDBMs hoặc các phần mềm 3rd party

Một vấn đề nữa là phải chọn cơ chế sao bản (replication) phù hợp, vì các DB

sẽ chứa cùng một bản sao hoàn chỉnh của cơ sở dữ liệu Có rất nhiều lựa chọn để tạo sao bản đó là lựa chọn giữa phương pháp Master – Slave và Multi – Master, đồng bộ hay không đồng bộ và tạo sao bản ở mức nào của dữ liệu

Trong phương pháp master – slave, các yêu cầu đọc sẽ được gửi tới một master, và sau đó sẽ được sao ra ở các slave DB, thêm nữa việc tạo sao bản có thể

sẽ bị lặp (cascaded) Tuy vậy phương pháp này dễ cài đặt và không đòi hỏi phải quản lý xung đột Với trường hợp Multi-Master, các lệnh đọc sẽ được gửi đến cho nhiều master, sau đó sẽ được sao ra ở các master khác cũng như các slave Phương pháp này sẽ đòi hỏi nhà quản trị phải quản lý xung đột và rất dễ xảy ra hiện tượng deadlock (khi mà dữ liệu được sửa ở nhiều nơi cùng một lúc)

Giữa phương pháp đồng bộ và không đồng bộ, phương pháp đồng bộ được đảm bảo nhưng bản sao không được đồng nhất (out-of-band replication) từ Master đến Slave Master cập nhật DB riêng của nó và hồi đáp trở lại client Việc sao lưu từ Master đến slave xảy ra không đồng bộ, tuy vậy ưu điểm của phương pháp này là khả năng trả về client nhanh Nhưng nhược điểm của nó là dữ liệu slave bị giới hạn sau Master, nó cũng yêu cầu App phải thay đổi để các critical reads được gửi đến master

Trang 20

b) Real Application Cluster

Lựa chọn thứ hai để cài đặt DB Server theo chiều ngang là Real Application Cluster

Hình 1-6: Real Application Cluster

Trong phương pháp này, các nodes ở DB cùng chia sẻ một phần chung ở SAN, ràng buộc của phương pháp này là file system phải được định dạng là clustered file system (GFS/OFS) Phương pháp này chỉ được cung cấp bởi công ty Oracle do giá thành của nó rất cao Hiện nay chỉ có các doanh nghiệp lớn hoặc các tập đoàn mới triển khai được phương pháp này.[4]

2.3.3 Mô hình khuyên dùng

Tổng hợp lại, dựa theo ưu nhược điểm và kinh nghiệm của các nhà phát triển,

mô hình Database mở rộng nên dùng là:

• Master – Slave replication

• Sao chép không đồng bộ

• Ghi dữ liệu tại DAO layer

Trang 21

Hình 1-7: Mô hình mở rộng database khuyên dùng

2.4 Cơ sở xây dựng bộ cân bằng tải cho Web-Server

Một bộ cân bằng tải cần phải thực hiện được 4 chức năng chính sau đây:

• Cân bằng tải cho server (server load balancing): có nhiệm vụ phân phối tải giữa các server, tăng khả năng mở rộng của hệ thống, giúp cho hệ thống vẫn hoạt động khi có server xảy ra sự cố hay bị “chết” –không hoạt động

• Cân bằng tải cho Global server (global server load balancing): có nhiệm vụ chuyển hướng yêu cầu của người dùng đến các data center khác nhau trong trường hợp website có nhiều trung tâm dữ liệu trên thế giới Góp phần tăng tốc độ phản hồi cho người dùng và giúp cho hệ thống vẫn có khả năng hoạt động khi có trung tâm dữ liệu xảy ra sự cố

Trang 22

• Cân bằng tải cho firewall (firewall balancing): có nhiệm vụ phân phối tải giữa các firewall, giúp cho hệ thống vẫn hoạt động được khi có firewall bị lỗi.

• Chuyển mạch cache trong suốt (transparent cache switching): giúp chuyển hướng lưu lượng một cách “trong suốt” đến các caches, góp phần tăng thời gian đáp ứng và hiệu năng của hệ thống

2.4.1 Kỹ thuật cân bằng tải server (Server Load Balancing – SLB)

Bộ cân bằng tải có nhiệm vụ kết nối giữa người dùng và server, do đó nó có thể hoạt động như một proxy hoặc gateway Một proxy có nhiệm vụ luân chuyển yêu cầu và dữ liệu đáp trả giữa người dùng và server, trong khi đó một gateway chỉ

có nhiệm vụ tạo ra một kết nối hai đối tượng này và không làm gì thêm Có thể sử dụng phần cứng hoặc phần mềm được cài đặt thêm một front server hoặc trên chính web server Thêm nữa, khi số lượng người dùng tăng lên, để tránh SPOF cần thiết phải cài đặt 2 bộ cân bằng tải song song, hoạt động theo cơ chế active-active hoặc active-backup

Các phần mềm cân bằng tải thường được cài đặt như một proxy Để xây dựng một bộ cân bằng tải phần mềm, các kỹ thuật cần phải chú trọng đó là kiểm tra trạng thái server, lựa chọn server tốt nhất để gửi yêu cầu và kỹ thuật duy trì kết nối của người dùng

a) Kiểm tra trạng thái server

Để chọn được server phù hợp để gửi request, bộ cân bằng tải cần phải biết được server nào đang có sẵn Vì vậy, nó cần phải dùng biện pháp nào đó để kiểm tra trạng thái của server, chẳng hạn như gửi lệnh ping, các yêu cầu, thử kết nối hay bất

cứ phương pháp nào mà người quản trị dùng Kỹ thuật kiểm tra này thường được gọi là “health checks”

Một server bị down có thể trả lời lệnh ping nhưng không thể trả lời các kết nối TCP, một server bị treo có khả năng trả lời kết nối TCP nhưng không thể trả lời các

Trang 23

yêu cầu HTTP Khi một ứng dụng web nhiều lớp được kích hoạt, một số yêu cầu HTTP có thể trả lời ngay lập tức trong khi số khác sẽ thất bại.

Chính vì thế, việc lựa chọn một phương pháp test phù hợp được chấp nhận bởi ứng dụng web và bộ cân bằng tải là một công việc rất khó khăn Một số test đôi khi cần phải truy xuất dữ liệu database nhằm ddaammr bảo rằng toàn bộ quá trình của

nó là đúng Hạn chế lớn nhất là những phương pháp kiểm tra này sẽ chiếm tài nguyên của hệ thống như là CPU, threads, …

Do đó, cân bằng thời gian kiểm tra chính là vấn đề khó nhất trong kỹ thuật lựa chọn server.Khoảng thời gian kiểm tra giữa 2 lần test liên tiếp phải đủ dài để không tốn quá nhiều tài nguyên của hệ thống và cũng cần đủ ngắn để nhanh chóng phát hiện ra những server “chết” Vì “health checks” là một trong những khía cạnh phức tạp nhất của kỹ thuật cân bằng tải, nên thông thường sau một vài kiểm tra các nhà phát triển ứng dụng sẽ thực thi một yêu cầu đặc biệt dành riêng cho bộ cân bằng tải, giúp cho nó thực hiện một số kiểm tra nội bộ

Phần mềm cân bằng tải có khả năng cung cấp scripting, do đó nó đạt được độ linh hoạt rất cao Hơn nữa, nếu như một lần kiểm tra nào đó đòi hỏi phải chỉnh sửa code, nó có thể thực hiện trong một khoảng thời gian ngắn

b) Lựa chọn server tốt nhất

Việc lựa chọn server tốt nhất chính là phần chính của thuật toán cân bằng tải được đề cập trong phần 2 Phương pháp dễ nhất và thường được sử dụng nhất trong các hệ thống nhỏ là Round Robin, các server được lựa chọn quay vòng, tuy nhiên phương pháp này có nhược điểm là 2 requests liên tục từ một người dùng sẽ vào 2 server khác nhau, thông tin giữa hai yêu cầu liên tiếp sẽ bị mất, như vậy sẽ không thể tối ưu hóa được sử dụng tài nguyên Đặc biệt là khi cần phải cài đặt kết nối cho các phiên chạy, ví dụ như SSL key negociation- sẽ tốn rất nhiều thời gian

Một cách khắc phục nhược điểm này là sử dụng một hàm băm theo địa chỉ IP, như vậy requests từ cùng một địa chỉ IP sẽ chỉ vào một server duy nhất Tuy vậy phương pháp này đòi hỏi người dùng phải có IP tĩnh

Trang 24

c) Kỹ thuật Sesion Persistence

Vấn đề cần giải quyết chính là làm sao để giữ cho các yêu cầu của một người dùng được gửi vào một máy duy nhất trong suốt phiên làm việc của người đó Tất

cả các yêu cầu của người dùng này cần phải được chuyển vào cùng một server Nếu server bị chết hoặc ngừng để bảo trì, cần phải có cơ chế để chuyển session của người dùng này sang máy server khác Đó chính là kỹ thuật Session Persistence

Có một số giải pháp được đưa ra để tiếp cận kỹ thuật này, chẳng hạn như sử dụng một respone HTTP 302 hay tạo ra liên kết giữa người dùng – server Tuy vậy

2 phương pháp này đều có những hạn chế, sử dụng HTTP 302 sẽ khiến người dùng luôn luôn tìm cách kết nối với một server duy nhất, kể cả khi server này đã “chết” Dùng cách tạo liên kết đòi hỏi user phải có IP tĩnh trong suốt phiên làm việc

Như vậy, sử dụng Cookie - là một đối tượng được điều khiển bởi Web Server Trong kết quả trả về cho người dùng web server sẽ chèn thêm một số thông tin Những yêu cầu tiếp theo của người dùng gửi đến server sẽ chứa thêm thông tin của cookie này, server sẽ đọc các cookie và biết phải làm gì với các yêu cầu này

d) Cookie

Một cookie được định nghĩa bằng cặp tên = giá trị (name=value) Hình dưới đây miêu tả hoạt động của cookie với cặp user =1, cho biết tên cookie là user và giá trị của nó là 1 Bên phía người dùng, cookie được điều khiển bởi trình duyệt và

“trong suốt” đối với người dùng

Hình 2-1: Cách làm việc của cookie user =1

Trang 25

Trong thiết kế của bộ cân bằng tải, có 3 cách để sử dụng cookie: cookie chỉ đọc (cookie-read), bộ cân bằng tải chèn cookie nhằm chứng thực server (cookie-insert) và ghi đè cookie (cookie-rewrite).

• Cookie-Read

Cách thức hoạt động của cookie-read được mô tả trong hình dưới đây, khi người dùng lần đầu tiên gửi yêu cầu đến server, do không có cookie trong yêu cầu nên nó sẽ được phân tải đến server RS1 (1) Server RS1 sẽ tạo và đặt cookie server=1 vào trong dữ liệu trả về cho người dùng (2) Trình duyệt của người dùng sẽ nhận trả về, đọc thấy cookies và lưu trữ nó vào trong đĩa cứng (3) Sau đó người dùng có thể đóng trình duyệt hoặc ngắt kết nối (giả sử rằng trình duyệt của người dùng không tự động xóa cookie sau khi đóng) Một thời gian sau người dùng kết nối lại và gửi yêu cầu đến bộ cân bằng tải Sau khi kết nối được thiết lập, trình duyệt người dùng sẽ gửi cookie server=1 như là một phần yêu cầu HTTP (4) Bộ cân bằng tải sẽ đọc được cookie này và sẽ chuyển yêu cầu của người dùng vào server RS1 Như vậy, người dùng sẽ luôn được kết nối vào server 1 cho đến khi nào cookie còn tồn tại, cho dù người dùng có thể vào website từ các địa chỉ IP khác nhau

Hình 2-2: Cookie Read

Trang 26

Ưu điểm của phương pháp cookie-read là nó không đòi hỏi bộ cân bằng tải phải làm việc nhiều, chỉ cần đọc cookie được tạo ra từ phía web server và từ yêu cầu của người dùng Nhược điểm của phương pháp này là ứng dụng ở server phải tạo ra một cookie, điều này không khó khăn lắm nhưng nó sẽ khiến nhà phát triển ứng dụng phải thay đổi mã nguồn chương trình Khi một server mới được lắp đặt, người quản trị hệ thống phải sửa đổi hoặc đặt thêm thông số server vào file cấu hình của bộ cân bằng tải.

• Cookie – Insert

Phương pháp này được mô tả trong hình dưới đây, trong phương pháp này ứng dụng ở server sẽ không làm nhiệm vụ gì Kịch bản diễn ra tương tự như cookie-read, nhưng ở đây khi server trả về dữ liệu cho người dùng (2), bộ cân bằng tải sẽ xem là server nào trả về dữ liệu và chèn vào đó một cookie chứa thông tin về server này, chẳng hạn như cookie server=1 trong hình vẽ khi người dùng kết nối lần tiếp theo, bộ cân bawngd tải sẽ đọc thông tin về cookie này và chuyển hướng yêu cầu của người dùng vào đúng server RS1

Trang 27

Hình 2-3: Cookie- Insert

Ưu điểm của phương pháp này là nó “trong suốt” đối với ứng dụng được cài đặt trên server, hay nói cách khác ứng dụng server sẽ không cần phải tạo ra một cookie hay không cần quan tâm xem cookie là gì Khi một server được thêm mới hoặc xóa bỏ hoặc khi file cấu hình của bộ cân bằng tải bị thay đổi, người quản trị hệ thống sẽ không cần phải lo lắng về việc nhập file cấu hình cho server Nhược điểm của phương pháp này là có thể gây ra quá tải ở bộ cân bằng tải Chúng ta có thể thấy

rõ số lượng công việc mà bộ cân bằng tải phải làm khi chèn một cookie Vì vậy phải chèn dữ liệu nên gói dữ liệu trả về phải được sao lại một phần, tăng dung lượng bộ nhớ cần thiết ở phía bộ cân bằng tải, thêm vào đó còn tăng dung lượng gói tin trả về cho người dùng có thể khiến gói tin bị chia đôi, dẫn đến mất dữ liệu

Trang 28

Hình 2-4: Bộ cân bằng tải chèn một cookie

• Cookie-Rewrite

Phương pháp cookie-read không đòi hỏi bộ cân bằng tải phải làm quá nhiều việc như cookie-insert, trong khi đó cookie-insert lại không yêu cầu ứng dụng phía server phải tạo cookie còn cookie-read lại cần phải có Cần phải có một phương pháp dung hòa ưu và nhược điểm của 2 phương pháp trên, đó chính là phương pháp ghi đè cookie

Nhược điểm lớn nhất trong cookie-insert là cần phải có một bộ nhớ phức tạp

và thêm nữa là có thể khiến gói tin bị chia thành 2 (do dung lượng vượt quá giá trị lớn nhất của gói tin được chấp nhận ở ethernet) và dẫn đến mất dữ liệu Nếu như chúng ta tạo ra một chỗ trống ở gói tin để lưu giá trị cookie và bộ cân bằng tải chỉ cần đặt vào đó giá trị cần thiết thì điều gì sẽ xảy ra Trong phương pháp ghi đè cookie được mô tả như hình dưới đây, ứng dụng sẽ chèn vào gói tin trả về một cookie server=xxx Tất cả những gì bộ cân bằng tải phải làm là tìm kiếm đoạn server=xxx này và thay “xxx” bằng giá trị ID của server, chẳng hạn như server=001

Trang 29

Hình 2-5: Bộ cân bằng tải ghi đè một cookie.

Ưu điểm của phương pháp này là tránh cho bộ cân bằng tải làm việc quá mức và tránh cho gói tin bị chia nhỏ Bên cạnh đó nó khắc phục được nhược điểm của phương pháp cookie-read Nó là phương pháp tốt nhất trong ba phương phương pháp trên và thường được chọn để dùng trong các bộ cân bằng tải

2.4.2 Cân bằng tải cho Global Server (GSLB)

Có 2 nhân tố chính thể hiện sự cần thiết của GSLB, đó là khả năng có sẵn cao

và thời gian đáp ứng

Để dảm bảo tính có sẵn của cụm server, chúng ta sử dụng một bộ cân bằng tải

để thực hiện kiểm tra “health checks” đối với các server Để đảm bảo bộ cân bằng tải không bị quá tải, chúng ta có thể cài đặt nhiều bộ cân bằng tải hoạt động theo chế độ active-active hoặc active-backup Nhưng chuyện gì sẽ xảy ra nếu như toàn

bộ trung tâm dữ liệu chứa các server và các bộ cân bằng tải không thể hoạt động vì một vài sự cố xảy ra? Tất nhiên người dùng sẽ không thể truy cập vào website Để

Trang 30

tránh trường hợp này xảy ra, có thể cài đặt website ở nhiều trung tâm dữ liệu khác nhau và sử dụng GSLB để đồng bộ giữa các trung tâm này.

Phương pháp này đảm bảo rằng nếu như có một trung tâm nào đó bị hỏng thì vẫn còn các trung tâm khác hoạt động

Trong mạng Internet, có những yếu tố bất lợi mà chúng ta không thể giải quyết một cách triệt để, một trong những yếu tố đó là “thời gian trễ của đường truyền internet” (internet delay), đây cũng chính là yếu tố quyết định đến thời gian đáp ứng của website đối với người dùng Thời gian đáp ứng người dùng phụ thuộc vào thời gian trễ của người dùng (client-side delay), thời gian trễ của server (server-side delay) và thời gian trễ của đường truyền internet Do không thể kiểm soát được thời gian trễ của người dùng nên sử dụng phương pháp cài đặt hệ thống server để hạn chế được thời gian trễ của đường truyền qua mạng

2.4.3 Chuyển mạch cache trong suốt

a) Các phương pháp cài đặt cache

Như đã trình bày trong chương 1, có 4 phương án khai triển cache, đó là cài dặt cache như một forward proxy, transparent proxy, reverse proxy hoặc transparent-reverse proxy Forward proxy và transparent proxy được dùng để tăng tốc bên phía người dùng (thường được cài bên phía trình duyệt người dùng), trong khi đó reverse proxy và transparent-reverse proxy được dùng để tăng tốc server và được cài đặt tích hợp trong bộ cân bằng tải

• Forward Proxy:

Trong phương pháp này, cache server được cài đặt giống như một proxy server cho một nhóm người dùng đầu cuối trình duyệt của mỗi người dùng phải được cấu hình để chỉ đến proxy server này, nó dùng đến proxy cache này-nơi mà các ngữ cảnh được trả về cho người dùng Rất nhiều doanh nghiệp sử dụng phương pháp này nhằm tăng tốc độ sử dụng hệ thống cho khách hàng Một vấn đề nảy sinh trong khi triển khai phương pháp này là mỗi trình duyệt đều phải được cấu hình để chỉ

Trang 31

đến proxy server, tuy nhiên nó có thể cài đặt tự động bằng cách chạy một script khi người dùng đăng nhập vào mạng của doanh nghiệp.

Phương pháp cài đặt cũng làm tăng khả năng bảo mật của hệ thống do người quản trị chỉ cho phép duy nhất proxy cache server truy cập vào internet và khóa tất

cả các truy cập khác Như vậy, tất cả người dùng sẽ phải thông qua proxy cache server nào đó và do đó IP thực sự của người dùng sẽ được che giấu vì server gốc chỉ nhìn thấy proxy server giống như một người dùng cuối

Một vấn đề khác khi cài đặt forward proxy là cần phải đảm bảo khả năng mở rộng của cache server Giả sử có một cache server có khả năng phục vụ 500 người dùng, nhưng hệ thống cần đáp ứng cho 400 người dùng một cách ổn định, khi đó cần phải cài đặt 8 bộ cache như vậy và cần phải phân vùng tải giữa chúng Hơn nữa,

vì yêu cầu của người dùng được forward đến proxy cache server nên khi cache server bị down, người dùng này sẽ bị mất kết nối đến internet và như vậy xuất hiện hiện tượng nghẽn cổ chai (bottleneck)

Bằng cách cài đặt một bộ cân bằng tải, ta có thể giải quyết được vấn đề mở rộng cũng như tính có sẵn của phương pháp cài đặt forward-proxy cache Như mô

tả dưới hình, một bộ cân bằng tải được đặt ở phía trước forward-proxy caches Chúng ta định nghĩa một địa chỉ IP ảo (VIP) trên bộ cân bằng tải và hướng VIP tới địa chỉ IP của từng cache server trên cổng 8080 (cổng 8080 thường được dùng cho kết nối proxy) Điều này nghĩa là lúc này trình duyệt sẽ được cấu hình để chỉ đến cổng này và nó sẽ gửi toàn bộ yêu cầu của người dùng đến cổng 8080 này Với việc

sử dụng bộ cân bằng tải này, có thể giải quyết được vấn đề vầ khả năng mở rộng cũng như tính đáp ứng của caches Có thể đưa thêm caches vào khi cần thiết và chỉ cần kết nối nó với bộ cân bằng tải Hơn nữa, khi một cache không hoạt động, requests sẽ được gửi đến cache khác ngay lập tức Một thuận lợi nữa đó là khi người quản trị cần bảo trì một cache nào đó hoặc ví dụ như khi update phần mềm cho nó thì có thể thực hiện được mà không làm gián đoạn hoạt động của hệ thống

Trang 32

Hình 2-6: Cài đặt cache ở trình duyệt người dùng

Cân bằng tải cho caches ở đây cũng tương tự như cân bằng tải cho cụm server ứng dụng Vấn đề lớn nhất khi sử dụng phương pháp này là phải cấu hhhh cho trình duyệt của người dùng chỉ đến cache Nếu như phải sử dụng một script tự động để làm việc này khi người dùng đăng nhập vào hệ thống thì sử dụng transparent proxy

sẽ laoij bỏ hoàn toàn được quá trình cấu hình này

• Transparent Proxy

Trang 33

Phương pháp này sẽ giúp ta tránh phải cấu hình trình duyệt người dùng, cache được cài đặt như một transparent proxy bằng cách đặt nó trên đường kết nối internet.

Hình 2-7: Cài đặt cache như một transparent proxy

Ta thấy rằng, cache được cài đặt ở giữa đường truyền internet, do đó nó có khả năng ngắt kết nối tới server và phục vụ người dùng bằng dữ liệu mà nó có, trong trường hợp dữ liệu người dùng truy xuất không có trong cache, nó sẽ chuyển đến origin server để tìm và trả về cho người dùng Người dùng sẽ không biết rằng có một bộ nhớ cache được cài đặt giữa họ với server, tuy nhiên phương pháp này sẽ gặp phải vấn đề về khả năng mở rộng và khả năng có sẵn Với cách cài đặt như vậy, không thể lắp quá một bộ nhớ cache trên một đường truyền internet và cache này trở thành SPOF, nếu nó bị dơn, kết nối sẽ bị down hoàn toàn, hơn nữa cách cài đặt này sẽ khinn cho người quản trị không thể bảo trì và nâng cấp cache mà không ngừng hay gián đoạn hoạt động của hệ thống

Bằng cách sử dụng một bộ cân bằng tải để thực thi chuyển hướng transparent cache (transparent-cache switching), ta có thể đơn giản hóa cách cài đặt transparent-proxy cache, bộ cân bằng tải phải được cấu hình bằng các biện pháp đổi hướng luồng dữ liệu (traffic-redirection policy) nhằm đổi hướng tất cả các luồng dữ liệu TCP với cổng đích là 80 đến cache Các biện pháp này chỉ được dùng cho các luồng

dữ liệu đến trên các cổng vật lý (physical port) mà được kết nối với mạng nội bộ

Trang 34

Điều này rất quan trọng vì nếu như một cache không có đối tượng nó sẽ tiếp thục gửi request đến server gốc và lệnh này sẽ lại chạy lại chạy qua bộ cân bằng tải một lần nữa lúc này, bộ cân bằng tải không được chuyển hướng request này ngược lại cache mà phải forward đến server gốc.

Hình 2-8: Cân bằng tải cho transparent-proxy cache

Với việc sử dụng transparent cahe switching, bộ cân bằng tải có thể dễ dàng thực hiện “health check” nhằm kiểm tra ngay lập tức bất cứ hỏng hóc nào Nếu như cache bị hỏng, bộ cân bằng tải chỉ cần hoạt động đơn giản như một switch, chuyển hướng luồng dữ liệu theo đường đi của nó, người dùng sẽ vẫn kết nối internet bình thường, tuy nhiên tốc độ sẽ bị giảm dần vì không có cache Nhưng điều quan trọng

là người dùng sẽ không bị ngắt kết nối internet nữa vì cache không còn nằm trên đường truyền, kết nối sẽ chỉ bị ngắt khi bộ cân bằng tải bị hỏng Nhưng do bộ cân bằng tải hoạt động như một switch nên khả năng hỏng của nó là thấp hơn cache rất nhiều

• Reverse Proxy:

Trang 35

Khác với forward proxy hoạt động như một proxy cho người dùng gửi yêu cầu đến server, Reverse Proxy hoạt động như một proxy cho server, như thể hiện trong hình dưới đây Cài đặt server proxy ở phía trước của Web Server và phải cấu hình DNS để tên của website chỉ vào IP của proxy cache chứ không phải của Web Server, như vậy khi kết nối, nếu đối tượng có trong cache, nó sẽ trả về cho người dùng, ngược lại nó sẽ yêu cầu vào trang web server và trả kết quả về sau đó Lúc này reverse-proxy cache đứng ở vị trí giống như một bộ cân bằng tải dùng để tăng tốc độ phía server hay giảm thời gian đáp ứng của server đến với người dùng.

Hình 2-9: Cài đặt cache như một reverse-proxy

Một phương pháp khác để cân bằng tải Web Server là phương pháp cài đặt bộ cân bằng tải kết hợp với nhiều reverse-proxy cache Một bộ cân bằng được đặt trước caches và định nhĩa một địa chỉ IP ảo VIP cho bộ cân bằng tải Sau đó hướng

Trang 36

nó đến từng reverse-proxy cache trên những cổng ứng dụng riêng biệt đang được cache, chẳng hạn như HTTP, FTP Bộ cân bằng tải lúc này sẽ cân bằng tải cho các Web Server và phân bố yêu cầu từ phía người dùng đến các cache này theo một thuật toán phân tải nào đó, ví dụ như round-robin hoặc băm theo một số giá trị

Hình 2-10: Bộ cân bằng tải cho reverse proxy caches

Với các website toàn cầu, máy server được đặt ở khắp nơi trên thế giới, các bộ cache cũng như vậy, chúng không nhất thiết phải được cài đặt ngay trước web server mà có thể được cài đặt bất cứ mọi nơi trên thế giới chẳng hạn như Web Server có thể đặt ở NewYork, nhưng cache lại được đặt ở Singapore, London

• Transparent Reverse Proxy:

Trong trường hợp sử dụng forward proxy thì cần phải cấu hình trình duyệt của người dùng để chỉ đến forward proxy cache Cũng giống như vậy trong trường hợp của reverse proxy, ta phải cấu hình cho DNS chỉ đến reverse proxy Nếu như không muốn thay đổi DNS entry và sau reverse proxy là rất nhiều wer server, cache sẽ phải phân phối yêu cầu vào trong các server này và sẽ gặp phải trường hợp cân bằng tải Hơn nữa, nếu một công ty cung cấp hosting chỉ muốn cung cấp tính năng tăng

Trang 37

tốc server như một tính năng cao cấp dành riêng cho những khách hàng đặc biệt của

họ thì việc sử dụng transparent reverse proxy chính là giải pháp cuối cùng

Transparent reverse proxy được mô tả trong hình dưới đây, một bộ cân bằng tải được đặt ở phía trước các web server, một tập các cache được cài đặt theo reverse-proxy cache Nhiệm vụ cân bằng tải được đẩy cho bộ cân bằng tải và như vậy cache sẽ không phải chịu trách nhiệm phân phối request nữa Khi khách hàng đặc biệt kết nối và sử dụng dịch vụ đặc biệt, nhà cung cấp dịch vụ có thể cấu hình riêng cho địa chỉ IP ảo của khách hàng này trên bộ cân bằng tải sao cho tất cả các luồng dữ liệu được gửi đến trên cổng 80 sẽ được chuyển tiếp đến cache Nếu cache hỏng, bộ cân bằng tải chỉ việc chuyển thẳng yêu cầu vào các web server Luồng dữ liệu được mô tả như sau:

[1] Nếu bộ cân bằng tải nhận ra đây là địa chỉ IP của khách hàng đặc biệt, nó

sẽ chuyển yêu cầu vào cache

[2] Nếu cache miss hoặc yêu cầu cho các ngữ cảnh động, cache sẽ gửi yêu cầu ngược lại cho bộ cân bẳng tải Bộ cân bằng tải sẽ gửi yêu cầu đến server

[3] Server gửi dữ liệu trả về cho cache

[4] Cache trả lại dữ liệu cho người dùng

Trang 38

Hình 2-11: Transparent-revserse proxy caches

b) Các phương pháp cân bằng tải cho caches

Cân bằng tải cho cache và cân bằng tải cho server là rất khác nhau Đối với cân bằng tải cho server, bộ cân bằng tải tìm cách để tìm ra server đang có tải nhẹ nhất và đẩy request về server đó Trong cân bằng tải cache, điều này phụ thuộc vào content đang có trong cache nhằm đạt được tỉ lệ cache-hit cao nhất Khi yêu cầu đầu tiên được gửi đến chưa có trong cache 1, nếu như cùng một yêu cầu nào đó từ phía người dùng đến lần thứ 2 sẽ là không cần thiết nếu như dữ liệu server lại được đẩy xuống cache 2 vì dữ liệu đã có sẵn ở cache 1 Do đó, cần phải có cơ chế để nhận biết rằng dữ liệu đã tồn tại tròn cache nào đó, chỉ cần lấy ở đó và trả về cho người dùng Như vậy sẽ tăng tỉ lệ cache-hit và tốc độ trả về cho người dùng

Tuy khác nhau về nguyên lý nhưng cũng có nhiều phương pháp để cân bằng tải cho cache khá giống với cân bằng tải cho server Sau đây là một số phương pháp cân bằng tải cache thường được dùng:

Trang 39

• Sử dụng hàm băm đơn giản (Simple Hashing):

Bộ cân bằng tải sẽ tính toán một giá trị bằng cách sử dụng một hàm băm dựa trên một tập các nhân tố như giá trị địa chỉ IP nguồn, giá trị địa chỉ IP đích, giá trị cổng TCP/UDP nguồn và giá trị cổng TCP/UDP đích Sau đó sử dụng giá trị này để tính toán xem cache nào là cache sẽ nhận được yêu cầu

Một phương pháp để thực hiện việc này đó là sử dụng hàm băm đơn giản Một phép toán số học giống như phép cộng bytes trên các nhân tố được chọn sẽ cho ra kết quả là giá trị 1 byte X nằm trong khoảng (0-255) Lấy X chia cho N (với N là số cache hiện có) sẽ được số dư nằm trong khoảng (0->N-1) và số dư này sẽ chỉ định

là cache nào sẽ được chọn để gửi yêu cầu Một số điểm cần lưu ý trong phương pháp này là:

+ Nếu như sử dụng địa chỉ IP đích làm giá trị băm, tất cả các yêu cầu tới cùng một web server sẽ được cho vào một cache duy nhất vì địa chỉ đích không thay đổi nên giá trị băm luôn không đổi

+ Cần phải cân bằng trong việc chọn nhân tố cho hàm băm, nếu như chỉ chọn địa chỉ IP đích làm giá trị băm sẽ dẫn đến mất cân bằng Thực vậy, giả sử 80% yêu cầu đều cùng một server, 20% vào các server khác, trong khi đó chúng ta có 3 cache Như vậy 80% số yêu cầu sẽ vào cùng một cache do cùng địa chỉ IP đích, nên cân bằng tải cho cache sẽ không hiệu quả

+ Khi một cache bị hỏng, sẽ có một phép tính toán lại với N-1 cache còn lại, nhằm đảm bảo cho yêu cầu không bị đẩy vào một cache không tồn tại

Trong phương pháp simple hashing, không quan tâm đến trạng thái cache do

đó nó còn được gọi là stateless load balancing và chắc chắn sẽ có phương pháp sateful load balancing hoạt động hiệu quả hơn nhiều Phương pháp này quan tâm đến tải hiện thời đang có của cache, từ đó tính toán nhằm đưa ra cache phù hợp nhất

để nhận yêu cầu, tuy nhiên nó sẽ không tránh được và sẽ bị lặp lại dữ liệu trong các

bộ cache Có hai phương pháp thực hiện cân bằng tải stateful, đó là Hash Buckets

và URL hashing

Trang 40

• Hash Buckets:

Phương pháp này sẽ giúp chúng ta loại bỏ được các điểm yếu của simple hashing Hàm băm sẽ vẫn tính toán một giá trị băm dựa trên một số các nhân tố chẳng hạn như giá trị địa chỉ đích Điểm khác ở đây là thuật toán băm sẽ được dùng

để tính ra một giá trị băm giữa (0-H), trong đó H là số xô băm (Buckets) Nếu như H=255, như vậy sẽ cần một giá trị 1 bytes giữa (0-255), chúng ta sẽ có simple hashing Nếu như giá trị H càng cao, thuật toán phân tải sẽ càng chính xác, H=1024

sẽ hoạt động tốt hơn H=255

Khi khởi tạo, các buckets không được chỉ định cache giống như trong hình Tại thời điểm nhận được kết nối đầu tiên (TCP SYN packet), giá trị hash sẽ rơi vào một bucket chưa được chỉ định, bộ cân bằng tải sẽ sử dụng một trong các thuật toán cân bằng tải để chỉ định một cache cho server này, chẳng hạn như sử dụng thuật toán “least connection” chỉ định cache đang chịu tải nhẹ nhất trong cụm caches cho bucket (bucket 4 đến cache c3) Tất cả các phiên và các gói dữ liệu sau này có giá trị hash 4 này sẽ đều được chuyển đến cache c3 Phương pháp này đòi hỏi bộ cân bằng tải phải theo dõi được tải của các cahe để chuyển có thể chỉ định chúng cho bucket nào tại thời điểm nhận được một giá trị băm mới

Ngày đăng: 16/10/2014, 10:54

HÌNH ẢNH LIÊN QUAN

Hình 1-1: So sánh giữa Scale out và Scale up - NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX
Hình 1 1: So sánh giữa Scale out và Scale up (Trang 14)
Hình 1-2: Biểu đồ so sánh giá thành phương pháp scale down và scale up - NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX
Hình 1 2: Biểu đồ so sánh giá thành phương pháp scale down và scale up (Trang 15)
Hình 1-3: Mô hình cân bằng tải Web Server cơ bản - NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX
Hình 1 3: Mô hình cân bằng tải Web Server cơ bản (Trang 16)
Hình 1.4: Mở rộng database server sử dụng kiến trúc SAN - NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX
Hình 1.4 Mở rộng database server sử dụng kiến trúc SAN (Trang 17)
Hình 1-6: Real Application Cluster - NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX
Hình 1 6: Real Application Cluster (Trang 20)
Hình 1-7: Mô hình mở rộng database khuyên dùng - NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX
Hình 1 7: Mô hình mở rộng database khuyên dùng (Trang 21)
Hình 2-1: Cách làm việc của cookie user =1 - NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX
Hình 2 1: Cách làm việc của cookie user =1 (Trang 24)
Hình 2-2: Cookie Read - NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX
Hình 2 2: Cookie Read (Trang 25)
Hình 2-4: Bộ cân bằng tải chèn một cookie - NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX
Hình 2 4: Bộ cân bằng tải chèn một cookie (Trang 28)
Hình 2-5: Bộ cân bằng tải ghi đè một cookie. - NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX
Hình 2 5: Bộ cân bằng tải ghi đè một cookie (Trang 29)
Hình 2-6: Cài đặt cache ở trình duyệt người dùng - NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX
Hình 2 6: Cài đặt cache ở trình duyệt người dùng (Trang 32)
Hình 2-7: Cài đặt cache như một transparent proxy - NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX
Hình 2 7: Cài đặt cache như một transparent proxy (Trang 33)
Hình 2-8: Cân bằng tải cho transparent-proxy cache - NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX
Hình 2 8: Cân bằng tải cho transparent-proxy cache (Trang 34)
Hình 2-9: Cài đặt cache như một reverse-proxy - NGHIÊN CỨU KỸ THUẬT NETWORK LOAD BALANCING TRONG HỆ THỐNG MẠNG LINUX
Hình 2 9: Cài đặt cache như một reverse-proxy (Trang 35)

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w