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

NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ KỸ THUẬT LOAD BALANCING CHO ỨNG DỤNG WEB XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY

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 (9.56 MB, 97 trang )

BỘ GIÁO DỤC và ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NÔNG LÂM THÀNH PHỐ HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
*********

KHÓA LUẬN TỐT NGHIỆP
NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ
KỸ THUẬT LOAD BALANCING CHO ỨNG DỤNG WEB
XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY

Ngành:

Công nghệ thông tin

Niên khoá:

2008 – 2012

Lớp:

DH08DT

Giáo viên HD:

TS. Phạm Văn Tính

Sinh viên thực hiện: Lâm Thành Phát
Trần Công Lý

TP.HỒ CHÍ MINH, Tháng 08 năm 2012



BỘ GIÁO DỤC và ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NÔNG LÂM TP HCM
KHOA CÔNG NGHỆ THÔNG TIN
*********

NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ
KỸ THUẬT LOAD BALANCING CHO ỨNG DỤNG WEB
XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY

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

Sinh viên thực hiện

TS. PHẠM VĂN TÍNH

LÂM THÀNH PHÁT
TRẦN CÔNG LÝ

Tháng 08/2012

ii


LỜI CẢM ƠN
Chúng tôi xin gửi lời biết ơn đến Thầy Phạm Văn Tính, người đã truyền đạt
nhiều kiến thức, luôn giúp đỡ và tận tình hướng dẫn chúng tôi trong suốt quá trình
nghiên cứu và hoàn thành khóa luận. Trong những giờ học của Thầy, ngoài việc
truyền dạy kiến thức, Thầy còn truyền dạy cho chúng tôi nhiều kinh nghiệm sống và
nhiều kiến thức ở các lĩnh vực khác.

Xin chân thành cảm ơn Thầy Phan Vĩnh Thuần, thầy giáo đã dạy chúng tôi
hai môn học “Hệ điều hành cơ bản” và “Hệ điều hành nâng cao”. Nhờ những kiến
thức này, chúng tôi có thể hoàn thành khóa luận này.
Gửi lời cảm ơn đến cô Nhi và cô Trâm ở phòng giáo vụ Khoa đã tạo điều
kiện cho chúng tôi hoàn thành khóa luận này.
Chân thành cảm ơn!
Lâm Thành Phát
Trần Công Lý

iii


TÓM TẮT
Người sử dụng bây giờ yêu cầu một ứng dụng phải có khả năng đáp ứng
nhanh. Nếu một ứng dụng xử lý quá chậm sẽ không được người sử dụng quan tâm
đến. Đặc biệt là các ứng dụng web. Hiện nay, các phần mềm đang dịch chuyển dần
sang nền tảng web để tăng tính linh động khi người sử có thể di chuyển tùy ý.
Vấn đề đặt ra là làm sao một máy chủ dành cho ứng dụng web có thể đáp ứng
nhanh yêu cầu của nhiều người dùng đồng thời.
Load balancing là một giải pháp đã được sử dụng rộng rãi nhằm tăng khả
năng xử lý ứng dụng web. Trong luận văn này, chúng tôi tiến hành nghiên cứu về
load balancing để triển khai một ứng dụng web cụ thể.
Bên cạnh đó, chúng tôi phát triển kịch bản để kiểm tra hiệu suất của ứng dụng
khi tiến hành load balancing. Dựa trên các kết quả thu được sau các bài test sẽ đưa ra
đánh giá sự hiệu quả của kĩ thuật Load balancing.

iv


MỤC LỤC

Trang
LỜI CẢM ƠN ............................................................................................................ iii 
TÓM TẮT .................................................................................................................. iv 
MỤC LỤC................................................................................................................... v 
DANH SÁCH CÁC HÌNH ...................................................................................... viii 
DANH SÁCH CÁC BIỂU ĐỒ .................................................................................. ix 
Chương 1 MỞ ĐẦU.................................................................................................... 1 
Chương 2 TỔNG QUAN ............................................................................................ 3 
2.1 Server load balancing ........................................................................................ 3 
2.1.1 Khái niệm .................................................................................................... 3 
2.1.2 Ưu điểm của load balancing ........................................................................ 3 
2.1.3 Các công nghệ khác .................................................................................... 4 
2.2 Cấu hình giữa Apache và Tomcat ..................................................................... 5 
2.2.1 AJP Connector............................................................................................. 5 
2.2.2 Máy chủ Tomcat (Tomcat Workers) ........................................................... 7 
2.2.3 Load Balancing ......................................................................................... 12 
2.3 Tomcat Clustering ........................................................................................... 15 
2.3.2 Mô hình Tomcat Clustering ...................................................................... 16 
2.3.3 Quản lý Sessions: ...................................................................................... 19 
2.3.4 Cấu hình nhiều Tomcat cùng hoạt động trên một máy chủ: ..................... 20 
2.3.5 Chia sẻ session: ......................................................................................... 22 
2.4 Performance test .............................................................................................. 28 
2.4.1 Giới thiệu................................................................................................... 28 
2.4.2 Tính cấp thiết ............................................................................................. 28 
2.4.3 Các yếu tố chính ........................................................................................ 29 
2.4.4 Phân loại .................................................................................................... 30 
2.4.5 Một số ứng dụng thực hiện ....................................................................... 30 
2.4.6 Workflow Testing ..................................................................................... 31 

v



2.5 JMeter .............................................................. Error! Bookmark not defined. 
2.5.1 Các khả năng chính có trong JMeter ......................................................... 31 
2.5.2 Các thành phần trong JMeter .................................................................... 31 
2.5.3 Hạn chế của JMeter ................................................................................... 32 
2.5.4 Cài đặt ....................................................................................................... 33 
2.5.5 Sử dụng JMeter ......................................................................................... 34 
2.5.6 JMeter Proxy ............................................................................................. 37 
2.5.7 Xây dựng một hệ thống phục vụ kiểm thử ................................................ 38 
2.5.8 Theo dõi tài nguyên sử dụng của máy chủ thông qua Tomcat server ....... 39 
2.5.9 Sử dụng dữ liệu người dùng ...................................................................... 41 
2.5.10 Sử dụng JMeter Plugin để theo dõi server .............................................. 42 
2.5.11 Trích xuất giá trị từ response................................................................... 43 
Chương 3 NỘI DUNG VÀ PHƯƠNG PHÁP .......................................................... 45 
3.1 Nội dung .......................................................................................................... 45 
3.2 Mục tiêu ........................................................................................................... 45 
3.3 Các mô hình triển khai..................................................................................... 45 
3.3.1 Giới thiệu ứng dụng .................................................................................. 45 
3.3.2 Môi trường triển khai kiểm thử ................................................................. 45 
3.3.3 Mô hình kiểm thử ...................................................................................... 46 
3.3.4 Danh sách các bài kiểm thử....................................................................... 48 
3.3.5 Điều kiện đánh giá..................................................................................... 50 
3.4 Tạo test plan với JMeter .................................................................................. 50 
3.4.1 Qui trình công việc .................................................................................... 50 
3.4.2 Qui trình công việc được giả lập ............................................................... 51 
3.4.3 Tạo test plan .............................................................................................. 51 
3.4.4 Vấn đề khó khăn khi thực hiện.................................................................. 53 
3.4.5 Phương pháp xử lý .................................................................................... 53 
Chương 4 KẾT QUẢ VÀ THẢO LUẬN ................................................................. 59 

4.1 Kết quả kiểm thử hiệu suất .............................................................................. 59 
4.1.1 Bài 1 .......................................................................................................... 59 
4.1.2 Bài 2 .......................................................................................................... 60 

vi


4.1.3 Bài 3 .......................................................................................................... 63 
4.1.4 Bài 4 .......................................................................................................... 64 
4.1.5 Bài 5 .......................................................................................................... 66 
4.1.6 Bài 6 .......................................................................................................... 67 
4.1.7 Bài 7 .......................................................................................................... 70 
4.1.8 Bài 8 .......................................................................................................... 71 
4.2 Phân tích .......................................................................................................... 73 
Chương 5 KẾT LUẬN VÀ ĐỀ NGHỊ...................................................................... 74 
5.1 Kết luận:........................................................................................................... 75 
5.2 Đề nghị: ........................................................................................................... 76 
Phụ lục CÁC BƯỚC TẠO JMETER TEST PLAN.................................................. 77 
TÀI LIỆU THAM KHẢO......................................................................................... 87 

 

vii


DANH SÁCH CÁC HÌNH
Trang
Hình 2.1 Mô hình hoạt động Apache + Tomcat ......................................................... 5 
Hình 2.2 Load balancing Tomcat với Apache .......................................................... 15 
Hình 2.3 Mô hình Tomcat Clustering ....................................................................... 16 

Hình 2.4 Sticky sessions Tomcat .............................................................................. 17 
Hình 2.5 Chia sẻ session của Tomcat ....................................................................... 23 
Hình 2.6 Cơ chế hoạt động Server agent. ................................................................. 43 
Hình 3.1 Mô hình thử nghiệm 1 ................................................................................ 46 
Hình 3.2 Mô hình thử nghiệm 2 ................................................................................ 47 
Hình 3.3 Mô hình thử nghiệm 3 ................................................................................ 47 

 

viii


DANH SÁCH CÁC BIỂU ĐỒ
Trang
Bài test 1
Biểu đồ 4.1 ResponseTime và V-user....................................................................... 59 
Biểu đồ 4.2 ResponseTime code ............................................................................... 60 
Biểu đồ 4.3 ResponseTime Over Time ..................................................................... 60 
Bài test 2
Biểu đồ 4.4 ResponseTime và V-user....................................................................... 61 
Biểu đồ 4.5 ResponseTime code ............................................................................... 61 
Biểu đồ 4.6 ResponseTime Over Time ..................................................................... 62 
Bài test 3
Biểu đồ 4.7 ResponseTime và V-user....................................................................... 63 
Biểu đồ 4.8 ResponseTime code ............................................................................... 63 
Biểu đồ 4.9 ResponseTime Over Time ..................................................................... 64 
Bài test 4
Biểu đồ 4.10 ResponseTime và V-user..................................................................... 64 
Biểu đồ 4.11 ResponseTime code ............................................................................. 65 
Biểu đồ 4.12 ResponseTime Over Time ................................................................... 65 

Bài test 5
Biểu đồ 4.13 ResponseTime và V-user..................................................................... 66 
Biểu đồ 4.14 ResponseTime code ............................................................................. 67 
Biểu đồ 4.15 ResponseTime Over Time ................................................................... 67 
 

ix


Bài test 6
Biểu đồ 4.16 ResponseTime và V-user..................................................................... 68 
Biểu đồ 4.17 ResponseTime code ............................................................................. 68 
Biểu đồ 4.18 ResponseTime Over Time ................................................................... 69 
Bài test 7
Biểu đồ 4.19 ResponseTime và V-user..................................................................... 70 
Biểu đồ 4.20 ResponseTime code ............................................................................. 70 
Biểu đồ 4.21 ResponseTime Over Time ................................................................... 71 
Bài test 8
Biểu đồ 4.22 ResponseTime và V-user..................................................................... 71 
Biểu đồ 4.23 ResponseTime code ............................................................................. 72 
Biểu đồ 4.24 ResponseTime Over Time ................................................................... 72 
 

x


 

Chương 1
MỞ ĐẦU

Chúng ta đang chứng kiến sự phát triển vượt bậc của nền khoa học công nghệ
- đặc biệt là công nghệ thông tin. Máy tính đã giúp con người rất nhiều từ tối ưu hóa
công việc, giảm thời gian làm việc, tăng hiệu suất và mang lại hiệu quả cao.
Với tình hình phát triển như hiện nay thì hầu hết các cơ quan, tổ chức đều cần
một hệ thống máy chủ (Server) chứ không phải chỉ một vài máy tính con đơn lẻ nữa.
Máy chủ về bản chất cũng là một máy tính nhưng có cấu hình, tính năng và
các chức năng lớn hơn hẳn các máy tính thông thường. Nói chung máy chủ là một
máy tính có thể cung cấp các dịch vụ như là: mail, database, Web, Ftp, File
service,…
Thế nhưng thực tế khi hoạt động các máy chủ ít khi quản lý tốt các tài nguyên
hiện có. Ví dụ: Chỉ sử dụng 20% – 30% tài nguyên máy chủ hoặc trong một hệ
thống có máy sử dụng đến 70% - 80% tài nguyên thì máy khác lại không được sử
dụng đến… Thực tế đã có nhiều biện pháp được đưa ra nhằm quản lý tốt tài nguyên
hệ thống. Giải pháp phổ biến hiện nay thực hiện Load balancing.
Trong thời đại hiện nay, tốc độ của ứng dụng web đồng nghĩa với doanh thu
đạt được. Theo các khảo sát mới nhất, thì người dùng sẽ bắt đầu mất kiên nhẫn với
những ứng dụng web tốn thời gian quá 5 giây để tải. Một vấn đề quan trọng đặt ra là
tăng hiệu suất của một ứng dụng web.
Trong luận văn này, chúng tôi tiến cấu hình load balacing trên các máy này.
Sau đó sẽ thử nghiệm các mô hình khác nhau và đưa ra các đánh giá về hiệu suất
trên mỗi mô hình. Từ đó đưa ra các ý kiến để nâng cao hiệu suất cho một máy chủ
web.
Mục tiêu đề tài: “Nghiên cứu triển khai và đánh giá sự hiệu quả kỹ thuật
Load Balancing cho ứng dụng web xây dựng trên cổng thông tin Liferay”
Nội dung nghiên cứu:
o Các mô hình triển khai load balancing từ các cấp độ
-

Hệ điều hành (Windows, Linux)


-

Ứng dụng (Apache + Tomcat)


NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ KỸ THUẬT LOAD BALANCING
CHO ỨNG DỤNG WEB XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY

-

Cấu hình mạng
Gói tin
Kết nối

o Triển khai load balancing cho Liferay kết hợp với Apache
o Tiến hành đánh giá hiệu suất từ các mô hình
-

Hiệu suất khi sử dụng Apache kết hợp Tomcat

-

Hiệu suất khi thực hiện load balancing 2 Tomcat với Apache trên
cùng một máy chủ

GVHD: TS. Phạm Văn Tính

2

SVTH: Thành Phát – Công Lý



 

Chương 2
TỔNG QUAN
2.1 Server load balancing
Cơ sở hạ tầng CNTT đang đóng một vai trò ngày càng quan trọng trong sự
thành công của xã hội. Mạng lưới các máy chủ hiện nay thường xuyên được sử dụng
để lưu trữ ERP, thương mại điện tử và vô số các ứng dụng khác. Nền tảng của các
trang web này, các chiến lược kinh doanh, cơ sở hạ tầng tốt sẽ cung cấp hiệu suất
cao, tính sẵn sàng cao, và các giải pháp an toàn và khả năng mở rộng để hỗ trợ tất cả
các ứng dụng.
Tuy nhiên, sự sẵn có của các ứng dụng này thường bị đe dọa bởi quá tải mạng
cũng như sự cố xảy ra trên các máy chủ và các ứng dụng. Sử dụng tài nguyên hệ
thống không cân đối dẫn đến có hệ thống đang quá tải với các yêu cầu, trong khi hệ
thống khác vẫn nhàn rỗi. Server Load Balancing là một giải pháp giúp sử dụng cân
đối các nguồn tài nguyên và giúp tăng hiệu suất làm việc cho hệ thống mạng.
2.1.1 Khái niệm
Load balancing là một mô hình luận lí mạng máy tính để phân phối khối
lượng công việc thông qua nhiều máy tính hoặc đường truyền mạng, bộ xử lý trung
tâm (CPU), ổ đĩa hay các tài nguyên khác nhằm sử dụng tối ưu nguồn tài nguyên,
giảm thời gian đáp ứng, tránh tình trạng quá tải. Việc sử dụng nhiều thành phần
trong Load balancing thay vì một thành phần có thể làm tăng độ tin cậy thông qua
dự phòng.
Load balancing có thể được cung cấp bằng các phần mềm hoặc phần cứng.
Có một phương pháp thay thế Load balancing mà không cần dùng phần cứng
hay phần mềm được gọi là round robin DNS. Trong kĩ thuật này nhiều địa chỉ IP
được kết hợp với một tên miền duy nhất
Persistence: còn biết đến như là “sticky”, persistence giữ một người dùng cụ

thể với một máy chủ đã định hướng lần đầu tiên. Nó sẽ luôn luôn giữ cho các truy
cập của người dùng vào cùng một máy chủ.
2.1.2 Ưu điểm của load balancing


NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ KỸ THUẬT LOAD BALANCING
CHO ỨNG DỤNG WEB XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY

Nó rõ ràng là một giải pháp tốt để quản lý các vấn đề dự phòng, khả năng mở
rộng. Các trang web ngày càng có giá trị, thời gian chờ lâu hoặc “chết” sẽ gây thiệt
hại lớn. Server load balancing có 3 lợi ích chính trực tiếp giải quyết các mối quan
tâm của các trang web.
a. Tính linh hoạt
Server load balancing cho phép bổ sung và loại bỏ các máy chủ bất cứ lúc
nào, và có tác động ngay lập tức. Điều này cho phép bảo trì máy tính mà không làm
trang web bị gián đoạn.
b. Tính sẵn sàng cao
Server load balancing có thể kiểm tra trạng thái của một máy chủ, điều hướng
các yêu cầu đến nơi khác khi máy chủ ngừng phản hồi và điều hướng trở lại khi máy
chủ làm việc lại. Việc này hoàn toàn tự động mà không cần sự can thiệp của quản trị
viên
Ngoài ra, load balancing thường có cấu hình dự phòng, sử dụng nhiều hơn
một thành phần trong trường hợp có một thành phần bị lỗi.
c. Khả năng mở rộng
Khi server load balancing phân tải giữa các máy chủ, tất cả những gì cần thiết
để nâng cao năng suất một trang web là thêm nhiều máy chủ vào. Điều này có thể rất
kinh tế khi sử dụng máy chủ nhỏ hoặc trung bình sẽ ít tốt kém hơn máy chủ cao cấp.
2.1.3 Các công nghệ khác
Có nhiều công nghệ khác giải quyết các vấn đề tương tự Server load
balancing theo những cách khác. Cũng có những công nghệ giải quyết những vấn đề

mà server load balancing không hỗ trợ, nhưng theo một cách tương tự.
a. Firewall Load Balancing
Firewall Load Balancing (FWLB) được phát triển để khắc phục một số hạn
chế của công nghệ firewall
b. Global Server Load Balancing
Có cùng khái niệm như SLB, nhưng nó phân tải đến các địa điểm khác nhau.
SLB làm việc trên LAN, trong khi GSLB làm việc trên WAN.
c. Clustering

GVHD: TS. Phạm Văn Tính

4

SVTH: Thành Phát – Công Lý


NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ KỸ THUẬT LOAD BALANCING
CHO ỨNG DỤNG WEB XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY

Clustering cung cấp các giải pháp tương tự SLB, cụ thể là tính sẵn sàng và
khả năng mở rộng tốt hơn. Clustering liên quan nhiều đến giao thức phần mềm chạy
trên một vài máy chủ tập trung và chia sẻ gánh nặng. Thay vì nằm phía trước các
máy chủ và thao tác các gói tin. Điều này liên quan đến việc tích hợp khá chặt chẽ
các phần mềm máy chủ. Load balancing ít quan tâm đến việc tương tác giữa các
máy chủ như clustering.
2.2 Cấu hình giữa Apache và Tomcat
Trên thực tế, hầu hết cấu hình của Tomcat là cấu hình giữa Apache và
Tomcat, bởi vì nhằm đảm bảo tính nhanh chóng và ổn định của Website, những nội
dung tĩnh được Apache xử lý và những nội dung động như JSP/Serverlet được
chuyển cho Tomcat. Tomcat và Apache có thể kết hợp để cùng hoạt động với nhau

thông qua modoule JK Connector. JK Connector sử dụng Apache Jserv Protocol
(AJP) để giao tiếp giữa Tomcat và Apache.
2.2.1 AJP Connector
Để Apache và Tomcat có thể hoạt động với nhau, người ta sử dụng giao thức
AJP, và trên Apache, đó là các modoules mod_jk hoặc mod_proxy. Cả hai đều được
viết dựa trên ngôn ngữ C/C++, còn Tomcat sử dụng modoule AJP Connector được
viết bằng ngôn ngữ Java.
Hình sau để mô phỏng các hoạt động giữa các moudoules mod_jk hoặc
mod_proxy của Apache với Tomcat. Apache sẽ nhận các yêu cầu của JSP hoặc
servlet và sử dụng các modoule của mình để chuyển các yêu cầu đó qua giao thức
AJP của Tomcat, đương nhiên, nội dung trả về Apache cũng sẽ được gởi thông qua
giao thức AJP.
Static content
Apache web server
 
  

Mod_jk

Tomcat instance

Dynamic content
Hình 2.1 Mô hình hoạt động Apache + Tomcat

GVHD: TS. Phạm Văn Tính

5

SVTH: Thành Phát – Công Lý



NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ KỸ THUẬT LOAD BALANCING
CHO ỨNG DỤNG WEB XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY

AJP sử dụng định dạng nhị phân để truyền tải dữ liệu giữa Web server và
Tomcat, một socket sẽ được mở ra để sử dụng cho tất cả các dữ liệu truyền tải. Dưới
đây là cấu trúc của một gói tin AJP:
Byte#

0

1

Contents

0x12

0x34

2

3

Data length

4 (length + 3)
Actual data payload

AJP packet structure from the Web server side to the Servlet container
Byte#


0

1

2

Contents

A

B

Data length

3

4 (length + 3)
Actual data payload

AJP packet structure from the Servlet container side to the Web server
Chúng ta có thể thấy, gói tin nhị phân sẽ được bắt đầu bằng chuỗi 0x1234,
một chuỗi 2 bytes chứa thông tin độ dài gói tin và sau đó là nội dung của gói tin yêu
cầu. Khi gói tin được trả lại từ Tomcat, nó trả về bắt đầu bằng chữ AB, độ dài gói tin
và nội dung của gói tin.
Công việc thật sự của giao thức là:
-

Tối ưu hóa tốc độ truyền tải dữ liệu.


-

Hỗ trợ SSL, mã hóa dữ liệu.

-

Hỗ trợ cấu hình Load Balancing bằng cách chuyển tiếp yêu cầu đến 6
servers Tomcat khác nhau.

Một cách tối ưu của giao thức AJP là giảm thiểu các kết nối đến Web server
bằng cách sử dụng một kết nối ổn định với Tomcat. Nó sẽ giảm thiểu việc quá tải
khi mở quá nhiều cổng kết nối cho mỗi yêu cầu, và cách hoạt động thì cũng tương tự
1 connection pool.
Cấu hình AJP:
AJP Connector

redirectPort="8443" />

 

GVHD: TS. Phạm Văn Tính

6

SVTH: Thành Phát – Công Lý


NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ KỸ THUẬT LOAD BALANCING
CHO ỨNG DỤNG WEB XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY


2.2.2 Máy chủ Tomcat (Tomcat Workers)
Một máy chủ Tomcat sẽ xử lý tất cả những nội dung động của ứng dụng web.
Tuy nhiên, để sử dụng máy chủ Tomcat như một cluster để load balancing thì mỗi
máy chủ phải định nghĩa một hostname riêng hoặc một IP và port riêng cho mình.
Những lý do mà ta cần nhiều máy chủ Tomcat hoạt động như:
-

Khi ta muốn nhiều ứng dụng Web được xử lý bởi nhiều máy chủ
Tomcat được đặt trên cùng 1 server và hoạt động cùng 1 Web server
như Apache.

-

Khi máy chủ hoạt động với nhiều Virtual hosts khác nhau.

-

Khi ta muốn đáp ứng nhiều yêu cầu hơn khi đã đạt đến mức giới hạn
trên cùng 1 máy chủ vật lý.

Để làm cho Apache hoạt động cùng với Tomcat. Ta phải tạo một file với tên
gọi workers.properties với các thông tin chi tiết như sau:
Danh sách các Workers
Thuộc tính
work.list

Chú thích
Liệt kê các danh sách workers có thể hoạt động chung với Apache
Kiểu hoạt động của Worker


Thuộc tính

Chú thích

ajp13

Để Apache biết rằng đang hoạt động chung với một server Tomcat

lb

Được sử dụng cho load balancing

status

Được sử dụng để cho ta thông tin về tải của các máy chủ Tomcat mà
từ đó có thể phân bổ cho hoạt động tốt hơn.

jni

Sử dụng với các process, máy chủ Tomcat sẽ chuyển các yêu cầu vào
process để xử lý bằng cách sử dụng JNDI

ajp12

Hoạt động với các Worker hỗ trợ giao thức AJP 1.2

 

GVHD: TS. Phạm Văn Tính


7

SVTH: Thành Phát – Công Lý


NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ KỸ THUẬT LOAD BALANCING
CHO ỨNG DỤNG WEB XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY

Những thuộc tính khác của Worker
Thuộc tính

Chú thích

worker.test1.type

Thông báo kiểu hoạt động của worker

worker.test1.host

Thông tin host mà máy chủ Tomcat đang hoạt
động

worker.test1.port

Cổng để giao thức AJP 1.3 của Tomcat đang sử
dụng (mặc định thì là 8009)

worker.test1.


Số lượng connections được sử dụng cho worker

connection_pool_size

để giữ chúng trong một connection pool.

worker.test1.

Số lượng connections thấp nhất được giữ trong

connection_pool_minsize

một connection pool.

worker.test1.

Thời gian tồn tại của một connections trong

connection_pool_timeout

connection pool.

worker.test1.mount

Đường dẫn được worker làm việc, ta cũng có thể
chỉ định bằng JkMount trong file httpd.conf

worker.test1.retries

Số lần mod_jk sẽ thử lại khi worker trả về lỗi.


worker.test1.

Quản lý thời gian worker sẽ trả lời trên một socket

socket_timeout

trước khi nó được quyết định là lỗi.

worker.test1.

Socket có được keep alive hay không.

socket_keepalive
worker.test1.

Một con số để quyết định xem mức độ quan trọng

lbfactor

của worker khi hoạt động với nhiều máy chủ
Tomcat khác nhau.

 

GVHD: TS. Phạm Văn Tính

8

SVTH: Thành Phát – Công Lý



NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ KỸ THUẬT LOAD BALANCING
CHO ỨNG DỤNG WEB XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY

Những thuộc tính của Worker trong load balancing
Thuộc tính
worker.bal1.

Chú thích
Danh sách các worker hoạt động load balancing

balance_workers
worker.bal1.lock

Các hoạt động của load balancing O (Chủ động)
hoặc P (Bị động)

worker.bal1.method

Phương thức hoạt động giữa các load balancer R
(Requests), T (Traffic), B (Busy-ness)
R = Các workers sẽ được sử dụng dựa trên số gói
tin đã được chuyển qua.
T = Các workers sẽ được sử dụng dựa trên dung
lượng đã được chuyển qua.
B = Các workers sẽ được sử dụng dựa trên mức độ
xử lý của gói tin đã được chuyển qua.

worker.bal1.secret


Quy định mật khẩu giữa các workder

worker.bal1.

Đảm bảo việc mỗi sessionID chỉ hoạt động đúng

sticky_session

trên máy chủ Tomcat đã được sử dụng để xử lý
sessionID trước đó.

worker.bal1.

Sử dụng cho việc fail-over.

sticky_session_force

 

GVHD: TS. Phạm Văn Tính

9

SVTH: Thành Phát – Công Lý


NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ KỸ THUẬT LOAD BALANCING
CHO ỨNG DỤNG WEB XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY


Ví dụ
Ví dụ chỉ có 1 worker worker.list = worker1
hoạt động

Ví dụ load balancing

worker.worker1.type = ajp13
worker.worker1.host = 192.168.0.1
worker.worker1.port = 9009
worker.worker1.connection_pool_size = 5
worker.worker1.connection_pool_timeout = 300
worker.list = loadbal1,stat1
worker.tomcatA.type = ajp13
worker.tomcatA.host =192.168.0.1
worker.tomcatA.port = 8009
worker.tomcatA.lbfactor = 10
worker.tomcatB.type = ajp13
worker.tomcatB.host =192.168.0.2
worker.tomcatB.port = 8009
worker.tomcatB.lbfactor = 10
worker.tomcatC.type = ajp13
worker.tomcatC.host =192.168.0.3
worker.tomcatC.port = 8009
worker.tomcatC.lbfactor = 10
worker.loadbal1.type = lb
worker.loadbal1.sticky_seesion = 1
worker.loadbal1.balance_workers = tomcatA,
tomcatB, tomcatC
worker.stat1.type= status


 

GVHD: TS. Phạm Văn Tính

10

SVTH: Thành Phát – Công Lý


NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ KỸ THUẬT LOAD BALANCING
CHO ỨNG DỤNG WEB XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY

Những thông số có thể được cấu hình trong file httpd.conf của Web server
Apache
Thông số cấu hình Apache mod_jk
Thông số

Chú thích

JkWorkerFile

Thông báo cho mod_jk biết nơi để tìm file workers.properties

JkLogFile

Thông báo cho mod_jk biết nơi sẽ ghi các file logs

JkLogLevel

Chỉ định mức độ log thông tin (info, error hoặc debug)


JkRequestLog

Thông tin cần log

Format

JkMount

%b hoặc %B

Số bytes đã được trao đổi.

%H

Giao thức request

%m

Phương thức request

%p

Cổng được request trên server

%r

Dòng đầu tiên của request

%T


Thời gian request

%U

URL được request (khi đã lược bỏ các thông số

%v or %V

Tên server

%w

Tên của worker

%R

Đường đi của session

Quản lý các URL phù hợp để chuyển qua các workers

Ví dụ
JkWorkerFile

conf/worker.properties

JkLogFile

/var/logs/httpd/mod_jk.log


JkLogLevel

debug

JkRequestLogFo

%w

%U

%T"

rmat
JkMount

/examples/jsp/* worker1

 

GVHD: TS. Phạm Văn Tính

11

SVTH: Thành Phát – Công Lý


NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ KỸ THUẬT LOAD BALANCING
CHO ỨNG DỤNG WEB XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY

2.2.3 Load Balancing

Module mod_proxy có thể được sử dụng để phục vụ load balancing, tuy
nhiên, chúng ta sẽ phân tích một cách chi tiết hơn ở phần sau. Phần này ta chỉ phân
thích mod_jk phục vụ cho việc load balancing mà không quan tâm đến chia sẻ
sessions, bởi vì mod_jk sử dụng thuật toán xoay vòng. Mỗi một worker Tomcat sẽ
được cấu hình một giá trị dựa trên mức độ xử lý của mình, giá trị đó được cấu hình
trong file workers.properties, nhờ giá trị đó mà mod_jk sẽ phân bổ các request.
Thuật ngữ không quan tâm đến việc chia sẻ sessions được gọi là seamless
session hoặc sticky session. Khi một request được tiếp nhận bởi một máy chủ
Tomcat, thì những request về sau cùng session cũng sẽ hoạt động trên đúng máy chủ
Tomcat đó.
Những bước cấu hình trên sẽ giúp ta có các máy chủ Tomcat cùng hoạt động
trên một máy chủ vật lý.
Bước đầu tiên cầu thay đổi giá trị CATALINE_HOME trên mỗi file
startup.bat (Windows) hoặc startup.sh (Unix)
CATALINA_HOME

set CATALINA_HOME=c:\liferay\tomcatA

Mỗi một máy chủ Tomcat sẽ được thay đổi cho phù hợp.
Quy định mỗi một máy chủ Tomcat hoạt động trên một cổng AJP khác nhau
(server.xml)
AJP Connector port

redirectPort="8443" />

Những máy chủ Tomcat khác có thể sử dụng cổng 8109, 8209 chẳng hạn
Để tránh trường hợp đụng đô cổng khi khởi động cũng như khi tắt các máy
chủ Tomcat thì ta cũng phải cấu hình (server.xml)
server


<Server port="8005" shutdown="SHUTDOWN" debug="0">

port

Những máy chủ Tomcat khác có thể sử dụng cổng 8105, 8205 chẳng hạn

 

GVHD: TS. Phạm Văn Tính

12

SVTH: Thành Phát – Công Lý


NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ KỸ THUẬT LOAD BALANCING
CHO ỨNG DỤNG WEB XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY

Bởi vì tất cả các máy chủ Tomcat đều hoạt động thông qua giao thức HTTP,
do đó, ta phải thay đổi cho phù hợp. (server.xml)
disable



Và một bước quan trọng để load balancing là phải quy định giá trị jvmRoute.
Giá trị jvmRoute là một thuộc tính để xác định danh tính của mỗi máy chủ Tomcat.
Giá trị này phải là duy nhất với mỗi máy chủ khác nhau và được sử dụng trong file
workers.properties để cho Apache có thể hiểu được (server.xml)
jvmRoute

jvmRoute="tomcatA">

Trong file cấu hình httpd.conf của Apache, bạn phải chắc rằng đã gọi
modoule mod_jk
httpd.conf

JkWorkersFile

conf/worker.properties

JkMount

/examples/jsp/*

JkMount


/jkstatus/

bal1

stat1

worker.properties worker.list = loadbal1,stat1
worker.tomcatA.type = ajp13
worker.tomcatA.host =192.168.0.1
worker.tomcatA.port = 8009
worker.tomcatA.lbfactor = 10
worker.tomcatB.type = ajp13
worker.tomcatB.host =192.168.0.1
worker.tomcatB.port = 8010
worker.tomcatB.lbfactor = 10
worker.tomcatC.type = ajp13
worker.tomcatC.host =192.168.0.1
worker.tomcatC.port = 8011
worker.tomcatC.lbfactor = 10
worker.loadbal1.type = lb
worker.loadbal1.sticky_seesion = 1
worker.loadbal1.balance_workers = tomcatA,
tomcatB, tomcatC
worker.stat1.type= status

GVHD: TS. Phạm Văn Tính

13

SVTH: Thành Phát – Công Lý



NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ KỸ THUẬT LOAD BALANCING
CHO ỨNG DỤNG WEB XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY

Để test load balancer hoạt động ổn định hay chưa, ta tạo một file test JSP và
đặt nó vào trong thư mục webapps/examples/jsp của mỗi máy chủ Tomcat.

Và test bằng URL sau:
-

http://local/examples/jsp/index.jsp

-

http://localhost/jkstatus

Giao diện quản lý các máy chủ Tomcat.
 


NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ SỰ HIỆU QUẢ KỸ THUẬT LOAD BALANCING
CHO ỨNG DỤNG WEB XÂY DỰNG TRÊN CỔNG THÔNG TIN LIFERAY

2.3 Tomcat Clustering
Thuật nghữ Tomcat Clustering có nghĩa là nhiều máy chủ Tomcat hoạt động
cùng một lúc. Tuy nhiên, nếu một máy chủ Tomcat bị trục trặc thì những máy chủ
khác sẽ thay thế và về phía người dùng, không có bất cứ trục trặc nào xảy ra cả.
Clustering trong Tomcat để kích hoạt một loạt máy chủ Tomcat trên mạng
LAN để cho người dùng sử dụng như 1 máy chủ Tomcat duy nhất. Mô hình này cho

phép ta xử lý nhiều requests hơn nữa và cũng giúp ta quản lý được nếu một máy chủ
bị treo.
Without load balancing

Load balancing

Apache

Apache

Mod_proxy
Or mod_jk

Mod_proxy
Or mod_jk

AJP

AJP

AJP

AJP

Tomcat

Tomcat

Tomcat


Tomcat

Hình 2.2 Load balancing Tomcat với Apache
Những requests đến thì được phân phối đến tất cả các servers, vì vậy, một
ứng dụng Web có thể xử lý nhiều người dùng cùng lúc. Mô hình này được gọi là
horizontal scaling (tỉ lệ ngang) giúp ta có thể tận dụng tối ưu phần cứng hiện có mà
không cần phải nâng cấp phần cứng.
Có nhiều mô hình khác nhau trong clustering như là Master – Backup, FailOver, và Tomcat thì sử dụng cả hai mô hình đó trong lĩnh vực load balancing.
 

GVHD: TS. Phạm Văn Tính

15

SVTH: Thành Phát – Công Lý


×