Tùy chỉnh Squid

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 33)

Squid cung cấp những tùy chỉnh và chức năng được lưu tại các thư mục chính sau:

 /usr/sbin: Lưu những thư viện của Squid.

 /etc/squid: Lưu các tập tin cấu hình chính củaSquid.  /var/log/squid: Lưu các tập tin log của Squid.

Bảng 2. Ví dụ cấu hình squid.conf để chặn truy cập

Lệnh Mô tả

Lệnh Mô tả urlpath_regex “/etc/squid/chantai.file” http_access deny chantaixuong chantai.file, cụ thể: \.[Ee][Xx][Ee]$ \.[Aa][Vv][Ii]$ \.[Mm][Pp]3$

Sau đó, không cho phép tải trong danh sách “chantaixuong” đã được định nghĩa ở trên, cụ thể với nội dung trên không cho phép tải các tập tin có đuôi mở rộng là .exe, .mp3 và .avi acl camtruycap youtube.com mp3.zing.vn http_access deny camtruycap

Định nghĩa danh sách “camtruycap” gồm các địa chỉ youtube.com và mp3.zing.vn

Không cho phép truy cập trong danh sách “camtruycap” đã được định nghĩa ở trên, cụ thể chặn truy cập các trang youtube.com và mp3.zing.vn

acl giochophep time M T W H F 8:00-17:00 http_access deny !giochophep

Định nghĩa danh sách “giochophep” là từ 8:00 đến 17:00 các ngày từ thứ 2 đến thứ 6

Không cho phép truy cập proxy trong thời gian ngoài danh sách “giochophep”

acl localnet src 192.168.1.0/24

acl giochophep time M T W H F 8:00-17:00 acl dschophep 192.168.1.111 http_access allow dschophep Định nghĩa các danh sách:

 localnet: địa chỉ gồm dải IP 192.168.1.0/24;

 giochophep: thời gian từ 8:00 đến 17:00 các ngày từ thứ 2 đến thứ 6;

 dschophep: địa chỉ gồm IP 192.168.1.111.

Cho phép địa chỉ trong danh sách “dschophep” truy cập không giới hạn

Lệnh Mô tả

http_access allow localnet giochophep

trong “giochophep”

2.2.4. gu n t c h ạt đ ng Squid

Squid xác định những yêu cầu từ máy khách và quyết định đáp ứng hay không đáp ứng, nếu yêu cầu được đáp ứng, Squid sẽ kết nối với máy chủ thật thay cho máy khách và tiếp tục chuyển tiếp đến những yêu cầu từ máy khách đến máy chủ thật, cũng như đáp ứng những yêu cầu của máy chủ thật đến máy khách. Vì vậy, Squid giống cầu nối trung gian giữa máy chủ và máy khách.

Bên cạnh việc chuyển tiếp các yêu cầu từ phía máy khách, Squid cũng sẽ đồng thời lưu lại trên ổ đĩa những dữ liệu được trả về từ các máy chủ trên interner gọi là caching (thường là nội dung các website, các tập tin…). Nếu trong thời gian hiệu lực mà nhiều máy khách cùng yêu cầu một nội dung thì Squid sẽ ngay lập tức đáp ứng lại những yêu cầu từ phía máy khách bằng dữ liệu trong cache [4].

2.3. Apache Traffic Server

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. (adsbygoogle = window.adsbygoogle || []).push({});

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.

 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 (adsbygoogle = window.adsbygoogle || []).push({});

 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

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 (adsbygoogle = window.adsbygoogle || []).push({});

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

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 (adsbygoogle = window.adsbygoogle || []).push({});

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

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ổ (adsbygoogle = window.adsbygoogle || []).push({});

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

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 33)