之前在有道雲筆記中的記錄會逐個發佈分享,以及我的學習過程當中的理解,歡迎交流html
原理圖1:負載均衡nginx
原理圖2:反向代理web
正向代理代理的對象是客戶端,反向代理代理的對象是服務端算法
Nginx的環境依賴後端
Nginx安裝包瀏覽器
2.1切換root權限緩存
zjp@zjp-virtual-machine:~$ sudo su
[sudo] password for zjp:
root@zjp-virtual-machine:/home/zjp#
複製代碼
2.2進入安裝包所在文件夾tomcat
-> tar zxvf openssl-1.0.0e.tar.gz 解壓壓縮包
-> cd openssl-1.0.0e 進入文件夾
->./config && make && make install 開始安裝 或->./configure && make && make install
複製代碼
-> tar zxvf nginx-1.12.1.tar.gz 解壓壓縮包
-> cd nginx-1.12.1 進入文件夾
->./config && make && make install 開始安裝
複製代碼
安裝完後服務器
啓動命令:./nginxmarkdown
重啓命令:./nginx -s reload
啓動後,打開終端:ps -aux | grep nginx,查看nginx進程
nginx主線程佔用80端口。打開瀏覽器:http://localhost:80,顯示以下,搭建成功
root權限進入/usr/local/nginx/conf/ 命令:gedit nginx.conf 用文本編輯器(或者 vi)打開文件
upstream 集羣名{
server 192.168.0.155:8080;
server 192.168.0.155:9090;
}
複製代碼
在server中添加:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://集羣名;
#root html;
#index index.html index.htm;
}
...
}
複製代碼
修改後保存,重啓Nginx
瀏覽器訪問 http://localhost:80/+集羣中項目名
進入tomcat_8080服務器
或者進入tomcat_9090服務器
隨着業務不斷拓展、用戶量不斷增多,本來一臺Nginx代理的服務器已經顯得吃力,不論在性能、響應速度等都顯得力不從心,因此須要對後臺服務器作負載均衡,緩解一臺或幾臺服務器的高併發請求壓力。
負載均衡須要使用Nginx支持的HTTP Upstream模塊,該模塊經過一個簡單的算法調度來實現客戶端ip到服務端負載均衡。Upstream目前支持4種調度算法:
在Nginx的Upstream模塊中,除了能夠經過server指定到特定服務器和端口,還能夠設置服務器在負載均衡中的狀態。目前的狀態以下:
注意:當服務器的調度算法爲ip_hash時,服務器在負載均衡中的狀態不能是weight和backup
例子1:
upstream backend {
server A max_fails=3 fail_timeout=4s weight=9;
server B max_fails=3 fail_timeout=4s weight=9;
server C max_fails=3 fail_timeout=4s weight=9;
server D backup;
Server E backup;
}
複製代碼
例子2:
upstream backend {
ip_hash;
server A max_fails=3 fail_timeout=4s;
server B max_fails=3 fail_timeout=4s;
server C max_fails=3 fail_timeout=4s;
}
複製代碼
proxy_connect_timeout:與服務器鏈接的超時時間,默認60s
fail_timeout:當該時間內服務器沒響應,則認爲服務器失效,默認10s
max_fails:容許鏈接失敗次數,默認爲1
某一臺服務器宕機後,等待時間 = proxy_connect_timeout + fail_timeout*max_fails
1.緩存指令: proxy_cache_path
格式:proxy_cache_path + path + levels + keys_zone + inactive + max_size
例:proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=webpages:30m max_size=2g;
proxy_cache
格式:proxy_cache + cache_name
指定緩存區域的名字,一個相同的區域能夠在不一樣的地方使用。
proxy_cache_valid
格式:proxy_cache_valid + reply_code + time;
例:proxy_cache_valid 200 10m;
nginx.conf配置示例:
events {
worker_connections 1024;
}
http {
upstream tomcatServers {
server 192.168.0.155:8080 weight=1 max_fails=2 fail_timeout=2;
server 192.168.0.155:9090 weight=1 max_fails=2 fail_timeout=2;
server 192.168.0.155:9091 backup;
}
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=webpages:30m max_size=2g;
server {
listen 80;
server_name localhost;
add_header X-Via $server_addr;
add_header X-Cache $upstream_cache_status;
location / {
proxy_pass http://tomcatServers;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache webpages;
proxy_cache_valid 200 10m;
#root html;
#index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
複製代碼
新建緩存頁面路徑:
$ mkdir –pv /nginx/cache/webpages
$server_addr - 顯示的服務器地址
$upstream_cache_status - 緩存的狀態 可能的值爲:MISS(未命中)、Hint(命中)、Expired(請求傳遞到後臺)、Stale(後端獲得過時的應答)、Updating(正更新,使用舊的應答)等。 那麼,在這裏若是緩存的狀態爲HINT,就說明命中了緩存,也就是調用了緩存文件。
進入緩存路徑查看(使用root權限查看):
cat 命令查看文件