Apache Traffic Server

Một phần của tài liệu Cài đặt và đánh giá chất lượng dịch vụ các proxy server mã mở (Trang 35)

2.3.1. Gi i thiệu Apache Traffic Server

Apache Traffic Server là một proxy có khả năng caching rất hiệu quả được phát triển bởi Inktomi từ năm 1995, ban đầu có tên là Inktomi Trafic Server. Sau đó, vào năm 2002 được Yahoo mua lại, phát triển thành Yahoo Traffic Server và ứng dụng rộng rãi trong các trung tâm dữ liệu của Yahoo.

Hình 11 trên cho thấy lịch sử phát triển của ATS từ một phần mềm thương mại, tháng 11 năm 2009, Yahoo cung cấp mã nguồn của Traffic Server cho Apache Software Foundation (bây giờ là Apache TLP) và đổi tên thành Apache Traffic Server.

ATS được sử dụng trong các hệ thống của Yahoo để quản lý lưu lượng, quản lý phiên, quản lý cấu hình, cân bằng tải và định tuyến cho toàn bộ hệ thống điện toán đám mây của Yahoo [1].

2.3.2. Tính năng Apache Traffic erver

ATS không chỉ là một HTTP proxy và giải pháp bộ nhớ đệm, ATS còn cung cấp một bộ khung máy chủ (server framework) để nhanh chóng triển khai các máy chủ dịch vụ khác. Với vai trò là HTTP proxy, ATS nằm giữa các máy khách và máy chủ đồng thời cung cấp các chức năng khác như: caching, định tuyến yêu cầu, lọc và cân bằng tải. Các website thường sử dụng máy chủ đệm (caching server) để cải thiện thời gian phản hồi các yêu cầu bằng cách lưu các website, dịch vụ, các thành phần của website (hình ảnh, JavaScript, CSS) trên caching server. ATS được một số tập đoàn và nhà cung cấp dịch vụ internet sử dụng như forward proxy hoặc intercepting proxy để bảo vệ người dùng trước các nội dung độc hại và tăng tốc độ truy cập các website phổ biến.

ATS có tốc độ rất nhanh, nó được thiết kế hoạt động trên một máy chủ đa luồng hướng sự kiện nên có hiệu năng rất cao khi cài đặt các máy chủ đa lõi hiện nay. Với một bộ xử lý 4 nhân 1,86 GHz, ATS có thể xử lý hơn 30.000 yêu cầu/giây cho một số lưu lượng nhất định.

ATS có khả năng mở rộng rất cao hỗ trợ chia sẻ các nội dung tải, Yahoo! đã bổ sung plugin có khả năng ánh xạ các URL, định tuyến yêu cầu tới các dịch vụ khác nhau dựa trên cookies, cho phép caching cả yêu cầu xác thực và sửa đổi các yêu cầu dựa trên tiêu đề gói. Yahoo! cũng đã thay thế việc sử dụng bộ nhớ đệm bằng plugin có thể hoạt động cả trên các giao thức như FPT, SMTP, SOCKS, RTSP.

Năm 2009, ATS được sử dụng trong các hệ thống của Yahoo! để cung cấp hơn 30 tỷ nội dung web/ngày với hơn 400 TB dữ liệu. ATS được sử dụng với vai trò là proxy và bộ nhớ đệm cho các dịch vụ như Yahoo! Front Page, Mail, Sports, Search, News và Finance [1].

2.3.3. Tùy chỉnh ATS

ATS cung cấp các tập tin cấu hình tại đường dẫn /usr/local/etc/trafficserver/, cụ thể [1]:

 cache.config: định nghĩa cách ATS cache các đối tượng web với những lựa chọn sau:

+ Không cache các đối tượng từ các địa chỉ IP được chỉ định; + Thời gian lưu giữ của từng đối tượng trong cache;

+ Thời gian làm mới các đối tượng trong cache (max–age); + Bỏ qua chức năng chặn cache từ máy chủ.

 congestion.config: cho phép cấu hình ATS dừng chuyển tiếp các yêu cầu dạng HTTP đến các máy chủ gốc khi các máy chủ gốc bị nghẽn và gửi thông điệp đến máy khách để thực hiện lại yêu cầu đến máy chủ gốc sau. Các lựa chọn trong tập tin cấu hình này:

+ Máy chủ mà ATS theo dõi tình trạng nghẽn theo địa chỉ IP hoặc hostname;

+ Thời gian chờ mà ATS sử dụng để xác minh tính trạng nghẽn của máy chủ;

+ Thông điệp mà ATS gửi đến máy khách khi máy chủ bị nghẽn;

 hosting.config: xác định các volume đĩa mà máy chủ gốc hoặc quản trị domain sẽ quản lý và giới hạn tài nguyên ổ đĩa sử dụng.

 icp.config: định nghĩa các ICP peer (bao gồm ICP cha và các ICP con);  ip_allow.config: kiểm soát các máy khách truy cập đến ATS theo dải địa

chỉ IP;

 log_hosts.config: danh sách các máy chủ sẽ kiểm soát và ghi log các truy cập qua giao thức HTTP. Nếu sử dụng mô hình ATS phân tán, cần cấu hình tập tin này giống nhau trên tất cả các nút ATS.

 logs_xml.config: xác định các thông tin trong tập tin log dưới dạng XML.  parent.config: xác định các proxy cha mà ATS sử dụng để kế thừa cache;  plugin.config: quản lý các plugin sẽ được nạp vào ATS

 records.config: đây là tập tin cấu hình chính gồm danh sách rất nhiều thông số được sử dụng bởi ATS: cách thức hoạt động của proxy, DNS, RAM cache, bảo mật, người dùng, tài nguyên CPU sử dụng …

 remap.config: chưa các luật chuyển mà ATS sử dụng bao gồm:

+ Chuyển yêu cầu URL đến máy chủ gốc khi ATS đóng vai trò máy chủ proxy ngược;

+ Chuyển ngược lại dữ liệu từ máy chủ gốc trả lời các yêu cầu xác định thông qua tiêu đề của yêu cầu;

+ Chuyển tiếp yêu cầu dạng HTTP tạm thời hoặc vĩnh viễn khi ATS không kết nối được với các máy chủ gốc.

 splitdns.config: cho phép xác định các máy chủ DNS mà ATS sử dụng để phân giải tên miền trong một số trường hợp.

 ssl_multicert.config: cho phép cấu hình ATS sử dụng nhiều máy chủ SSL để tạo các chứng thư xác thực cho kết nối SSL.

 storage.config: danh sách tất cả tập tin, thư mục và các phân vùng ổ đĩa ATS dùng để cache. (adsbygoogle = window.adsbygoogle || []).push({});

 volume.config: cho phép quản lý dung lượng trống của cache hiệu quả hơn bằng các giới hạn tài nguyên đĩa cho từng giao thức.

 Khi máy khách gửi yêu cầu đến ATS để lấy các đối tượng web, ATS sẽ sử dụng đường dẫn trong yêu cầu để gọi đến đối tượng và tìm xem nó đã được cache chưa;

 Nếu đối tượng đã được cache, ATS kiểm tra xem dữ liệu của đối tượng này còn mới hay không (bằng cách kiểm tra theo thời gian so với thông số max– age), nếu cache này còn mới ATS sẽ cung cấp cho máy khách (cache hit – hình 12)

[1];

Hình 12. ATS cache hit

 Nếu dữ liệu trong cache đã cũ (hết hạn), ATS gọi đến máy chủ gốc để kiểm tra xem đối tượng còn mới không. Nếu vẫn còn mới, ATS lập tức truyền cache này đến máy khách đồng thời set lại max–age cho đối tượng [1].

Hình 13. ATS cache hit hoặc cache không còn mới

 Nếu đối tượng không có ở trong cache (cache miss – hình 13) hoặc dữ liệu trong cache được kiểm tra là không còn đúng hoặc không còn mới so với máy chủ gốc, ATS sẽ gọi đến máy chủ gốc và lấy phiên bản mới của đối tượng. Những yêu cầu sau đó sẽ được xử lý nhanh hơn vì đối tượng được lấy trực tiếp từ cache [1].

Chương 3 – CÀI ĐẶT, THỬ NGHIỆM VÀ ĐÁNH GIÁ PROXY SERVER 3.1. Cài đặt Squid

3.1.1. Mô hình mạng

Sử dụng mô hình forward proxy thông dụng ở hình 14:

Client 192.168.201.0/24 Client 192.168.201.0/24 Squid Squid Modem

Modem InternetInternet 192.168.201.12 192.168.139.130

Hình 14. Mô hình cài đặt Squid

 Máy khách (Client): nằm ở dải IP 192.168.201.0/24  Squid server: 02 card mạng

 01 card mạng kết nối với mạng nội bộ: 192.168.201.12  01 card mạng kết nối ra internet thông qua Modem.

3.1.2. Cấu hình máy chủ cài đặt

Để dễ dàng thay đổi cấu hình máy chủ phục vụ việc thử nghiệm hệ thống, em sử dụng các máy ảo, máy ảo cài đặt Squid phiên bản 3.5.12 với cấu hình cơ bản:

 Hệ điều hành: Ubuntu 16.04;  CPU: 01 CPU 3.4GHz;  RAM: 04 GB

3.1.3. Thông số cài đặt

Bảng 3. Một số thông số cài đặt trong file squid.conf

Thông số Ý nghĩa

acl localnet src 192.168.0.0/16 Định nghĩa cho mạng nội bộ mang tên localnet

http_access allow localnet Cho phép mạng localnet kết nối đến http_port 8080 Cấu hình cổng HTTP mà squid sẽ lắng

nghe những yêu cầu được gửi đến.

cache_mem 2 GB Sử dụng 2GB RAM làm cache

maximum_object_size_in_memory 4 MB

Kích thước 1 object tối đa trong cache RAM là 4 MB

3.2. Cài đặt Apache Traffic Server

3.2.1. Mô hình mạng (adsbygoogle = window.adsbygoogle || []).push({});

Tương tự Squid, em cũng cài đặt ATS sử dụng mô hình forward proxy để đánh giá ở hình 15: Client 192.168.201.0/24 Client 192.168.201.0/24 ATS ATS Modem

Modem InternetInternet 192.168.201.14 192.168.139.133

 Máy khách (Client): nằm ở dải IP 192.168.201.0/24  Squid server: 02 card mạng

 01 card mạng kết nối với mạng nội bộ: 192.168.201.14  01 card mạng kết nối ra internet thông qua Modem.

3.2.2. Cấu hình máy chủ cài đặt

Tương tự Squid, máy ảo cài đặt ATS phiên bản 5.3.0 có cấu hình cơ bản:  Hệ điều hành: Cent OS 7;

 CPU: 01 CPU 3.4GHz;  RAM: 04 GB.

3.2.3. Thông số cài đặt

Bảng 4. Một số thông số cài đặt trong file records.config

Thông số Ý nghĩa

CONFIG Proxy.config.http.server_ports STRING 8080

Cấu hình cổng HTTP mà ATS sẽ lắng nghe những yêu cầu được gửi đến. CONFIG

Proxy.config.url_remap.remap_required INT 0

Không sử dụng cấu hình remap (Reverse Proxy)

CONFIG Proxy.config.http.cache.http INT 1

Có sử dụng cache cho giao thức HTTP

CONFIG

proxy.config.cache.ram_cache.size INT 2GB

Dùng 2GB RAM làm cache (để tương đương với Squid)

Thông số Ý nghĩa

Proxy.config.cache.ram_cache_cutoff INT 4194304

bộ nhớ là 4 MB = 4194304 Bytes

3.3. Các thông số cần đánh giá

Dưới góc độ người dùng, em quan tâm đến thời gian tiếp nhận, xử lý xong yêu cầu và trả về kết quả, dưới góc độ quản trị viên, em cần thu thập thêm thông số về hệ thống.

Do đó, để đánh giá hiệu năng của proxy server, em thu thập các thông số liên quan:

 Tài nguyên sử dụng;  Mức độ chịu tải.

Bảng 5. Thông số cần xác định

STT Thông số Đơn vị Nội dung

1 Thời gian hoàn thành giây

Thời gian bắt đầu gửi yêu cầu đầu tiên đến khi nhận được kết quả xử lý của yêu cầu cuối cùng (adsbygoogle = window.adsbygoogle || []).push({});

2 Tài nguyên chiếm dụng % CPU

Giá trị trung bình của tài nguyên CPU sử dụng trong suốt quá trình xử lý các yêu cầu

3 Tốc độ xử lý yêu cầu request/s Số lượng yêu cầu trên thời gian hoàn thành

STT Thông số Đơn vị Nội dung

5 Số yêu cầu phản hồi request Tổng số yêu cầu xử lý thành công

6 Số yêu cầu lỗi (error +

timeout) request Tổng số yêu cầu lỗi và timeout

7 Thời gian phản hồi trung bình giây Thời gian phản hồi trung bình cho các yêu cầu

8 Lưu lượng internet MB Lưu lượng internet sử dụng

9 Lưu lượng nội bộ MB Lưu lượng dữ liệu truyền trong mạng nội nộ

3.4. Phương pháp thử nghiệm

Thử nghiệm các proxy server ở 02 cấu hình:  Cấu hình mặc định:

 Đo thời gian tải 1 số website phổ biến;  Đo thời gian tải lại website;

(Mỗi phép đo trên thực hiện 03 lần và lấy giá trị trung bình để đảm bảo tính khách quan)

 Đo thông số mô phỏng 100 người sử dụng;  Đo thông số mô phỏng 200 người sử dụng;  Điều chỉnh một số thông số:

Chương 4 – KẾT QUẢ VÀ THẢO LUẬN 4.1. Kịch bản mô phỏng

Với bước thử mô phỏng người sử dụng, em sử dụng công cụ mô phỏng StressStimulus. Đây là một công cụ mô phỏng rất mạnh, cho phép mô phỏng lên đến 10.000 người sử dụng bằng cách lặp lại các thao tác theo kịch bản đã ghi lại.

Kịch bản mô phỏng người sử dụng truy cập internet, đọc báo, xem video ở một số trang phổ biến:

 Truy cập dantri.com.vn, vnexpress.net, 24h.com.vn mỗi trang truy cập 03 tin tức, riêng tại 24h.com.vn truy cập thêm 01 video;

 Không sử dụng cache của ứng dụng và trình duyệt để đảm bảo tính chính xác của thử nghiệm.

Các thông số mô phỏng chính:  Số request trong 1 kịch bản: 540;  Dung lượng request: 429,1 KB;  Dung lượng phản hồi: 64.001,3 KB;

 Môi trường mô phỏng: trình duyệt Mozilla/5.0, hệ điều hành Windows 7 SP1 x64

4.2. Thử nghiệm cấu hình mặc định

4.2.1. Đ thông số cơ bản

Bảng 6. Đo thông số cơ bản của Squid

STT Nội dung Lần 1 Lần 2 Lần 3 Trung bình Đơn vị

1 Thời gian tải 1 số website

STT Nội dung Lần 1 Lần 2 Lần 3 Trung bình Đơn vị

2 Thời gian tải lại website

(cache hit) 6,21 6,01 6,30 6,17 giây (adsbygoogle = window.adsbygoogle || []).push({});

Bảng 7. Đo thông số cơ bản của ATS

STT Nội dung Lần 1 Lần 2 Lần 3 Trung

bình

Đơn vị

1 Thời gian tải 1 số website phổ

biến 11,90 11,60 13,10 12,20 giây

2 Thời gian tải lại website

(cache hit) 5,86 5,97 6,61 6,15 giây

4.2.2. Mô phỏng 100 người sử dụng

Bảng 8. Kết quả mô phỏng 100 người sử dụng với cấu hình mặc định

STT Nội dung

Giá trị

Đơn vị Squid ATS

1 Thời gian hoàn thành 939 1.099 giây

2 Tài nguyên chiếm dụng 25,14 16,19 % CPU

3 Tốc độ xử lý yêu cầu 57,48 49,13 request/s

4 Số yêu cầu gửi 54.000 54.000 request

STT Nội dung Giá trị Đơn vị

6 Số yêu cầu lỗi (error + timeout) 504 390 request 7 Thời gian phản hồi trung bình 1,39 1,55 giây

8 Lưu lượng internet 1.992 2.214 MB

9 Lưu lượng nội bộ 3.332 4.810 MB

4.2.3. Mô phỏng 200 người sử dụng

Bảng 9. Kết quả mô phỏng 200 người sử dụng với cấu hình mặc định

STT Nội dung

Giá trị

Đơn vị

Squid ATS

1 Thời gian hoàn thành 1.806 2.613 giây

2 Tài nguyên chiếm dụng 21,31 15,54 % CPU

3 Tốc độ xử lý yêu cầu 59,78 41,33 request/s (adsbygoogle = window.adsbygoogle || []).push({});

4 Số yêu cầu gửi 108.000 108.000 request

5 Số yêu cầu phản hồi 103.295 107.236 request

6 Số yêu cầu lỗi (error + timeout) 4.705 764 request 7 Thời gian phản hồi trung bình 4,90 2,49 giây

8 Lưu lượng internet 3.070 2.867 MB

9 Lưu lượng nội bộ 5.321 9.421 MB

4.3.1. Các thông số điều chỉnh

 Tăng cấu hình máy chủ lên 02 CPU 3.4 GHz để thử nghiệm xử lý đa nhân.

 Cấu hình lại Squid: Tăng RAM cache

Thông số Ý nghĩa

cache_mem 3 GB Tăng lên 3GB RAM làm cache

maximum_object_size_in_memory 5 MB

Tăng kích thước tối đa của 1 object lưu trong RAM lên 5MB

 Cấu hình lại ATS: Tăng RAM cache CONFIG proxy.config.cache.ram_cache.size INT 3GB Dùng 3GB RAM làm cache CONFIG Proxy.config.cache.ram_cache_cutoff INT 5242880

Kích thước 1 object tối đa trong cache bộ nhớ là 5MB = 5242880 Bytes

4.3.2. Kết quả

Bảng 10. Kết quả mô phỏng 200 người sử dụng với cấu hình điều chỉnh

STT Nội dung Giá trị Đơn vị

Squid ATS

1 Thời gian hoàn thành 1.742 1.673 giây

2 Tài nguyên chiếm dụng 25,48 16,12 % CPU

3 Tốc độ xử lý yêu cầu 61,99 64,55 request/s

STT Nội dung Giá trị Đơn vị

5 Số yêu cầu phản hồi 105.754 107.183 request

6 Số yêu cầu lỗi (error + timeout) 2.246 817 request 7 Thời gian phản hồi trung bình 3,01 2,31 giây

8 Lưu lượng internet 3.891 2.867 MB

9 Lưu lượng nội bộ 6.451 9.523 MB

4.4. Đánh giá kết quả

Khi sử dụng Squid và ATS làm proxy server với thông số cơ bản khi tải web không có sự khác biệt do cả 2 cùng sử dụng RAM làm cache nên tốc độ khi cache hit được cải thiện đáng kể.

4.4.1. Đánh giá v i cấu hình mặc định

Ta có các biểu so sánh: (adsbygoogle = window.adsbygoogle || []).push({});

Hình 16. So sánh thời gian hoàn thành mô phỏng với cấu hình mặc định

939 1,806 1,099 2,613 0 500 1,000 1,500 2,000 2,500 3,000 Mô phỏng 100 VU Mô phỏng 200 VU Giây Thời gian hoàn thành

ATS Squid

Hình 17. So sánh tốc độ xử lý yêu cầu trong mô phỏng với cấu hình mặc định

Từ kết quả trên có thể thấy với cấu hình mặc định, Squid có thời gian hoàn thành nhanh hơn, tốc độ xử lý request vượt trội so với ATS nhất là khi tăng số lượng người sử dụng.

Hình 18. So sánh thời gian phản hồi yêu cầu trung bình trong mô phỏng với cấu hình mặc định 57.48 59.78 49.13 41.33 - 10.00 20.00 30.00 40.00 50.00 60.00 70.00 Mô phỏng 100 VU Mô phỏng 200 VU request/s Tốc độ xử lý yêu cầu

Một phần của tài liệu Cài đặt và đánh giá chất lượng dịch vụ các proxy server mã mở (Trang 35)