Mô hình một máy chủ với Virtual hosts

Một phần của tài liệu Quản lý quản trị các dịch vụ mạng (Trang 36)

3.1.1. Giới thiệu mô hình

Virtual host là một phương pháp tạo, lưu trữ nhiều tên miền (như domain1.example.vn và domain2.example.vn) trên một máy chủ. Điều này cho phép một máy chủ có thể chia sẻ tài nguyên băng thông, bộ nhớ, CPU giúp tối ưu hoá tài nguyên trên máy chủ.

Đây cũng là một phương pháp được sử dụng rộng rãi khi chia sẻ Web hosting. Do giá Web hosting thấp so với các phương pháp khác. Nó cũng được dùng phổ biến cho những khách hàng muốn sử dụng nhiều tên miền trên cùng một máy do nhu cầu sử dụng.

Hình 3.1: Mô hình máy chủ với Virtual hosts

Có 2 cách để chia sẻ hosting trong Virtual hosts đó là “IP - based”, “Name - based”. “IP - based” là sử dụng một địa chỉ IP riêng biệt cho mỗi trang Web. Nó có thể được thực bởi bất kỳ giao thức nào đòi hỏi phải có 1 địa chỉ IP dành riêng cho

Chương này sẽ trình bày những nội dung sau:

Trình bày giải pháp mô hình một máy chủ với Virtual host

Trình bày giải pháp mô hình một máy chủ với lớp phần mềm bổ sung

Trình bày giải pháp mô hình nhiều máy chủ với lớp phần mềm bổ sung

37

mỗi tên miền. “Name- based” là sử dụng nhiều tên chạy trên 1 địa chỉ IP.

3.1.2. Virtual host với Apache.

3.1.2.1. Cơ chế làm việc của Virtual host trong Apache.

Cơ chế làm việc của Virtual host trong Apache được thể hiện như hình sau:

Hình 3.2: Cơ chế làm việc của Apache trong mô hình Virtual host

Apache hỗ trợ tạo virtual host một cách rất đơn giản. Trong Apache chúng ta thường sử dụng khối <VirtualHost> trong file /etc/httpd/conf/httpd.conf để khai báo các thuộc tính của các virtual hosts.

Cấu trúc:

<VirtualHost IP-or-HOSTNAME: Port> #Any Valid httpd.conf directives </VirtualHost>

Ví dụ: Giả sử với domain11.hust thì khối <VirtualHost> trong file httpd.conf có nội dung như sau:

<VirtualHost *:80>

ServerAdmin webmaster@domain11.hust DocumentRoot /var/www/html/domain11.hust ServerName domain11.hust

ErrorLog logs/domain11.hust-error_log

CustomLog logs/domain11.hust-access_log common </VirtualHost>

Trong mỗi khối <VirtualHost> mỗi virtual host chúng sở hữu một folder là DocumentRoot duy nhất, chứa nội dung của từng domain mà virtual host đó quản lý. Ngoài ra trong <VirtualHost> còn chứa các thông tin khác như ServerName,

38

Server Alias, ErrorLog…vv. Từ những thông tin này apache có thể ánh xạ các yêu cầu đến các folder, thực hiện các nhiệm vụ tương ứng được định nghĩa.Như vậy để có được các hosting khác nhau sử dụng chung địa chỉ IP ta chỉ cần sửa nội dung trong khối <VirtualHost>.[15]

3.1.2.2. Virtual host dựa trên tên (Name – based virtual host)

Khi máy chủ có 1 địa chỉ IP và yêu cầu cần tạo nhiều website trên đó thì việc sử dụng Virtual host dựa trên tên được lựa chọn. Với cách này, máy chủ Apache sẽ phải khai báo tất cả các tên miền muốn dùng trong máy chủ DNS trước hoặc sử dụng file host và thường sử dụng hostname do khách hàng đặt làm header cho HTTP. Nhược điểm của cách này là không thể sử dụng SSL (https://) cho tất cả các tên miền vì tất cả các tên SSL yêu cầu mỗi tên phải có 1 IP.

Khi xây dựng Named-based virtual hosting chúng ta làm như sau:

- Thêm địa chỉ IP chứa virtual host vào file httpd.conf NameVirtualHost <Your IP Address> trên máy chủ. Điều này làm cho Apache biết được đâu là địa chỉ IP chứa tên miền mà bạn muốn ánh xạ đến. Trong một vài trường hợp thì 1 hoặc tất cả các địa chỉ IP trên Server đều được sử dụng thì chúng ta có thể sử dụng “*” thay thế địa chỉ Ip cụ thể. Nếu máy chủ sử dụng nhiều port bạn có thể thêm thông tin về cổng như sau “*:80”.

- Bước tiếp là tạo ra một khối <VirtualHost> cho mỗi máy chủ khác nhau mà bạn muốn phục vụ. Bên trong mỗi khối <VirtualHost> sẽ có những thông tin như ServerName, ServerAlias để chỉ định một máy chủ muốn được phục vụ và một đường dẫn tới DocumentRoot để hiển thị. [16] (adsbygoogle = window.adsbygoogle || []).push({});

Ví dụ: Giả sử 2 tên miền www.example.com , example.org cùng hoạt động trên cùng 1 địa chỉ IP. Sau đó, bạn chỉ cần thêm dòng sau vào httpd.conf:

NameVirtualHost *:80 <VirtualHost *:80>

# This first-listed virtual host is also the default for *:80 ServerName www.example.com

ServerAlias example.com DocumentRoot /var/www/domain

39 </VirtualHost>

<VirtualHost *:80>

ServerName www. example.org ServerAlias example.org

DocumentRoot /var/www/ example.org </VirtualHost>

Khi người sử dụng muốn truy cập domain của mình bằng nhiều tên khác nhau, Apache sẽ sử dụng thêm ServerAlias được thêm vào trong khối < Virtual host>, câu lệnh như sau: ServerAlias example.com *.example.com.

3.1.2.3. Virtual host dựa trên IP (IP – based virtual host).

Virtual host dựa trên IP là phương pháp ứng dụng trong những trường hợp máy chủ có nhiều địa chỉ IP hoặc một vài trường hợp Virtual host dựa trên tên là không thuận tiện, bởi vì nhiều Virtual host đều chia sẻ chung 1 địa chỉ Ip và 1 port.

Từ đặc điểm trên, khi sử dụng cách này máy chủ phải có nhiều Port và địa chỉ IP. Điều này có thể thực hiện trên máy có nhiều interface vật lý hoặc logic.

Khi xây dựng IP-based virtual hosting chúng ta có 2 cách làm như sau: Cách 1: Sử dụng nhiều daemon (tiến trình thường trú khi khởi động httpd) - Sử dụng cách này khi Virtual host cần phân vùng bảo mật. Ví dụ, như company1 không muốn bất cứ ai tại company2 để có thể đọc dữ liệu của họ, ngoại trừ thông qua web. Trong trường hợp này bạn sẽ cần hai daemon, mỗi daemon sẽ chạy với tài khoản, nhóm, Listen và các thiết lập ServerRoot khác nhau.

- Để tạo nhiều daemon ta làm như sau:

+ Tạo một cài đặt httpd riêng biệt cho mỗi máy chủ. Đối với mỗi cài đặt, sử dụng các chỉ thị Listen trong file cấu hình để chọn địa chỉ IP (hoặc máy chủ ảo) là các dịch vụ daemon. Ví dụ: Listen 192.168.1.1:80

Cách 2: Sử dụng 1 daemon

- Sử dụng cách này khi chúng ta chia sẻ cấu hình httpd giữa các virtual host với nhau và khi máy chủ vật lý có một số lượng lớn các yêu cầu thì việc chạy nhiều daemon có thể làm giảm hiệu suất hoạt động.

40

+ Đối với cách này, một httpd duy nhất sẽ phục vụ các yêu cầu cho máy chủ chính và tất cả các máy ảo. Chỉ thị VirtualHost trong file cấu hình được sử dụng để thiết lập các giá trị của ServerAdmin, ServerName, DocumentRoot, ErrorLog và CustomLog, TransferLog khác nhau cho mỗi máy chủ ảo.

Ví dụ: <VirtualHost 172.20.30.40:80> ServerAdmin webmaster@www1.example.com DocumentRoot /www/vhosts/www1 ServerName www1.example.com ErrorLog /www/logs/www1/error_log

CustomLog /www/logs/www1/access_log combined </VirtualHost> <VirtualHost 172.20.30.50:80> ServerAdmin webmaster@www2.example.org DocumentRoot /www/vhosts/www2 ServerName www2.example.org ErrorLog /www/logs/www2/error_log

CustomLog /www/logs/www2/access_log combined </VirtualHost>

Cấu hình Virtual host có địa chỉ IP hoặc cổng cụ thể đều có ưu tiên hơn các cấu hình máy chủ cơ sở.[17]

3.2. Mô hình một máy chủ virtual host với lớp phần mềm bổ sung. 3.2.1. Giới thiệu mô hình 3.2.1. Giới thiệu mô hình

Với mô hình 1 máy chủ với Vitual host việc tạo virtual host để cấp tài khoản FTP cho khách hàng đều phải làm bằng tay, đồng thời nó sử dụng Apache để giúp cho khách hàng có thể sử dụng được hosting của mình, việc làm như vậy chỉ có thể sử dụng trong quy mô nhỏ và người quản trị phải là người quản lý tốt số lượng hosting của mình. Nhưng khi số lượng hosting tăng nhanh, nhà cung cấp sẽ khó quản lý tốt được hosting của mình và nảy sinh nhiều vấn đề. Như vậy chúng ta cần phải có 1 phần quản lý hosting đúng nghĩa và mô hình 1 máy chủ Virtual host với lớp phần mềm bổ sung có thể giải quyết được bài toán đó.

41

ISPConfig 3 là 1 loại cpanel mã nguồn mở dành cho hệ thống Linux. Nó cho phép quản lý nhiều server thông qua 1 hệ thống control panel.

ISPConfig 3 được phát triển bởi công ty projektfarm GmbH của Đức, là một trong số hiếm hoi chương trình quản lý hosting trên mã nguồn mở (BSD license). Với các tính năng quản lý chuyên nghiệp và dễ sử dụng chắc hẳn ISPConfig sẽ là lựa chọn tốt cho các nhân và doanh nghiệp ưa chuộn mã nguồn mở.

Một số dịch vụ ISPConfig có thể quản lý:

- Httpd (virtual hosts, domain and IP based) - FTP (adsbygoogle = window.adsbygoogle || []).push({});

- Bind (A, CNAME, MX and SPF Records) - POP3 Auto-Responder - MySQL client-databases - Webalizer statistics - Harddisk quota - Mail-Quota - Traffic limits - IP-addresses - SSL - SSI - Shell-access - Mailscanner (Antivirus) - Firewall

Tƣơng thích với các hệ điều hành:

- Mandrake Linux starting from version 8.1 to 10.2 - Mandriva 2006 - 2009.0

- Red Hat Linux starting from version 7.3 to 9.0 - Fedora Core 1 - 6, Fedora 7 – 10

- SuSE Linux starting from version 7.2 to 11.1

42

- Ubuntu 5.04 (Hoary Hedgehog) - 8.10 (Intrepid Ibex) - CentOS 4.1 – 6.5 [6].

Hình 3.3: Mô hình một máy chủ với lớp phần mềm bổ sung

3.2.2. Quản lý hosting với ISPConfig 3

ISPConfig 3 là phần mềm cho phép tự động cấu hình virtual host, CSDL, shell, quản lý thống nhất các host, các users theo một account users duy nhất, đồng bộ các cấu hình được lưu trữ trong CSDL của ISPConfig3 với Apache, CSDL MySQL và hệ thống.

ISPConfig với Apache:

ISPConfig thực hiện cấu hình tự động virtual host như sau:

- Khi khách hàng tạo một domain, ISPConfig 3 thực hiện tạo một virtual host bằng các định nghĩa tạo ra các folder và các file cấu hình trên Apache.

Ví dụ: Khi tạo ra một domain domain1.hust ispconfig thực hiện tạo tự động file domain1.hust trong thư mục /etc/httpd/conf/sites-available để định nghĩa virtual host. Nội dung file đó như sau:

Nội dung file như sau:

<Directory /var/www/domain1.hust> AllowOverride None Order Deny,Allow

43 Deny from all

</Directory> <VirtualHost *:80> DocumentRoot /var/www/domain1.hust/web ServerName domain1.hust ServerAlias www.domain1.hust ServerAdmin webmaster@domain1.hust ErrorLog /var/log/ispconfig/httpd/domain1.hust/error.log Alias /error/ "/var/www/domain1.hust/web/error/"

ErrorDocument 400 /error/400.html ErrorDocument 401 /error/401.html ErrorDocument 403 /error/403.html ErrorDocument 404 /error/404.html ErrorDocument 405 /error/405.html ErrorDocument 500 /error/500.html ErrorDocument 502 /error/502.html ErrorDocument 503 /error/503.html <IfModule mod_ssl.c> </IfModule> </VirtualHost>

Nội dung của file cung cấp cho Apache biết thư mục /var/www/domain1.hust/web chứa nội dung của domain domain1.hust và cho biết đã có 1 virtual host lắng nghe ở cổng 80 phục vụ cho yêu cầu từ domain. Mục đích để Apache hiểu và đáp ứng lại với yêu cầu người dùng khi truy vấn vào domain domain1.hust.

- Đồng thời với việc tạo file định nghĩa virtual host các thư mục được khai báo trong file cấu hình virtual host cũng được tạo, bao gồm các thư mục có tên trùng với tên domain và các thư mục con của nó chứa nội dung của domain.

ISPConfig với Mysql:

ISPConfig thực hiện cấu hình tự động cơ sở dữ liệu quản lý các domain: Trong quá trình cài đặt ISPConfig yêu cầu quyền root để truy cập vào cơ sở dữ liệu Mysql, chính vì thế nó được quyền root với toàn hệ quản trị cơ sở dữ liệu của Mysql. Trong quá trình quản lý ISPConfig tạo ra các bảng cơ sở dữ liệu trong Mysql, cơ sở dữ liệu mặc định là db_ispconfig.

44

ISPconfig được có thể quản lý nhiều loại server như: Webserver, DNS server, Mail Server. Chính vì thế trong cơ sở dữ liệu của nó chứa rất nhiều bảng cơ sở dữ liệu.

Một số bảng được sử dụng như sau: Client; Client_circle; Client_template ; webdav_user; web_backup; mail_access; web_database; web_database_use; web_domain; web_folder; web_folder_use; web_traffic mail_content_filter; mail_domain; mail_forwarding; mail_get; mail_mailinglist; mail_relay_recipient; mail_traffic; mail_transport; mail_user; mail_user_filter.

Khi chúng ta tạo domain và gán người dùng cho domain này thì ISPConfig sẽ tự động tạo các bản ghi tương ứng trên các bảng trên và chèn vào các bảng.

3.3. Mô hình nhiều máy chủ virtual host với lớp phần mềm bổ sung 3.3.1. Giới thiệu mô hình 3.3.1. Giới thiệu mô hình

Mô hình một máy chủ Virtual host với lớp phần mềm bổ sung tỏ ra khá hiệu quả so với mô hình máy chủ với Virtual host truyền thống về mặt quản lý, tuy nhiên nó vẫn còn bộc lộ nhiều khuyết điểm trong hệ thống như mọi công việc đều phụ thuộc vào khả năng xử lý của máy chủ, với những doanh nghiệp lớn ngoài nhu cầu quản lý hosting họ còn muốn cung cấp nhiều dịch vụ khác như dịch vụ Mail, DNS. Với 1 máy chủ thì mô hình này khó có thể đáp ứng được. Vậy nên, mô hình nhiều máy chủ Virtual host với lớp phần mềm bổ sung có thể là 1 giải pháp tốt.

Phần mềm bổ sung là ISPConfig 3. (adsbygoogle = window.adsbygoogle || []).push({});

Trong mô hình nhiều máy chủ Virtual host với lớp phần mềm bổ sung có hoạt động giống như mô hình 1 máy chủ Virtual host với lớp phần mềm bổ sung.

Tuy nhiên do số lượng máy chủ lớn hơn để có thể chạy nhiều dịch vụ khác nhau và có thể tạo nhiều virtual host hơn nhằm san tải giữa các server. Vậy nên, vấn đề đặt ra cho mô hình là làm sao để có thể quản lý các server một cách thuận tiện nhất, nhằm giải quyết hạn chế khả năng quản lý cho nhà cung cấp dịch vụ. ISPConfig3 có thể làm được điều đó.

Trong mô hình này thì ISPConfig3 với sự đồng bộ cơ sở dữ liệu giữa các Server sẽ quản lý tất cả các server trên 1 giao diện Cpanel.

45

Hình 3.4: Mô hình nhiều máy chủ Virtual host với lớp phần mềm bổ sung

3.3.2. Quản lý nhiều máy chủ Virtual host với ISPConfig 3

Để quản lý được mô hình nhiều máy chủ Virtual host với ISPConfig 3 chúng ta phải có 1 máy chủ làm máy chủ chính (máy chủ này sẽ chạy Web server và giao diện Cpanel của ISPConfig), các máy chủ còn lại sẽ là các máy chủ phụ để san tải với máy chủ chính hoặc chạy các dịch vụ chuyên dụng như DNS, Mail, Web, MySQL.

Giả sử ta có 3 máy chủ như sau: Web Server

Hostname: web.example.com IP address: 192.168.0.105

Mail Server

Hostname: mail.example. com IP address: 192.168.0.106

DNS Server

Hostname: ns1.example. com IP address: 192.168.0.108

Để xây dựng mô hình nhiều máy chủ Virtual host với ISPConfig 3 chúng ta làm như sau:

46

Trên máy chủ Mail Server, DNS Server cũng sẽ cài ISPConfig 3, nhưng sau đó xoá giao diện ISPConfig trong đường dẫn /var/www.

Sau đó xoá 1 số thư mục cài đặt sau bằng các lệnh:

rm -rf /tmp/ispconfig3_install/install rm -f /tmp/ISPConfig-3-stable.tar.gz

Sau đó đăng nhập vào ISPConfig trên máy chủ chính và gõ http://192.168.0.105:8080 trên trình duyệt Web. [6]

Sau đó vào System > Server services >tạo tên miền cho các máy chủ phụ như các hình sau:

Hình 3.5: Tạo tên miền máy chủ Web Server

47

Hình 3.7: Tạo tên miền máy chủ DNS Server

Như vậy từ máy chủ master sử dụng ISPConfig 3 có thể quản lý các máy chủ khác.

3.4. Mô hình nhiều máy chủ và proxy ngƣợc 3.4.1. Giới thiệu mô hình

Sử dụng mô hình nhiều máy chủ Virtual host với ISPConfig 3, giải quyết được vấn đề quản lý tập trung, hệ thống có khả năng xử lý nhiều công việc nhưng với hệ thống như vậy máy chủ rất dễ bị tấn công từ bên ngoài bằng các hình thức tấn công từ chối dịch vụ dẫn tới hệ thống bị tê liệt. Mô hình nhiều máy chủ và proxy ngược có thể dễ dàng giải quyết việc đó.

Proxy ngược là thiết bị đứng giữa một server và tất cả các client mà server phục vụ, đảm bảo an toàn cho server. Khác với forward proxy đứng giữa 1 client và tất cả server mà client truy cập đến, đảm bảo an toàn cho client.

Vai trò của Proxy trong mô hình.

- Tại reverse proxy sẽ kiểm soát, lọc bỏ các request không hợp lệ và luân chuyển các request hợp lệ tới đích cuối cùng là các server.

- Reverse proxy có thể ẩn và che dấu sự tồn tại của server. (adsbygoogle = window.adsbygoogle || []).push({});

- Khi client từ Internet truy cập và web server, reverse proxy đóng vai trò là web server. Client chỉ giao tiếp trực tiếp với proxy server. Reverse proxy sẽ chuyển yêu cầu từ client tới web server và đáp lại theo chiều ngược lại.

Có 2 mô hình reverse proxy: - Reverse proxy bảo vệ.

48

- Reverse proxy tích hợp.

Hình 3.8: Mô hình nhiều máy chủ và Proxy ngược

Một phần của tài liệu Quản lý quản trị các dịch vụ mạng (Trang 36)