Nginx負載均衡-----------減輕伺服器壓力
配置環境,安裝包下載
系統:Linux CentOS 6.5
Tomcat:6.0,7.0(兩個不同版本的方便測試)
Nginx安裝包及其依賴包:CSDN下載地址
1.安裝gcc 和 c++編譯包
檢測是否安裝編譯包命令:(安裝會列印版本資訊)
# Gcc –v
--或者
# rpm -ql gcc
解除安裝已安裝編譯包命令:
# rpm -e gcc [-nodepts]
聯網安裝命令:
# yum -y install gcc
# yum install -y gcc gcc-c++
開始安裝介面:
注意:聯網安裝需要外網的支援,在虛擬機器上的話請選擇網路橋接,就可以連線到外網,安裝可能需要一段時間耐心等待
2.安裝依賴包
依次安裝順序為:
openssl-fips-x.x.x.tar.gz
zlib-x.x.x.tar.gz
pcre-x.xx.tar.gz
ngx_cache_purge-x.x.tar.gz
- 安裝openssl
解壓
# tar -zxvf openssl-fips-2.0.9.tar.gz
進入解壓目錄
# cd openssl-fips-2.0.9
安裝(./config –prefix=安裝目錄)
# ./config --prefix=/usr/local/nginx
# make && make install
- 安裝zlib
解壓
# tar -zxvf zlib-1.2.8.tar.gz
進入解壓目錄
# cd zlib-1.2.8
安裝(./configure –prefix=安裝目錄)
# ./configure --prefix=/usr/local/nginx
# make && make install
- 安裝pcre
解壓
# tar -zxvf pcre-8.37.tar.gz
進入解壓目錄
# cd pcre-8.37
安裝(./configure –prefix=安裝目錄(絕對路徑))
# ./configure --prefix=/usr/local/nginx
# make && make install
- 安裝ngx_cache_purge(解壓即可)
解壓
# tar -zxvf ngx_cache_purge-2.2.tar.gz
3.安裝Nginx
解壓
# tar -zxvf nginx-1.9.2.tar.gz
進入解壓目錄
# cd nginx-1.9.2
安裝Nginx(./configure –prefix=安裝目錄 –with-pcre=解壓目錄 –with-zlib=解壓目錄 –with-openssl=解壓目錄)
# ./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/nginx-gz/pcre-8.37 --with-zlib=/usr/local/nginx-gz/zlib-1.2.8 --with-openssl=/usr/local/nginx-gz/openssl-fips-2.0.9
# make && make install
- 安裝 pcre-devel 包
# yum -y install pcre-devel
4.配置快取
./configure –add-module=ngx_cache_purge解壓目錄
–prefix=nginx安裝目錄
–with-openssl=解壓目錄
–with-zlib=解壓目錄
–with-http_stub_status_module –with-http_ssl_module
# ./configure --add-module=/usr/local/nginx-gz/ngx_cache_purge-2.2 --prefix=/usr/local/nginx --with-openssl=/usr/local/nginx-gz/openssl-fips-2.0.9 --with-zlib=/usr/local/nginx-gz/zlib-1.2.8 --with-http_stub_status_module --with-http_ssl_module
編譯
【此時不用make install,只編譯就行,編譯後二進位制檔案在原始碼包objs目錄下】
# make
替換原來的nginx的二進位制檔案:
cp 解壓目錄/nginx-1.9.2/objs/nginx 安裝目錄/sbin/
# cp /usr/local/nginx-gz/nginx-1.9.2/objs/nginx /usr/local/nginx/sbin/
5.檢測
檢查80埠是否佔用
# netstat -ano |grep 80
檢測是否安裝成功
啟動Nginx
# cd /usr/local/nginx/sbin
# ./nginx
到網頁輸入改虛擬機器地址出現一下內容就為成功
6.配置負載均衡
在 conf檔案下新增修改如下配置並重啟
gzip.conf
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
nginx.conf
其中:
upstream mysvr配置兩個我們要訪問的伺服器,當壓力不同時會自動進行分配
server配置我們實際訪問的地址,也就是虛擬機器主機的埠、名字、編碼格式
#執行使用者
user nobody nobody;
#啟動程序
worker_processes 2;
#全域性錯誤日誌及PID檔案
error_log logs/error.log notice;
pid logs/nginx.pid;
#工作模式及連線數上限
events {
use epoll;
worker_connections 1024;
}
#設定http伺服器,利用它的反向代理功能提供負載均衡支援
http {
#設定mime型別
include mime.types;
default_type application/octet-stream;
#設定日誌格式
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
log_format download '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"';
#設定請求緩衝
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
#開啟gzip模組
gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;
output_buffers 1 32k;
postpone_output 1460;
#設定access log
access_log logs/access.log main;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
#設定負載均衡的伺服器列表
upstream mysvr {
#weigth引數表示權值,權值越高被分配到的機率越大
#本機上的Squid開啟3128埠
server 192.168.0.110:8080 weight=1;
server 192.168.0.121:8080 weight=5;
}
#設定虛擬主機
server {
listen 8086;
server_name gkNginx;
charset gb2312;
#設定本虛擬主機的訪問日誌
access_log logs/www.yejr.com.access.log main;
#如果訪問 /img/*, /js/*, /css/* 資源,則直接取本地檔案,不通過squid
#如果這些檔案較多,不推薦這種方式,因為通過squid的快取效果更好
location ~ ^/(img|js|css)/ {
root /data3/Html;
expires -1;
}
#對 "/" 啟用負載均衡
location / {
proxy_pass http://mysvr;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
#設定檢視Nginx狀態的地址
#location /NginxStatus {
# stub_status on;
# access_log on;
# auth_basic "NginxStatus";
# auth_basic_user_file conf/htpasswd;
#}
}
}
修改這兩個檔案之後記得重新載入配置檔案並且測試
在sbin目錄下重新載入配置檔案,並重啟
# ./nginx -s reload
重啟完成之後我們輸入配置的虛擬IP進行測試:
從圖中我們可以看到我們同一個地址訪問了兩個不同的Tomcat,這樣我們的負載均衡就配置成功了。
下面附一些Nginx常用的命令:
啟動ngnix
安裝目錄/sbin/ngnix –s reload 重啟
安裝目錄/sbin/ngnix –s stop 停止
安裝目錄/sbin/ngnix –s start 啟動
nginx -s reload :修改配置後重新載入生效
nginx -s reopen :重新開啟日誌檔案
nginx -t -c /path/to/nginx.conf 測試nginx配置檔案是否正確
開機啟動
shell加入系統服務即可
chmod +x /etc/rc.d/init.d/nginx (設定可執行許可權)
chkconfig –add nginx (新增系統服務)