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

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

97 193 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 97
Dung lượng 9,56 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Phạm Văn Tính 2 SVTH: Thành Phát – Công Lý - 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

Trang 1

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

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

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

Trang 2

ii

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

Tháng 08/2012

Trang 3

iii

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ý

Trang 4

iv

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

Trang 5

v

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 

Trang 6

vi

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 

Trang 7

vii

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 

 

Trang 8

viii

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 

 

Trang 9

ix

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 

 

Trang 10

x

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 

 

Trang 11

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)

Trang 12

GVHD: TS Phạm Văn Tính 2 SVTH: Thành Phát – Công Lý

- 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ủ

Trang 13

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

Trang 14

GVHD: TS Phạm Văn Tính 4 SVTH: Thành Phát – Công Lý

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

Trang 15

GVHD: TS Phạm Văn Tính 5 SVTH: Thành Phát – Công Lý

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

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

Apache web server

 

   Tomcat instance Mod_jk

Static content

Dynamic content

Trang 16

GVHD: TS Phạm Văn Tính 6 SVTH: Thành Phát – Công Lý

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:

Contents 0x12 0x34 Data length Actual data payload

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

Contents A B Data length 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

Trang 17

GVHD: TS Phạm Văn Tính 7 SVTH: Thành Phát – Công Lý

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

work.list 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

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

 

Trang 18

GVHD: TS Phạm Văn Tính 8 SVTH: Thành Phát – Công Lý

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

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

connection_pool_size

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

để giữ chúng trong một 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

 

Trang 19

Danh sách các worker hoạt động load balancing

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

sticky_session

Đảm bảo việc mỗi sessionID chỉ hoạt động đúng trên máy chủ Tomcat đã được sử dụng để xử lý sessionID trước đó

worker.bal1

sticky_session_force

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

 

Trang 20

worker.worker1.connection_pool_size = 5 worker.worker1.connection_pool_timeout = 300

Ví dụ load balancing 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

 

Trang 21

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

Format

Thông tin cần log

%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 JkMount Quản lý các URL phù hợp để chuyển qua các workers

Trang 22

GVHD: TS Phạm Văn Tính 12 SVTH: Thành Phát – Công Lý

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 <Connector port="8009" protocol="AJP/1.3"

Trang 23

GVHD: TS Phạm Văn Tính 13 SVTH: Thành Phát – Công Lý

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)

jvmRoute <Engine name="Standalone" defaultHost="localhost"

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

JkMount /examples/jsp/* bal1 JkMount /jkstatus/ 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

Trang 24

Để 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

 

Trang 25

GVHD: TS Phạm Văn Tính 15 SVTH: Thành Phát – Công Lý

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

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, Over, và Tomcat thì sử dụng cả hai mô hình đó trong lĩnh vực load balancing

AJP

Without load balancing Load balancing

Trang 26

GVHD: TS Phạm Văn Tính 16 SVTH: Thành Phát – Công Lý

2.3.2 Mô hình Tomcat Clustering

Hình 2.3 Mô hình Tomcat Clustering

Có hai lớp để kích hoạt clustering là load balancing bên ngoài (frontend) và chia sẻ, đồng bộ hóa trạng thái, session bên trong (backend) Phần bên ngoài sẽ chịu trách nhiệm nhận các requests và chia sẻ chúng đến các máy chủ Tomcat phía trong, trong khi ở phía trong, tất cả phải đảm bảo rằng các sessions chia sẻ với nhau

Một số mô hình load balancing phía ngoài mà ta có thể sử dụng:

- Round-robin DNS (xoay vòng DNS), để việc phân giải tên miền thành một dãi các địa chỉ IP khác nhau

- Load balancing dựa trên phần cứng

- Load balancing dựa trên phần mềm như Pure Load Balancer

- Sử dụng modoule mod_proxyhoặc mod_jk như một load balancer Thông thường, người ta dùng cả phương pháp là load balancing dựa trên phần cứng hoặc là sử dụng Apache như một load balancer Phần trên chúng ta đã đề cập đến phương pháp Stickey Sessions nghĩa là session nào đã được sử dụng thì khi sử dụng lại sẽ chuyển về đúng máy chủ Tomcat xử lý trước đó

STATE/SESSIONS SHARING

BACK-END

In coming requests

LOAD BALANCING FRONT-END

Tomcats server

Trang 27

GVHD: TS Phạm Văn Tính 17 SVTH: Thành Phát – Công Lý

Hình 2.4 Sticky sessions Tomcat

Có một vấn đề xảy ra với phương pháp Sticky Sessions là nếu một máy chủ Tomcat bị trục trặc thì tất cả các sessions trên máy chủ đó sẽ mất đi, nhưng với phương pháp load balancing phía ngoài (load balancing frontend), chúng ta có rất nhiều session để cho phía trong xử lý Mỗi phương pháp có mỗi mức độ hoạt động

và cách cấu hình khác nhau

Mod_proxy và mod_jk cho ta những lựa chọn sau:

- Sticky Sessions mà không cần chia sẻ session: các requests thì được

xử lý bởi máy chủ đã xử lý trước đó, sessionID sẽ làm nhiệm vụ xác định máy chủ nào đã tạo ra nó, xác định máy chủ ở lần xử lý tiếp theo Giải pháp này được sử dụng hầu hết các ứng dụng Web không cần nhiều thông tin người dùng như là: ứng dụng Web giới thiệu công ty,

Session XAJP

Request A Session X

TomcatSession YAJP

Request BSession YRequest C

No session

Trang 28

- Sticky Sessions sử dụng Persistent Session Manager và JDBC để lưu trữ trong cơ sở dữ liệu: Phương pháp này tương tự phương pháp ghi thông tin session ra file, tuy nhiên, thông tin này thay vì được ghi lên file thì được ghi vào cơ sở dữ liệu

- Chia sẻ session trong bộ nhớ: dữ liệu session sẽ được phân bổ cho tất

cả các máy chủ Tomcat nằm trong phân vùng chỉ định sử dụng cluster Tomcat có hai giải pháp cho phương pháp này: chia sẻ tất cả dữ liệu sessions cho các máy chủ Tomcat khác hoặc là chỉ lưu dữ liệu sessions lên một máy chủ backup Phương pháp này đảm bảo việc lưu trữ session, tuy nhiên, nó cũng phức tạp hơn trong cấu hình cũng như cách hoạt động

Trang 29

Tất cả máy chủ Tomcat hoạt động trong cluster thì được xem như một nhóm thông tin Ở máy chủ Tomcat, chúng ta phải sử dụng đến lớp SimpleTcpCluster Tùy theo cách chúng ta muốn quản lý sessions mà ta cấu hình SimpleTcpCluster với một hoặc hai phương pháp quản lý:

- DeltaManager – chia sẻ thông tin sessions cho tất cả máy chủ Tomcat

- BackupManager – chia sẻ thông tin sessions từ máy chính sang một máy dự phòng

SimpleTcpCluster sử dụng Apache Tribes để quản lý thông tin trao đổi trong nhóm các máy chủ Các máy trong nhóm được quản lý bởi Apache Tribes để đảm bảo khi nào máy chủ bị treo và khôi phục lại Apache Tribes còn vài mức độ đảm bảo dữ liệu được chuyển đi giữa các thành viên trong nhóm Khi có một máy chủ cập nhật thông tin về một session mới thì thông tin ngay lập tức được gởi đi đến các máy chủ khác trong nhóm Phương pháp này đảm bảo tính sẵn sàng nhưng lại rất tốn dung lượng mạng và đôi khi lại yêu cầu phần cứng đảm bảo rằng không có điểm chết trong hệ thống mạng

2.3.3 Quản lý Sessions:

Sessions được xem như một đối tượng có thể chứa và tham khảo đến một đối tượng khác, được giữ một phần ở phía client Bởi vì giao thức HTTP là stateless (không trạng thái) nên không có cách nào đơn giản để ứng dụng có thể quản lý được các giao thức truyền tải Ở phía máy chủ, sessions thì được quản lý như sau:

Trang 30

- Nếu trình duyệt không hỗ trợ cookie, thì ta có một phương pháp khác

là URL rewrite – chỉnh sửa lại URL để thông tin session nằm trên URL

2.3.4 Cấu hình nhiều Tomcat cùng hoạt động trên một máy chủ:

Ở mục này, chúng ta sẽ sử dụng 3 máy chủ Tomcat cùng hoạt động và tất cả đều sử dụng phương pháp chia sẻ session Để sử dụng phương pháp này, ta cần yêu cầu ở mỗi máy chủ như sau:

- Có thư mục cấu hình riêng biệt

- Có thư mục tạm riêng biệt

- Có thư mục chứa web riêng biệt

- Cổng để kết nối AJP phải khác nhau

Tạo ba files gọi là startup1.bat, startup2.bat và startup3.bat ở trong thư mục bin của mỗi máy chủ Tomcat Mỗi files thì được cấu hình lại đường dẫn CATALINA_HOME cho phù hợp, sau đó, gọi đến file startup.bat để kích hoạt máy chủ

set CATALINA_HOME=c:\liferay\tomcat1

call startup shutdown # stop1.bat

set CATALINA_HOME=c:\liferay\tomcat1

call shutdown

Và sơ đồ cây thư mục như sau:

Trang 31

Máy chủ File cần chỉnh sửa TCP Ports

(Shutdown, AJP Connector)

Máy chủ 1 \liferay\tomcat1\conf\server.xml 8005, 8009 Máy chủ 2 \liferay\tomcat2\conf\server.xml 8105, 8109 Máy chủ 3 \liferay\tomcat3\conf\server.xml 8205, 8209

Tiếp tục chỉnh giá trị jvmRoute

jvmRoute <Engine name="Catalina"

Trang 32

GVHD: TS Phạm Văn Tính 22 SVTH: Thành Phát – Công Lý

Tiếp tục cấu hình Apache như ta đã cấu hình ở phần trên

workers.properties file worker.list = loadbal1,stat1

worker.tomcat1.type = ajp13 worker.tomcat1.host =192.168.0.1 worker.tomcat1.port = 8009

worker.tomcat1.lbfactor = 10 worker.tomcat2.type = ajp13 worker.tomcat2.host =192.168.0.2 worker.tomcat2.port = 8109

worker.tomcat2.lbfactor = 10 worker.tomcat3.type = ajp13 worker.tomcat3.host =192.168.0.3 worker.tomcat3.port = 8209

worker.tomcat3.lbfactor = 10 worker.bal1.type = lb

worker.bal1.sticky_session = 1 worker.bal1.balance_workers = tomcat1, tomcat2, tomcat3

worker.stat1.type= status httpd.conf updates JkMount /examples/jsp/* bal1

JkMount /jkstatus/ stat1 JkWorkersFile conf/workers.properties

2.3.5 Chia sẻ session:

Trước tiên, ta sẽ cấu hình cho phương pháp chia sẻ session trong memory, chúng ta có hai thành phần cần được cấu hình để kích hoạt việc chia sẻ thông tin session trong memory Thẻ <Cluster> chịu trách nhiệm cho việc phân phối sessions,

nó bao gồm việc gởi đi thông tin sessions mới cho nhóm, kết hợp thông tin các session cục bộ và sessions được gởi đến Thành phần khác là Valve, Valve được sử dụng để giảm lưu lượng bằng cách lọc ra các sessions

Trang 33

Hình 2.5 Chia sẻ session của Tomcat

SimpleTcpCluster được sử dụng để chia sẻ sessions trong bộ nhớ, nó sử dụng Apache Tribes để gởi các thông tin đi bằng multicasts (gói tin heartbeat) đến các máy chủ khác Tất cả các máy chủ phải chạy multicasts gói tin heartbeat, nếu không thì máy chủ đó được xem như đã chết và bị loại khỏi cluster Các máy chủ của cluster được quản lý động trong việc thêm vào và xóa đi

Chúng ta nên sử dụng ít máy chủ Tomcat trong một cluster nếu không sẽ rất tốn bộ nhớ và ảnh hưởng đến băng thông của mạng Nhằm giảm thiểu dữ liệu truyền

Trang 34

GVHD: TS Phạm Văn Tính 24 SVTH: Thành Phát – Công Lý

tải trong mạng, chúng ta nên sử dụng BackupManager (chỉ gởi đến một máy chủ dự phòng) thay vì DeltaManager (gởi đến tất cả máy chủ trong cluster)

Thành phần Chú thích

<Cluster> <Cluster> phải nằm bên trong <Host>, nó thông báo rằng máy chủ

Tomcat sẽ sử dụng phương pháp chia sẻ dữ liệu cho tất cả các ứng dụng

<Manager> Đây là thành phần chính để chúng ta cấu hình DeltaManager hoặc

là BackupManager

<Channel> Channel là một kênh trừu tượng để các máy chủ của nhóm có thể

gởi thông tin qua lại với nhau

<Membership> Thuộc tính này nhằm để chọn mạng vật lý sử dụng trên máy chủ

(nếu máy chủ chỉ có một cổng mang thì chúng ta không cần quan tâm nhiều đến nó) Dịch vụ này dựa trên việc gởi các gói tin multicasts heartbeat nhằm xác định máy chủ nằm trong cluster

<Receiver> Cấu hình việc nhận thông tin qua giao thức TCP

<Sender> Cấu hình việc gởi thông tin qua giao thức TCP

<Transport> Quy định thông tin được gởi đi là song song hoặc đồng thời

<Valve> Thành phần này được sử dụng như một bộ lọc nhằm giảm thiểu

thông tin session gởi đi để tránh quá tải đường truyền bằng cách quyết định xem sessions nào là cần thiết hoặc đã hết hạn sử dụng

 

Trang 35

er để truyền tải dữ liệu

channelSendOptions Giá trị channel sẽ được gắn lên các gói tin gởi đi

Channel.SEND_OPTIONS_ASYNCHRONRONUS Channel.SEND_OPTIONS_BYTE_MESSAGE Channel.SEND_OPTIONS_SECURE

Channel.SEND_OPTIONS_SYNCHRONIZED_ACK Channel.SEND_OPTIONS_USE_ACK

name Tên của cluster nhằm để quản lý, tất cả các máy chủ đều

phải cùng tên cluster

expireSessions-OnShutdown Quyết định xem các sessions có bị hủy nếu máy chủ bị

tắt đi hay không

false

domainReplication Xác định sự giới hạn của việc chia sẻ các sessions trên

một phân vùng nhất định, tùy chọn cho DeltaManager

Trang 36

frequency Tần số multicast gởi gói tin heartbeat (mili giây) 500 dropTime Thời gian để xác định xem một máy chủ Tomcat đã chết

hay chưa (mili giây)

3000

ttl Định giá trị time-to-live để xác đinh số routers mà gói

tin có thể chuyển qua

soTimeout Xác định thời gian tối đa chờ để gới/nhận thông tin 0

domain Để chia các máy chủ Tomcat ra thành nhiều vùng khác

autoBind Tự động tìm cổng trống để nhận thông tin đến 1000 selectorTimeout Thời gian chờ để nhận thông tin đến (mili giây) 5000 maxThreads Số lượng thread nhiều nhất tạo ra để nhận thông tin đến 6

minThreads Số lượng thread thấp nhật tạo ra để nhận thông tin đến 6

<Sender> (Phải chứa thông tin <Transmitter>)

Tên thuộc tính Giải thích Mặc định

PooledMultiSender maxRetryAttempts Số lần thử lại khi gởi thông tin đi bị lỗi 1

Trang 37

Ví dụ: File server.xml

 

timeout Thời gian chờ lớn nhất để hoàn tất gởi một gói tin đi 3000

poolsize Quản lý số lượng kết nối TCP nhiều nhất được mở ra để

gởi thông tin đi đến một máy chủ khác trong nhóm

Trang 38

2.4.2 Tính cấp thiết

Performance testing là một công việc cực kỳ quan trọng vì 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

Ở cấp cao nhất, performance testing hầu như luôn được tiến hành để giải quyết một hay nhiều rủi ro liên quan đến chi phí chi phí cơ hội, tính liên tục, hoặc danh tiếng của công ty Một số lý do cụ thể để tiến hành thử nghiệm hiệu suất bao gồm:

 Đánh giá sự sẵn sàng phát hành:

Cho phép dự đoán hoặc ước tính hiệu suất của một ứng dụng trong sản xuất Những dự đoán này có giá trị để đưa ra quyết định về việc liệu một ứng dụng đã sẵn sàng để phát hành hoặc có khả năng xử lý nhu cầu cao hơn trong tương lai, hoặc nó đòi hỏi sự nâng cấp phần cứng trước khi phát hành

Cung cấp dữ liệu cho thấy khả năng người sử dụng không hài lòng với các đặc điểm hiệu suất của hệ thống

Cung cấp dữ liệu để hỗ trợ dự đoán do các vấn đề khả năng mở rộng hay sự

ổn định, hoặc do người sử dụng không hài lòng với thời gian đáp ứng của ứng dụng

 Đánh giá đầy đủ cơ sở hạ tầng:

Đánh giá đầy đủ năng lực hiện tại

Xác định sự chấp nhận cho sự ổn định

Trang 39

 Đánh giá đầy đủ hiệu suất phần mềm theo:

Xác định đặc tính của ứng dụng mong muốn trước và sau khi thay đổi

Cung cấp so sánh giữa các đặc điểm hiệu suất hiện tại và mong muốn

 Nâng cao hiệu suất bằng cách điều chỉnh:

Phân tích hành vi của ứng dụng ở các mức tải khác nhau

Throughput: Số lượng yêu cầu trên đơn vị thời gian Khi tăng số lượng người

sử dụng đồng thời, throughput cũng tăng lên gần như tuyến tính với số lượng người dùng

Response Time: Thời gian đáp ứng một yêu cầu

Tuning: là các bước điều chỉnh hiệu suất bằng cách thay đổi các giá trị khác nhau cho các thông số của hệ điều hành hoặc phần mềm, các thành phần khác Tuning cải thiện hiệu suất mà không cần phải động đến mã nguồn

Benchmarking: Phương pháp so sánh các yếu tố, chỉ tiêu của ứng dụng với chuẩn chung hoặc ứng dụng tương tự Một hiệu suất được cải thiện của một sản phẩm sẽ không có ý nghĩa nếu nó không phù hợp với các sản phẩm cạnh tranh khác Benchmarking sẽ đưa ra các yêu cầu cần thiết để cải tiến

Mức sử dụng tài nguyên: Xem xét mức độ sử dụng CPU, bộ nhớ, disk I/O, network I/O… Từ đó đưa ra hướng điều chỉnh cơ sở hạ tầng để đáp ứng yêu cầu về hiệu suất

Trang 40

Capacity: Xác định có bao nhiều người dùng hoặc transaction hệ thống hỗ trợ

mà vẫn đáp ứng chỉ tiêu hiệu suất

2.4.5 Một số ứng dụng thực hiện

LoadRunner: LoadRunner có thể kiểm tra hầu hết các ứng dụng hoặc cơ sở

dữ liệu Nó thường được dùng trong các công ty lớn bởi vì phần mềm có rất nhiều chức năng và cũng như rất tốn thời gian nếu tìm hiểu hết các chức năng đó

Visual Studio Team System: là một phần của ứng dụng Visual Studio của Microsoft dùng để kiểm tra ứng dụng web Nó thông thường được sử dụng để kiểm tra các ứng dụng web được viết ra trên nền tảng NET

Silk: được viết bởi công ty Borland Cũng tương tự LoadRunner, phần mềm

có rất nhiều chức năng hỗ trợ để kiểm thử ứng dụng

LoadStorm: là một phần mềm điện toán đám mây của Amazon EC2 được thiết kế để kiểm thử các ứng dụng web Phần mềm có thể tạo biểu đồ theo thời gian thực như thời gian máy chủ trả lời, lỗi, throughput, số request mỗi giây và số lượng người dùng ảo Có thể kiểm tra ứng dụng web với số lượng 50.000 người dùng ảo

ApacheBench: là một API của ngôn ngữ Perl, ApacheBench thông thường để kiểm tra tốc độ, kiểm tra gói tin trả về là đúng hay sai với của các máy chủ HTTP

JMeter: phần mềm mã nguồn mở được viết bằng ngôn ngữ Java và hỗ trợ bởi Apache Software Foundation JMeter là phần mềm chuyên dụng để kiểm tra các ứng dụng web Nó dùng để kiểm tra cả những ứng dụng web tĩnh và động (files, Servlets, Perl, Java, v.v…) JMeter có thể tạo một số lượng kết nối ảo nhằm kiểm tra mức độ chịu tải của server, hệ thống mạng cũng như thống kê toàn bộ với nhiều kiểu kiểm tra performance khác nhau

 

Ngày đăng: 26/05/2018, 13:25

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w