Công cụ thành viên

Công cụ trang web


web_server:cai-dat-server-chi-tai-cao

Đây là một phiên bản cũ của tài liệu!


Cài đặt Server chịu tải cao chạy NukeViet 4

project này làm cho NukeViet 4 theo hướng tối ưu NukeViet cho các site có lượng truy cập lớn và rất lớn, không làm cho các site nhỏ, hay trên các hosting được. Khi xây dựng cần có nhiểu server riêng để cấu hình mới (Hoặc sử dụng trên các VPS mua tại các Cloud có thể thiết lập được Private Network)

1) Mô hình áp dụng:

Mô hình này được bạn Việt bên 123host đưa ra

Mô hình này đáp ứng được vấn đề gì? Đáp ứng được chia tải PHP và MySQL cho những website traffic cực lớn. Có đáp ứng được dự phòng không? Có nhưng chưa đủ, mới chỉ dự phòng cho các server webapp, database slave.

2) Các lưu ý

Mô hình này là mô hình này mình cố tình làm đơn giản nhất để phù hợp với cộng đồng. Ngoài các chú thích đã có trên hình, có một số lưu ý như sau:

Server lb1.nukeivet.vn:

Hiện chỉ chạy 1 mình, chưa có server dự phòng cho nó (HA - high availability). Nếu cần, mình sẽ lên một mô hình HA đầy đủ, tuy nhiên sẽ sử dụng thêm một số công nghệ phức tạp nên ban đầu mình sẽ không đưa vào. Khi có 1 trong 3 server web app gặp sự cố, Load balancer sẽ tự động tách nó ra, đảm bảo hệ thống hoạt động xuyên suốt. Như vậy các server webapp này không những chia tải mà còn dự phòng lẫn nhau. Thuật toán load balancing: Tùy chọn Caching phía server? Tất nhiên là được, nếu cache sẽ cache tại đây. Nhưng lại là vấn đề nâng cao và mình không đề cập tại mô hình này

Source code (bao gồm các file php và các file static) sẽ được lưu tập trung tại server lb1.nukeviet.vn. Các server webapp sẽ mount đến server lb1 qua network sử dụng NFS (network file system).

Lưu ý về perfomance: Nếu source website thường xuyên thay đổi (ví dụ xóa / tạo file liên tục xuống ổ cứng) thì NFS không phải là sự lựa chọn tối ưu. Lúc này có thể lưu file phân tán tại chính server webapp hoặc dùng công nghệ khác.

Lưu static file tại CDN?:

Nếu có CDN riêng thì sẽ để static file tại CDN hoặc CDN pass traffic static và LB1 và cache tại CDN. Phần này không ảnh hưởng đến mô hình.

MySQL Source code nukeviet cần hỗ trợ master/slave MySQL để điều hướng truy vấn mang tính chất thay đổi (insert, update, delete.v.v.) sang server Master, Các truy vấn chỉ đọc sẽ điều hướng đều sang các server slave còn lại. Tại đây server Master database cũng chưa có server dự phòng cho nó. Và cũng như mình đã trình bày, dự phòng này sẽ được đưa vào một mô hình nâng cao khác, không phải mô hình này.

Session Nukeviet sử dụng default session của server thì có thể dùng Memcache để lưu session tập trung tại server lb1.nukeviet.vn (cấu hình session.handler và session.save_path tại php.ini)

3) Cấu hình server lb1.nukeivet.vn

Sử dụng hệ điều hành CentOS 7.1, server này có 2 cạc mạng

Public Network 192.168.100.101 để nối thẳng ra internet
Private Network 192.168.200.100 để kết nối với các server nội bộ.

Bước 1: Cập nhật HDH

yum update -y

Bước 2: Nạp package

Do NGINX không có sẵn trong gói Yum mặc định của CentOS nên chúng ta phải nạp một package từ bên ngoài vào.

Sau đó tạo 1 file tên là nginx.repo trong thư mục /etc/yum.repos.d/ rồi copy đoạn dưới đây vào:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

Nếu bạn muốn dùng NGINX bản mới nhất thì dùng đoạn dưới: (Tôi chọn bản này)

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

Bước 3: Cài đặt NGINX

sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo firewall-cmd --permanent --zone=public --add-service=http 
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

Bước 4: Cấu hình NGINX

## Main configuration file ##
/etc/nginx/nginx.conf
 
## Virtualhost configuration files on ##
/etc/nginx/sites-available/
/etc/nginx/sites-enabled/
 
## Other config files on (if needed) ##
/etc/nginx/conf.d/

Mở file /etc/nginx/nginx.conf

Cấu hình worker_processes bằng số CPU của máy (Tìm số CPU bằng lệnh cat /proc/cpuinfo |grep processor)

Cấu hình các thông số trong thẻ http {

server_tokens off;

Khởi động lại nginx: sudo systemctl restart nginx sau đó truy cập vào địa chỉ IP để kiểm tra

Bước 5: Cài đặt PHP

Cài CentOS 7.1 epel repository

sudo yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Cài PHP các module cần thiết:

yum --enablerepo=remi,remi-php56 install php-fpm php-mysql php-common php-mbstring php-mcrypt php-gd -y

Kích hoạt NGINX, PHP và thêm 2 ứng dụng này vào danh sách ứng dụng tự khởi động nếu reboot server (gõ lần lượt các lệnh):

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

Kiểm tra phiên bản NGINX và PHP-FPM:

nginx -v
php-fpm -v

Thiết lập lại user và group chạy PHP

Mặc định PHP-FPM sẽ chỉ định user tên là apache và group tên apache để chạy nó, nhưng ở đây chúng ta không sử dụng Apache mà là NGINX nên bạn cần mở file /etc/php-fpm.d/www.conf lên và tìm:

user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

Thay thành

user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

Bây giờ bạn hãy mở file default.conf trong thư mục /etc/nginx/conf.d/ Tìm đoạn

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

Sửa thành

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.php index.htm;
    }

Tìm đoạn

    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

Sửa thành

    location ~ \.php$ {
        root           /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

Khởi động lại PHP-FPM

sudo systemctl restart php-fpm
sudo systemctl restart nginx
web_server/cai-dat-server-chi-tai-cao.1449403431.txt.gz · Sửa đổi lần cuối: 2015/12/06 19:03 bởi vuthao