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ý