Tải bản đầy đủ (.pdf) (46 trang)

Tìm hiểu và triển khai giải pháp cân bằng tải cho webserver trên centos

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.52 MB, 46 trang )

TRƯỜNG ĐẠI HỌC VINH

005.7

KHOA CÔNG NGHỆ THÔNG TIN
--------------------------

MẠNH TRỌNG LƯỢNG

BÁO CÁO
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Tên đồ án:

TÌM HIỂU VÀ TRIỂN KHAI GIẢI PHÁP
CÂN BẰNG TẢI CHO WEBSERVER TRÊN CENTOS

Nghệ An, tháng 12 năm 2014


TRƯỜNG ĐẠI HỌC VINH

KHOA CÔNG NGHỆ THÔNG TIN
--------------------------

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

Tên đồ án:

TÌM HIỂU VÀ TRIỂN KHAI GIẢI PHÁP
CÂN BẰNG TẢI CHO WEBSERVER TRÊN CENTOS


Sinh viên thực hiện:

Mạnh Trọng Lượng
Mã sinh viên: 1051070406
Lớp: 51K2 - CNTT

Giáo viên hướng dẫn:

TS.Lê Văn Minh

Nghệ An, tháng 12 năm 2014


Đồ án tốt nghiệp
MỤC LỤC
Trang
LỜI MỞ ĐẦU ................................................................................................................1
I. Lý do chọn đề tài ........................................................................................................3
II. Một số chỉ tiêu đánh giá tải và hiệu năng của máy chủ ........................................4
2.1. CPU Utilization ........................................................................................................4
2.2. Memory usage ..........................................................................................................4
2.3. Thời gian phản hồi ....................................................................................................5
III. Tổng quan về Webserver .......................................................................................6
3.1.Webserver là gì? ........................................................................................................6
3.2. Nguyên tắc hoạt động của Web Server ....................................................................6
3.3. Những loại Web Server ............................................................................................7
IV. Kiến trúc Web với khả năng mở rộng ..................................................................8
4.1. Khái niệm chung .......................................................................................................8
4.2.Các vấn đề cần giải quyết trong quá trình xây dụng Website theo kiến trúc với khả
năng mở rộng ...................................................................................................................9

4.2.1. Cân bằng tải cho Application Server.....................................................................9
4.2.2. Mở rộng Database Server ....................................................................................11
4.2.3. Tổ chức lưu trữ dữ liệu ........................................................................................13
4.2.4. Cân bằng tải cho Cache .......................................................................................14
V. Tổng quan về cân bằng tải .....................................................................................21
5.1. Khái niệm cân bằng tải ...........................................................................................21
5.2. Lợi ích cân bằng tải ................................................................................................ 21
VI. Kỹ thuật cân bằng tải............................................................................................22
6.1. Kiểm tra trạng thái Server ......................................................................................22
6.2. Lựa chọn Server tốt nhất ........................................................................................23
6.3. Kỹ thuật Session Persistence ..................................................................................23
6.4. Cookie .....................................................................................................................23
VII. Các thuật toán cân bằng tải ................................................................................26
7.1. Thuật toán ngẫu nhiên ............................................................................................26
7.2. Thuật toán Round Robin ........................................................................................26
7.3. Thuật toán Weighted Round Robin ........................................................................27
7.4.Thuật toán Dynamic Round Robin ..........................................................................27
7.5. Thuật toán Fastest ...................................................................................................27


Đồ án tốt nghiệp
7.6. Thuật toán Least Connections ................................................................................28
7.7. Thuật toán Observed...............................................................................................28
7.8. Thuật toán Predictive ..............................................................................................28
7.9. Thuật toán Source ...................................................................................................28
VIII. Các giải pháp chia tải ........................................................................................29
8.1. Cân bằng tải sử dụng phần cứng ............................................................................29
8.2. Cân bằng sử dụng phần mềm .................................................................................30
8.3. Chia tải nhờ Proxy ..................................................................................................30
8.4. Chia tải nhờ thiết bị chia kết nối.............................................................................30

IX. Các thành phần của Hệ thống cân bằng tải ........................................................30
9.1. Chức năng của các thành phần trong hệ thống cân bằng tải ..................................30
9.2. Hoạt động của hệ thống cân bằng tải......................................................................31
9.3. Kiến trúc hệ thống cân bằng tải ..............................................................................31
X. Cài đặt ......................................................................................................................33
Tài liệu tham khảo: ........................................................................................................42


Đồ án tốt nghiệp
LỜI MỞ ĐẦU
Để hoàn thành đồ án tốt nghiệp này, em xin gửi lời cảm ơn chân thành nhất tới
TS.Lê Văn Minh, Khoa CNTT – Đại học Vinh đã tận tình giúp đỡ em trong suốt quá
trình thực hiện đồ án tốt nghiệp.
Chúng em xin cảm ơn quý thầy cô trong Khoa CNTT - ĐHV đã tạo điều kiện thuận
lợi cho chúng em học tập, nghiên cứu. Cung cấp cho chúng em những kiến thức
chuyên môn cần thiết và quý báu giúp chúng em hiểu rõ hơn các lĩnh vực đã nghiên
cứu để hoàn thành đề tài đã chọn.
Sinh viên thực hiện

Mạnh Trọng Lượng

Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

1


Đồ án tốt nghiệp
Danh mục hình ảnh
Hình 3.1
Hình 3.2

Hình 3.3
Hình 4.1
Hình 4.2
Hình 4.3
Hình 4.4
Hình 4.5
Hình 4.6
Hình 4.7
Hình 4.8
Hình 4.9
Hình 4.10
Hình 6.1
Hình 6.2
Hình 6.3
Hình 8.1

Tên hình
Mơ hình hoạt động của Web Server
Biểu tượng IIS
Biểu tượng Apache
Mơ hình cân bằng tải trên Web Server
Mở rộng Database Server sử dụng kiến trúc SAN
Mở rộng Database Server theo chiều ngang
Real Application Cluster
Forward Proxy
Transparent Proxy
Cân bằng tải cho Transparent Proxy Cache
Reverse Proxy
Bộ cân bằng tải cho Reverse Proxy Cache
Transparent Reverse Proxy

Cách làm việc của Cookie user = 1
Cookie Read
Cookie - Insert
Cân bằng tải sử dụng phần cứng

Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

Trang
6
7
8
10
11
12
13
16
17
18
18
19
19
23
24
24
28

2


Đồ án tốt nghiệp

I. Lý do chọn đề tài
Từ trước đến nay, do nhiều nguyên nhân, tỉ lệ vi phạm bản quyền phần mềm tại
Việt Nam luôn nằm ở một mức cao so với các nước trong khu vực và trên thế giới.
Trong những năm gần đây, hệ điều hành Linux nói chung và hệ điều hành CentOS nói
riêng đang ngày càng phổ biến trong hệ thống mạng Internet. Hệ điều hành CentOS ra
đời chưa lâu nhưng đang dần được sử dụng rộng rãi cho các Web Server bởi chúng
hoàn tồn miễn phí, ổn định và bảo mật tốt.Chính vì vậy tôi muốn nghiên cứu và thử
nghiệm hệ thống sử dụng hồn tồn bằng những cơng cụ mã nguồn mở miễn phí, từ đó
có cái nhìn khách quan về hệ thống mã nguồn mở.
Công nghệ mạng và các hệ thống máy chủ ngày nay đã có những bước phát triển
vượt bậc. Nhờ đó đáp ứng được các ứng dụng thương mại rộng lớn. Các ứng dụng này
có tần suất sử dụng cao, yêu cầu hoạt động liên tục. Do vậy, hệ thống mạng phải có
khả năng mở rộng tối ưu để đáp ứng được một lượng lớn các yêu cầu ngày càng tăng
của người dùng mà không gây ra bất kỳ một độ trễ không mong muốn nào.
Một trong những xu hướng lựa chọn hệ thống mạng ngày nay là phân tán sự tính
tốn giữa các hệ thống vật lý khác nhau. Các hệ thống vật lý này có thể khác nhau về
quy mô và chức năng. Chúng thường bao gồm các máy trạm, các máy tính mini và các
hệ thống máy tính đa năng lớn. Các hệ thống này thường được gọi là các nút.
Trong đó, sự phát triển của ngành dịch vụ web khiến cho số lượng người truy cập
vào các Website ngày càng tăng mạnh, đặc biệt là các mạng xã hội hoặc Website chia
sẻ nhạc, video trực tuyến.
Yêu cầu đặt ra đối với người quản trị Website là cần phải giải quyết vấn đề quá tải,
làm sao để bất cứ người dùng nào truy cập vào Website đều được phục vụ một cách
nhanh nhất. Để làm được điều đó, người quản trị phải nâng cấp hệ thống server. Nghĩa
là, cần phải tăng cấu hình máy Server hoặc tăng số lượng Server, đó chính là 1 trong 2
phương án mở rộng Server: mở rộng theo chiều dọc (scaling up) và mở rộng theo
chiều ngang (scaling out). Mở rộng theo chiều dọc nghĩa là nâng cấp một Server có
cấu hình ngày càng mạnh hơn tùy theo nhu cầu của người dùng, phương pháp này khá
tốt trong trường hợp số lượng người dùng không nhiều tuy nhiên giá thành của nó đắt
và khả năng mở rộng kém. Mở rộng theo chiều ngang nghĩa là sử dụng một hệ thống

nhiều Server nhỏ với chi phí thấp hơn và mỗi Server phục vụ một lượng người dùng
nhất định, phương pháp này có khả năng mở rộng tốt và hoạt động khá hiệu quả.

Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

3


Đồ án tốt nghiệp
II. Một số chỉ tiêu đánh giá tải và hiệu năng của máy chủ
2.1.

CPU Utilization

CPU – đơn vị xử lý trung tâm – được xem như là bộ não của máy tính, nó là tài
ngun quan trọng nhất vì nó liên quan trực tiếp đến khả năng xử lý, tính tốn của hệ
thống. Tốc độ xử lý của CPU thường được tính theo số xung nhịp đồng hồ hoặc số
lượng phép tình cơ bản được thực hiện trong một giây. Đơn vị tốc độ được tính theo
MHz hoặc MIPS.
CPU Utilization (hay còn được gọi là CPU usage) là tổng thời gian mà CPU được
sử dụng cho quá trình tính tốn và xử lý một chương trình máy tính. CPU Utilization
là một trong những yếu tố đánh giá hiệu năng của máy chủ. Nếu tỉ lệ phần trăm của
CPU là cao thì thời gian xử lý một chương trình máy tính là lớn, những chương trình
khác muốn thực thi thì phải chờ cho đến khi CPU được giải phóng, do vậy hiệu suất
của máy chủ là thấp. Nếu tỉ lệ phần trăm của CPU thấp, thì thời gian xử lý một chương
trình máy tính là nhỏ, hiệu suất của máy tính là cao.
2.2.

Memory usage


Memory – bộ nhớ - là một thành phần quan trọng của máy tính, được sử dụng để
lưu trữ các chương trình và dữ liệu trước khi chương trình được thi hành. Các đặc
trưng cơ bản của bộ nhớ là thời gian truy cập dữ liệu và dung lượng bộ nhớ. Thời gian
truy cập là khoảng thời gian cần thiết kể từ khi phát tín hiệu điều khiển đọc/ghi đến khi
việc đọc/ghi hoàn thành. Tốc độ truy cập là một yếu tố quyết định đến tốc độ chung
của máy tính. Dung lượng bộ nhớ chỉ khối lượng dữ liệu mà bộ nhớ có thể lưu trữ
đồng thời. Trong Linux, yếu tố quan trọng trong việc xác định hiệu suất là dung lượng
bộ nhớ sẵn có trong RAM – bộ nhớ vật lý – và bộ nhớ ảo – SWAP Space.
RAM – bộ nhớ truy cập ngẫu nhiên – là một loại bộ nhớ chính của máy tính để lưu
trữ mã chương trình và dữ liệu trong suốt thời gian thực thi, chúng sẽ bị xóa khi mất
nguồn điện. Đây là loại bộ nhớ có thể ghi và đọc dữ liệu và thời gian truy cập đến bất
kỳ ô nhớ nào cũng như nhau.
Bộ nhớ ảo là một không gian trong đĩa cứng, được sử dụng khi dung lượng của
RAM đã đầy. Bộ nhớ ảo là một kỹ thuật cho phép xử lý một chương trình khơng được
nạp tồn bộ vào RAM. Trong RAM chỉ lưu trữ các lệnh và dữ liệu phục vụ cho hoạt
động của chương trình tại một thời điểm nhất định. Khi cần tới các lệnh hoặc dữ liệu
mới hệ thống sẽ nạp chúng vào bộ nhớ tại vị trí trước đó bị chiếm giữ bởi các lệnh
không dùng vào thời điểm này. Các lệnh và dữ liệu không dùng đến đƣợc chuyển vào
bộ nhớ ảo.

Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

4


Đồ án tốt nghiệp
Thông số “free” trong RAM và “swap” trong bộ nhớ ảo cho biết dung lượng bộ
nhớ có sẵn trong là bao nhiêu, từ đó có thể đánh giá hiệu suất của máy chủ. Nếu dung
lượng bộ nhớ càng lớn thì hiệu suất của máy chủ càng cao và ngược lại.
2.3.


Thời gian phản hồi

Thời gian phản hồi các truy vấn của client gửi đến server chính là một yếu tố để
đánh giá tải và hiệu năng của máy chủ. Nếu thời gian phản hồi các truy vấn là thấp thì
hiệu suất của máy chủ cao, các truy vấn của client đƣợc đáp ứng nhanh mà khơng có
sự chậm chễ. Ngƣợc lại, nếu thời gian phản hồi các truy vấn là lớn thì hiệu suất của
máy chủ giảm, client sẽ phải đợi một thời gian lâu để có kết quả trà về từ máy chủ.

Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

5


Đồ án tốt nghiệp
III. Tổng quan về Webserver
3.1.

Webserver là gì?

Web Server là máy tính mà trên đó cài đặt phần mềm phục vụ Web, đơi khi người
ta cũng gọi chính phần mềm đó là Web Server. Tất cả các Web Server đều hiểu và
chạy được các file *.htm và *.html, tuy nhiên mỗi Web Server lại phục vụ một số kiểu
file chuyên biệt chẳng hạn như IIS của Microsoft dành cho *.asp, *.aspx...; Apache
dành cho *.php...; Sun Java System Web Server của SUN dành cho *.p...
Web Server là máy chủ có dung lượng lớn, tốc độ cao, được dùng để lưu trữ thông
tin như một ngân hàng dữ liệu, chứa những website đã được thiết kế cùng với những
thông tin liên quan khác (các mã Script, các chương trình, và các file Multimedia…)
Web Server gửi đến Client những trang Website thông qua môi trường Internet qua
giao thức HTTP, HTTPS; giao thức được thiết kế để gửi các file đến Web Browser và

các giao thức khác.

WEB SERVER

APPLICATION
SERVER

DATABASE SERVER

Hình 3.1: Mơ hình hoạt động của Web Server
Web Server có thể được tích hợp với Database hay điều khiển việc kết nối vào
Database có thể truy cập và kết xuất thơng tin từ Database lên các trang website và
truyền tải chúng đến người dùng. Web Server phải hoạt động liên tục để phục vụ cho
việc cung cấp thông tin trực tuyến.
3.2.

Nguyên tắc hoạt động của Web Server

- Người dùng ở máy Client sẽ gõ địa chỉ URL (Domain Name) vào thanh địa chỉ
của Web Browser. Khi đó Web Browser sẽ dựa vào tên Domain đó để tìm kiếm IP của
máy Web Server (bằng cách dò trên DNS server).
Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

6


Đồ án tốt nghiệp
- Khi có được IP, Web Browser sẽ gửi yêu cầu đến Web Server để lấy nội dung
trang web.
- Lúc đó Web Server sẽ xử lý yêu cầu của Client: lấy nội dung của website mà

client yêu cầu (nội dung này được người thiết kế web viết ra bằng các phần mềm hỗ
trợ rồi post lên Web Server) để gửi lại cho Client.
- Khi nhận được nội dung trang web thì Web Browser sẽ hiển thị lên cho người dùng.
3.3.

Những loại Web Server

Có nhiều Web Server khác nhau, việc lựa chọn một Web Server phù hợp sẽ dựa
trên các tiêu chí đánh giá, khả năng làm việc với hệ điều hành, các ứng dụng khác,
thiết lập các chương trình ứng dụng phía server, bảo mật dữ liệu, xuất bản trang web,
các công cụ hỗ trợ khi xây dựng các trang web.
Hiện nay, có 2 loại Web Server thông dụng nhất là: Internet Information Services
(IIS), Apache Web Server.
3.3.1. Internet Information Services ( IIS )

Hình 3.2: Biểu tượng IIS
Internet Information Services (IIS) là một dịch vụ tùy chọn của Windows Server
cung cấp các tính năng về Website.
Giải pháp phổ biến nhất của Microsoft cho một Website là chạy IIS trên nền
Windows Server. IIS là dịch vụ thông tin Internet do Microsoft phát triển, sản phẩm
này được tích hợp cùng với hệ điều hành Windows. Phiên bản mới nhất hiện nay là IIS
8.5 được chạy trên hệ điều hành Windows Server 2008, 2012... Phiên bản này được
Microsoft thiết kế lại dưới dạng Module, vừa kế thừa ưu điểm của những phiên bản
trước, vừa tăng cường tính bảo mật và ổn định. IIS 8.5 cung cấp 2 công cụ quản trị: đồ
họa và dịng lệnh. Những cơng cụ quản trị này cho phép:
- Quản lý tập trung IIS và ASP.NET.
- Xem thơng tin, chuẩn đốn, trong đó bao gồm các thơng tin real-time.
- Thay đổi quyền trên các đối tượng Website và ứng dụng.
- Cấu hình IIS và ASP.NET với một định dạng thống nhất.
- Dễ dàng sao chép các file cấu hình và nội dung của site hoặc ứng dụng đến một

máy tính khác.
Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

7


Đồ án tốt nghiệp
3.3.2. Apache Web Server

Hình 3.3: Biểu tượng Apache
Apache Web Server được xem như một sự nỗ lực rất lớn trong việc phát triển và
duy trì một Web Server mã nguồn mở cho các hệ điều hành, bao gồm Unix, Linux và
Windows. Đây là một Web Server hội tụ tất cả các tính năng: bảo mật, hiệu suất, mở
rộng và phát triển cung cấp các dịch vụ Web được đồng bộ trong các chuẩn Web hiện
hành.
Các đặc điểm nỗi bật của Apache:
- Apache có thể chạy kết hợp giữa chế độ đa xử lý và chế độ đa chỉ lệnh.
- Hỗ trợ nhiều giao thức: Apache được phát triển để có thể phục vụ trên nhiều
giao thức khác nhau.
- Ngày càng hỗ trợ tốt hơn cho các hệ điều hành khác như: Linux, OS và
Windows.
- Ngày càng phát triển và hoàn thiện các API (Application Program Interface).
- Hỗ trợ IPv6.
- Hỗ trợ nhiều modul dùng để lọc các dòng dữ liệu đen hoặc đi từ Server.
IV. Kiến trúc Web với khả năng mở rộng
4.1. Khái niệm chung
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
trong một khoảng nhất định, Website vẫn đáp ứng được nhu cầu, Website có khả năng
dễ dàng nâng cấp. Để phục vụ được nhiề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, về hiệu năng, tính đáp ứng, tính sẵn có

cao, tránh được thời gian chết của hệ thống, khả năng bảo trì tốt và được xây dựng với
giá thành tốt nhất.
Khả năng mở rộng là khả năng của một ứng dụng có thể hỗ trợ được số lượng
người ngày một tăng. Khả năng mở rộng là đơn vị đo sự kết hợp của các hệ số, đó là
số lượng người dùng đồng thời mà một cụm Server có thể hỗ trợ và thời gian cụm
Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

8


Đồ án tốt nghiệp
Server cần để xử lý một yêu cầu. Thiết kế Website với khả năng mở rộng cao là u
cầu sống cịn đối với hầu hết các cơng ty dịch vụ Web hiện nay, để tồn tại và phát
triển, một Website cần phải đáp ứng được yêu cầu của người dùng trong thời gian mà
họ mong muốn.
Hiệu năng là khả năng mà hệ thống sử dụng tài nguyên của nó một cách tốt nhất.
Tính thực hiện được đo bằng lượng cơng việc có ích mà hệ thống thực hiện được với
một nguồn tài nguyên nhất định, chẳng hạn như nếu 2 Server có cấu hình giống nhau,
Server nào có thể phục vụ được nhiều người dùng hơn (người dùng chạy các ứng dụng
tương đương) thì Server đó có tính thực hiện cao hơn.
Khả năng có sẵn cao, trong một hệ thống có khả năng có sẵn cao, nếu một Web
Server bị lỗi thì một Web Server khác sẽ tiếp quản ngay để xử lý yêu cầu. Nghĩa là,
nếu người dùng đang làm việc với một Server mà Server đó bị lỗi, tồn bộ thơng tin
trong phiên làm việc của người đó sẽ được chuyển qua cho một Server khác đảm
nhiệm. Như vậy trong bất cứ trường hợp nào, người dùng truy cập vào các dịch vụ của
hệ thống đều được đáp ứng.
Tính đáp ứng 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 cho đáp ứng đó là
bao nhiêu. Hệ thống gửi đáp ứng 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ì hỗn (delay) càng lớn. Chẳng hạn như khi người dùng truy

cập vào một trang Web, nếu họ phải chờ quá lâu, họ sẽ chuyển qua làm công việc
khác, đơi khi họ qn mất là mình đang truy cập và một dịch vụ Web và đóng ln
trình duyệt, hoặc họ quay trở lại sau một thời gian khá lâu, điều này rất khơng tốt vì hệ
thống mà họ truy cập vẫn hoạt động và lưu giữ session mà khơng phục vụ cho ai cả, đó
là một sự lãng phí lớn.
4.2.

Các vấn đề cần giải quyết trong q trình xây dụng Website theo kiến trúc
với khả năng mở rộng

4.2.1. Cân bằng tải cho Application Server
Một trang Web phục vụ nhiều người truy cập cùng 1 lúc 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ó 2 sự lựa chọn ở đây: mở
rộng theo chiều dọc (scale up)và mở rộng theo chiều ngang (scale out).
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ó 1 Server với cấu hình ngày 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
Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT
9


Đồ án tốt nghiệp
dùng vừa phải. Tuy vậy, phương pháp này sẽ dẫn đến nhiều vấn đề, đầu tiên là 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, vấn đề
downtime impact, nếu như Server này bị chết, ngay lập tức toàn bộ hệ thống sẽ chết.
Phương pháp này còn dẫn đến giới hạn cho hệ thống,vì đến mơt mức nào đó hệ thống
sẽ không thể phục vụ được nhiều yêu cầu hơn nữa, vì một hệ thống tổng thể cịn phụ

thuộc vào nhiều yếu tố như băng thông hay khả năng vào ra của file trên đĩa cứng.
Giả sử với 1 Site Video, băng thông để xem được 1 Clip ở dạng chất lượng trung
bình sẽ vào khoảng 512kb/s -> 0.5mb/s. Vậy đường truyền 100mb sẽ cho phép tối đa
200 người dùng xem đồng thời. Nếu số lượng người dùng vượt quá 200, người ta có
thể tăng băng thơng cho đường truyền lên 1 Gigabit nhưng đây sẽ rơi vào tình trạng
của scale up và gặp giói hạn. Ngồi ra, tốc độ đọc đĩa cứng chỉ vào khoảng 400mb/s
nên dù có có tăng tốc đường truyền lên thì Server vẫn khơng thể 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 được vấn đề này.
Giải pháp thứ hai là lắp nhiều Servers song song, và chúng hoạt động thành một
cụm (Cluster).Theo ví dụ ở trên, cứ lắp thêm 1 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,
sử dụng phương pháp này cịn giảm thiểu được chi phí. Tuy nhiên điểm yếu của
phương pháp này 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, làm sao để tải được phân bố
đều đặn vào trong các máy Server.
Load Balancer

App server

App server

App server

Hình 4.1: Mơ hình cân bặng tải trên Web Server
Như vậy, rõ ràng rằng sự lựa chọn 1 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 nhiều 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 hay các trang chia sẻ video trực tuyến thì sự lựa chọn nhiều Server họat động song
song là hiệu quả. 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 Servernày xử lý, từ đó, xuất hiện bài tốn cân bằng tải

(Load Balancing) cho Cluster này. Nhà phát triển hệ thống phải 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.
Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

10


Đồ án tốt nghiệp
4.2.2. Mở rộng Database Server
Các Database Server đó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. Cũng như cân bằng tải ở Application Server, mở
rộng Database Server cũng có 2 phương pháp:mở rộng theo chiều dọc và mở rộng theo
chiều ngang.
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 networks), Database 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 để
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ữ bây giờ chỉ được xem như một Database Server duy
nhất, vì vậy mà nó hoạt động rất hiệu quả.
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 (như đã đề cập ở trên) 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.
Load Balanced
App Server

Database

server
SAN
Hình 4.2: Mở rộng Database Server sử dụng kiến trúc SAN
Mở rộng Database theo chiều ngang (scaling out), nghĩa là tăng số lượng các Node
Database Server

Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

11


Đồ án tốt nghiệp

Load Balanced
App Server

Database
server

Database
server

Database
server

SAN
Hình 4.3: Mở rộng Database Server theo chiều ngang

a. Shared Nothing Cluster
Mỗi Database Server sẽ chứa 1 bản copy hoàn toàn của Database, tức là tất cả các

Database Server sẽ giống nhau. Khơng có dữ liệu được chia sẻ giữa các Database
Server Nodes, ở đây các file Database thực sự sẽ được chứa trong SAN.
Phải chọn cơ chế sao bản(replication) phù hợp, vì các Database sẽ chứa cùng 1 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 Database, việc tạo sao bản có thê sẽ bị lặp. Với
Multi – Master, các lệnh đọc sẽ được gửi đến cho nhiều Master, sau đó nó 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 không đồng bộ được
đảm bảo nhưng bản sao không được đồng nhất từ Master đến Slave. Master cập nhât
Database 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.
Phương pháp đồng bộ được đảm bảo, bản sao được đồng nhất từ Master đến Slave.
Master cập nhập cơ sở dữ liệu riêng của nó và xác nhận tất cả các Slave phải cập nhật
những dữ liệu riêng của chúng trước khi hối đáp trở lại Client, sự hồi đáp này sẽ chậm
hơn. Slaves sẽ có cũng dữ liệu như của Master trong suốt quá trình.

Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

12


Đồ án tốt nghiệp
b. Real Application Cluster
Các Nodes ở Database 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 phương pháp
này.
Database Server
Database Server
Database Server

Database
SAN

Hình 4.4: Real Application Cluster
4.2.3. Tổ chức lưu trữ dữ liệu
Một Website có hệ thống Web Server và Database Server mạnh mẽ vẫn sẽ bị giới
hạn tốc độ truy cập nếu như khả năng lưu trữ và phân bổ dữ liệu của Website đó khơng
tốt. Một trang Web sẽ được cấu thành từ nhiều thành phần khác nhau, bao gồm các
thành phần tĩnh và động. Để hiện thị được một trang Web hoàn chỉnh, cần phải tải hết
tất cả các thành phần này về trình duyệt của người dùng. Nếu như dữ liệu cần tải về
lưu trữ quá xa người dùng, quá trình này sẽ chiếm nhiều thời gian.
Để giải quyết vấn đề này, một kỹ thuật thường dùng là CDN (Content Delivery
Network) hay Content Switching, kỹ thuật này hướng Request thẳng đến Server phục
vụ nó. CDN thực ra có ý nghĩa khá rộng mà các định nghĩa chuẩn thiên về hướng
Request đến Server gần người dùng nhất.
Chẳng hạn trước khi youtube đặt Server ở Việt Nam, người dùng ở Việt Nam xem
video rất chậm, thường phải tải từng phần, ngắt quãng gây khó chịu, nhưng sau khi
youtube đặt Server ở Việt Nam, người dùng Việt Nam không bị giật khi xem video bởi
vì bộ cân bằng tải đã xác định IP của người dùng rồi xác định khu vực và hướng yêu
cầu đến Datacenter gần đó nhất
Khi một Website đã trở nên tồn cầu và có trung tâm dữ liệu (Datacenter) tại
nhiều nơi khác nhau trên thế giới, sẽ xảy ra vấn đề đồng bộ dữ liệu giữa các trung

tâm dữ liệu này, cần phải đảm bảo được dữ liệu mà người dùng muốn truy cập đến
Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

13


Đồ án tốt nghiệp
ln có trên Server, người ta xử lý điều này bằng cách, nếu dữ liệu đó là dữ liệu
quan trọng, nó sẽ được sao lưu đến tất cả các Datacenter trong hệ thống, cịn nếu đó
là dữ liệu khơng quan trọng thì nó có thế chỉ được lưu trên Server khi mà nó được
upload lên.
Chẳng hạn nếu một người dùng Việt Nam truy cập vào một video "hot", đầu tiên
video này sẽ được chuyển về Datacenter ở Việt Nam, và người dùng sẽ đọc ở đây,
trong trường hợp ngược lại, yêu cầu của người dùng sẽ có thể được gửi thẳng đến
Server đang chứa video đó, và dữ liệu sẽ được tải về từ đây cho người dùng.
Một vấn đề nữa là khi số lượng truy cập vào Website là rất nhiều và đa dạng, dữ
liệu phải liên tục vào ra tại ổ đĩa lưu trữ của Website. Khác với Web Application khi
băng thông không quá cao, có thể dùng một Proxy Server đứng trước phân tải, trong
trường họp Fíle Sharing hay Video Sharing, làm như thế sẽ khiến bộ cân bằng tải sẽ
trở thành thắt cổ chai. Điều này hồn tồn dễ hiếu, vì ra vào dừ liệu ra vào tại bộ cân
bằng chỉ có giới hạn nhất định, nếu vượt qua giới hạn đó nó sẽ rơi vào tình trạng quá
tải và bị “treo”.
Để giải quyết vấn đề này, cần phải có các kỹ thuật Partitioning các ổ đĩa lưu trữ
một cách hiệu quả, các kỹ thuật này sẽ giúp cho việc vào ra tại các thiết bị lưu trữ
được giảm một cách tối ưu. Một phương pháp nữa là sử dụng bộ đệm Cache.
4.2.4. Cân bằng tải cho Cache
Cache nhằm đểchỉ kỹthuật lưu trữdữ liệu được truy xuất thường xuyên và sử dụng
lại liên tục. Khi người dùng thường xuyên truy cập vào một vùng dữ liệu nào đó, thay
vì gọi lại phần dữ liệu đó từ Database, chương trình ứng dụng sẽ đẩy dữ liệu đó vào
một vùng nhớ tạm có khả năng truy xuất nhanh, và gọi ra từ đó. Phương pháp này sẽ

giảm thiểu tối đa các luồng dữ liệu chạy trong hệ thống, chẳng hạn như giảm thiểu số
lần truy xuất vào Database. Caching là một phần vô cùng quan trọng trong tất cả các
hệ thống, nó là yếu tố quyết định trong việc tăng tốc độ hoạt động của hệ thống
a. Định nghĩa
Trong các hệ thống Web, bộ nhớ cache lưu trữ các Web Content (sự kết hợp giữa
text, các hình động hoặc audio) nhằm giúp tiết kiệm băng thơng cũng như tăng tốc độ
truy xuất web.
Ví dụ: khi người dùng A lần đầu tiên gõ vào trong trình duyệt Web của họ
bộ nhớ web cache sẽ nhận được yêu cầu này. Vì đây là lần đầu
người dùng A truy nhập và hệ thống, nên sẽ chưa có trang này trong cache, bộ nhớ
cache sẽ tìm kiếm trang này từ Server gốc và lưu giữ trang này trong bộ nhớ Local,
chẳng hạn như RAM hoặc đĩa, sau đó nó sẽ trả về trang này cho người dùng. Sau đó,
Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

14


Đồ án tốt nghiệp
người dùng B truy xuất vào địa chỉ này, vì nó đã tồn tại trong cache, nên nó sẽ ngay
lập tức trả về trang này cho người dùng B. Vì vậy, người dùng B sẽ nhận được trả lời
nhanh hơn người dùng A và người phát triển Web cũng sẽ tiết kiệm được băng thông
khi không phải truy cập vào Server gốc để lấy trang này.
Vì một trang Web được cấu thành từ rất nhiều đối tượng khác nhau, chẳng hạn
như các đoạn text, các file hình ảnh, audio, các đoạn flash...do đó, khi có yêu cầu,
Web Server sẽ trả về tất cả các URLs cho tất cả các đối tượng, sau đó trình duyệt sẽ
nhúng chúng vào với nhau để hiển thị ra trang hoàn chỉnh.
Do bộ nhớ Cache trả về dữ liệu cho người dùng cuối thay vì Web Server, nên nó
được gọi là Proxy Server hoặc Proxy Cache. Nếu như dữ liệu cần trả về cho một u
cầu từ phía người dùng có trong Cache, chúng ta gọi là Cache Hit, trong trường hợp
ngược lại, chúng ta có khái nhiệm Cache Miss. Cache hit-ratio là giá trị được tính bằng

phần trăm giữa Cache Hit và tổng số Requests mà Cache nhận được, nếu tỉ lệ này càng
cao, thời gian đáp ứng càng ngắn và càng tiết kiệm được nhiều băng thông hơn.
b. Các loại Cache và cách cài đặt
Dựa trên khả năng của nó, cache được phân thành hai loại: tăng tốc người dùng
(Client Acceleration) và tăng tốc Server (Server Acceleration).
Triển vọng của Client Acceleration Cache là khả năng đáp ứng người dùng nhanh
hơn và tiết kiệm băng thông mạng. Triển vọng của Server Acceleration là khả năng
luân chuyến Web Content nhanh hơn và giảm số lượng Srvers cần thiết, vì nguyên lý
của Server Acceleration là dựa trên một tiền đề mà qua đó sử dụng Cache là phù họp
hơn Servers trong việc phục vụ các ngữ cảnh tĩnh (Static Content). Web Servers sẽ
giảm bớt được yêu cầu phục vụ các ngữ cảnh tĩnh (đã được chỉ định cho Cache) và tập
trung vào phục vụ các ngữ cảnh động (Dynamic Web Content)
- Forward Proxy dùng cho tăng tốc Client
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 những 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 một cống riêng biệt để hướng tất cá các
Requests của người dùng đến Proxy Cache này, nơi mà các ngữ cảnh sẽ đượ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ỉ đến Proxy Server, tuy
nhiên, nó có thể được 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 này cũng làm tăng khả năng bảo mật của hệ thống do người
Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

15


Đồ án tốt nghiệp
quản trị chỉ cho phép duy nhất Proxy Cache Servers 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ủa cần đáp ứng cho 4000 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. Thêm 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 ở đây xuất hiện
hiện tượng thắt cổ chai (bottleneck).
Bằng cách cài đặt một bộ cân bằng tải, chúng ta có thể 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. Một
bộ cân bằng tải được cài đặ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. Đ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, chúng ta đã giải quyết được vấn đề về khả năng
mở rộng cũng như tính đáp ứng của Caches. Chúng ta 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, thêm 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 đó mà khơng làm gián đoạn hoạt động
của hệ thống.

Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

16


Đồ án tốt nghiệp


Internet

Load Balancer

Hình 4.5: Forward Proxy
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 hình cho trình duyệt
của người dùng chỉ đến Cache.
- Transparent Proxy dùng cho tăng tốc Client
Phương pháp cài đặt này sẽ giúp chúng 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

Cache
Internet

Hình 4.6: Transparent Proxy
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à Servers, tuy vậy phương án 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á 1 bộ nhớ Cache
Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

17


Đồ án tốt nghiệp
trên một đường truyền Internet, nếu nó bị down, kết nối sẽ bị down hoàn toàn, hơn

nữa, cách cài đặt này sẽ khiến cho người quản trị khơng thể bảo trì và nâng cấp Cache
mà khơng ngừng 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 chúng 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ữ 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ýmà được kết nối với mạng
nội bộ. Điều này rất quan trọng, vì nếu như mộtCache khơng có đối tượng, nó sẽ tiếp
tục gửi Request đến Server gốc, và lệnh này sẽ lại chạy qua bộ cân bàng tải một lần
nữa, và 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.

Load Balancer

Internet

Cache

Hình 4.7: Cân bằng tải cho Transparent Proxy Cache
Với việc sử dụng Transparent- Cache Switching, bộ cân bằng tải có thể dễ dàng
thực hiện “helth check” nhằm kiểm tra ngay lập tức bất cứ hỏng hóc nào. Neu 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ẽ giảm 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 chỉ như một Switch, nên khá năng hỏng của nó là thấp hon Cache rất nhiều.
- Reverse Proxy dùng cho tăng tốc Server
Reverse proxy được cài ở phía trước của Web Servers nên phải cấu hình lại DNS
để tên của Website chỉ vào IP của Proxy Cache chứ không phải Web Servers, 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 Web Servers và trả kết quả về sau đó. Như vậy 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.
Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

18


Đồ án tốt nghiệp

Internet
Reverse Proxy
Cache

Web Server

Hình 4.8: Reverse Proxy
Một bộ cân bằng tải được đặt trước các Caches, chúng ta sẽ định nghĩa một địa chỉ
IP ảo VIP cho bộ cân bằng tải. Sau đó hướng 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 Cache phía sau nó giống như nó 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 tốn phân tải nào đó

Internet

Load Balancer

Web Server

Reverse Proxy
Cache

Hình 4.9: Bộ cân bằng tải cho Reverse Proxy Cache
- Transparent Reverse Proxy dùng cho tăng tốc Server
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, Cache sẽ không phải chịu trách nhiệm phân phối Request, 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.

Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

19


Đồ án tốt nghiệp

Load Balancer
Internet

Web Server
Reverse Proxy
Cache

Hình 4.10: Transparent Reverse Proxy
c. Các phương pháp cân bằng tải cho Caches
- Sử dụng hàm băm đơn giản (Simple Hashing)

Bộ cân bằng tải sẽ tính tố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
tốn xem Cache nào là Cache sẽ nhận được 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-l), và số dư này sẽ chỉ định là
cache nào sẽ được chọn để gửi yêu cầu.
- Hash Buckets
Phương pháp này sẽ giúp loại bỏ được các điểm yếu của Simple Hashing. Hàm
băm sẽ vẫn tính tố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 tố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 tốn phân tải sẽ càng chính xác, H =1024 sẽ hoạt động tốt hơn H =
255.
- URL Hashing
Phương pháp này nhằm loại bỏ hoàn toàn việc lặp dữ liệu ở trong các Cache, tất cả
các hàm băm đều sẽ sử dụng URL của đối tượng được yêu cầu. Điều này sẽ đảm bảo
là tất cả các yêu cầu “con” của một yêu cầu ban đầu sẽ được chuyển đến cùng một
Cache, do đó sẽ tăng tỉ lệ Cache - Hit và tăng hiệu năng hoạt động của Cache.
Tại thời điểm ban đầu, khi người dùng khởi tạo kết nối TCP với một gói TCP SYN
(gói dừ liệu được gửi đi để cho biết kết nối đã được thiết lập), bộ cân bằng tải chưa có
URL của yêu cầu để thực hiện hàm băm. Do đó bộ cân bằng tải gửi đi một tín hiệu
Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

20



Đồ án tốt nghiệp
SYN ACK (tín hiệu cập nhập người dùng với những thay đổi của kích thước cửa sổ
khi có rất nhiều gói dữ liệu nhận được khơng được trả lời) và chờ tín hiệu ACK trả về
từ phía người dùng. Khi người dùng đã thiết lập xong kết nối, trình duyệt của họ sẽ
gửi lệnh HTTP GET có chứa thơng tin về URL. Khi đó bộ cân bằng tải sẽ sử dụng
URL này để thực hiện hàm băm và chọn Cache thích hợp. Đơi khi URL rất dài và bao
gồm rất nhiều gói, khi đó bộ cân bằng tải cần phải dùng bộ nhớ đệm chứa các gói cho
đến khi đạt được đầy đủ số gói để lấy được URL hoàn chỉnh và thực hiện hàm băm.
Tuy vậy, bộ cân bằng tải cũng có thể chỉ cần hạn chế ở một số packet đầu tiên và thực
hiện hàm băm trên đó.
URL Hashing có thể được dùng với hash-buckets nhằm đạt được khá năng cân
bằng tải cao. URL hashing sẽ khắc phục được nhược điểm của hash-buckets và ngược
lại.
V. Tổng quan về cân bằng tải
5.1. Khái niệm cân bằng tải
Cân bằng tải là một phương pháp phân phối khối lượng tải trên nhiều máy tính
hoặc một cụm máy tính để có thể sử dụng tối ưu các nguồn lực, tối đa hóa thơng
lượng, giảm thời gian đáp ứng và tránh tình trạng quá tải trên máy chủ. Cân bằng tải
dùng để chia sẻ dữ liệu trên mạng giúp cho việc truyền tải thông suốt, không bị nghẽn
mạng do quá tải hay do 1 sự cố nào đó. Hoặc khi có 1 máy Server nào đó bị trục trắc
thì sẽ có máy Server khác thay thế để giúp nhận dữ liệu thay thế cho Server bị trục trặc
đó, giúp cho việc truyền tải không bị ngừng do máy Server bị lỗi đó gây ra.
Cân bằng tải Web Server là phần quan trọng nhất trong quy trình xây dựng
Website theo kiến trúc mở rộng. Một trang Web được cân bàng tải tốt sẽ tránh được
tình trạng tắc nghẽn Server, ln trả về yêu cầu của người dùng trong khoảng thời gian
ngắn nhất, có nhiều kỹ thuật để thực hiện cân bằng tải cho Server, một trong những kỹ
thuật thường được đề cập rộng rãi trên Internet là sử dụng DNS (Domain Name
System). Là một phần của cân bằng tải toàn cầu, DNS Server sẽ chứa thông tin về địa
chỉ của rất nhiều Host dưới một cái tên Host duy nhất. Khi người dùng truy cập vào
Host bằng tên này, DNS sẽ trả về các Host theo thứ tự quay vòng, như vậy người dùng

khác nhau sẽ truy cập vào các địa chỉ khác nhau dưới cùng một tên.
5.2. Lợi ích cân bằng tải
- Tăng khả năng đáp ứng, tránh tình trạng quá tải trên máy chủ, đảm bảo tính linh hoạt
và mở rộng cho hệ thống.

Sinh viên: Mạnh Trọng Lượng – Lớp 51K2 – Khoa CNTT

21


×