java基礎(chǔ)-day69-Nginx02

五、Nginx負(fù)載均衡【重點(diǎn)


Nginx為我們默認(rèn)提供了三種負(fù)載均衡的策略:

輪詢:將客戶端發(fā)起的請求,平均的分配給每一臺服務(wù)器。

權(quán)重:會將客戶端的請求,根據(jù)服務(wù)器的權(quán)重值不同,分配不同的數(shù)量。

ip_hash:基于當(dāng)前發(fā)起請求的客戶端的ip地址,如果ip地址不變,始終會將請求發(fā)送到當(dāng)前的服務(wù)器上。

image.png

5.1 輪詢

想實現(xiàn)Nginx輪詢負(fù)載均衡機(jī)制只需要在default.conf配置文件中添加以下內(nèi)容

upstream 名字 {
  server ip:port;
  server ip:port;
  ...
}
server {
  listen 80;
  listen  [::]:80;
  server_name localhost;
  
  location / {
    proxy_pass http://upstream的名字/;
  }
}

例如:(注意:upstream的名字不要使用下劃線)

upstream my-server {
  server 39.98.132.196:8080;
  server 39.98.132.196:8081;
}
server {
  listen 80;
  listen  [::]:80;
  server_name localhost;
  
  location / {
    proxy_pass http://my-server/;
  }
}
[root@iz8vbdmrir2n6xqzrbd93hz docker_nginx]# cd ..
[root@iz8vbdmrir2n6xqzrbd93hz opt]# ls
containerd  docker_mysql_tomcat  docker_nginx  docker_ssm  yangl
[root@iz8vbdmrir2n6xqzrbd93hz opt]# cd docker_ssm/
[root@iz8vbdmrir2n6xqzrbd93hz docker_ssm]# ls
docker-compose  Dockerfile  video-web.war
[root@iz8vbdmrir2n6xqzrbd93hz docker_ssm]# cd docker-compose/
[root@iz8vbdmrir2n6xqzrbd93hz docker-compose]# ls
docker-compose.yml
[root@iz8vbdmrir2n6xqzrbd93hz docker-compose]# docker-compose-Linux-x86_64 up -d
Starting video-ssm ... done
[root@iz8vbdmrir2n6xqzrbd93hz docker-compose]# cd ..
[root@iz8vbdmrir2n6xqzrbd93hz docker_ssm]# cd ..
[root@iz8vbdmrir2n6xqzrbd93hz opt]# cd docker_nginx/
[root@iz8vbdmrir2n6xqzrbd93hz docker_nginx]# ls
conf.d  docker-compose.yml
[root@iz8vbdmrir2n6xqzrbd93hz docker_nginx]# cd conf.d/
[root@iz8vbdmrir2n6xqzrbd93hz conf.d]# ls
default.conf
[root@iz8vbdmrir2n6xqzrbd93hz conf.d]# vim default.conf 
[root@iz8vbdmrir2n6xqzrbd93hz conf.d]# cd ..
[root@iz8vbdmrir2n6xqzrbd93hz docker_nginx]# ls
conf.d  docker-compose.yml
[root@iz8vbdmrir2n6xqzrbd93hz docker_nginx]# docker-compose-Linux-x86_64 restart
Restarting nginx ... done

5.2 權(quán)重

實現(xiàn)權(quán)重的方式

upstream 名字 {
  server ip:port weight=權(quán)重比例;
  server ip:port weight=權(quán)重比例;
  ...
}
server {
  listen 80;
  server_name localhost;
  
  location / {
    proxy_pass http://upstream的名字/;
  }
}

例如:

upstream my-server {
  server 39.98.132.196:8080 weight=5;
  server 39.98.132.196:8081 weight=1;
}
server {
  listen 80;
  listen  [::]:80;
  server_name localhost;
  
  location / {
    proxy_pass http://my-server/;
  }
}
[root@iz8vbdmrir2n6xqzrbd93hz docker_nginx]# cd conf.d/
[root@iz8vbdmrir2n6xqzrbd93hz conf.d]# vim default.conf 
[root@iz8vbdmrir2n6xqzrbd93hz conf.d]# cd ..
[root@iz8vbdmrir2n6xqzrbd93hz docker_nginx]# docker-compose-Linux-x86_64 restart
Restarting nginx ... done

5.3 ip_hash

ip_hash實現(xiàn),只需要添加一個 ip_hash 配置即可

upstream 名字 {
  ip_hash; # 配置ip_hash
  server ip:port;
  server ip:port;
  ...
}
server {
  listen 80;
  server_name localhost;
  
  location / {
    proxy_pass http://upstream的名字/;
  }
}

六、Nginx動靜分離【重點(diǎn)


Nginx的并發(fā)能力公式:

worker_processes * worker_connections / 4 | 2 = Nginx最終的并發(fā)能力

動態(tài)資源需要/4,靜態(tài)資源需要/2.

Nginx通過動靜分離,來提升Nginx的并發(fā)能力,更快的給用戶響應(yīng)。

6.1 動態(tài)資源代理

使用proxy_pass動態(tài)代理

# 配置如下
location / {
  proxy_pass 路徑;
}

6.2 靜態(tài)資源代理

使用root靜態(tài)代理

# 配置如下
location / {
  root 靜態(tài)資源路徑;
  index 默認(rèn)訪問路徑下的什么資源;
  autoindex on; # 代表展示靜態(tài)資源全的全部內(nèi)容,以列表的形式展開。
}

# 先修改docker,添加一個數(shù)據(jù)卷,映射到Nginx服務(wù)器的一個目錄
# 添加了index.html和1.jpg靜態(tài)資源
# 修改配置文件
[root@iz8vbdmrir2n6xqzrbd93hz docker_nginx]# ls
conf.d  docker-compose.yml
[root@iz8vbdmrir2n6xqzrbd93hz docker_nginx]# vim docker-compose.yml 

修改docker-compose.yml為如下內(nèi)容:

version: '3.1'
services:
  nginx:
    restart: always
    image: daocloud.io/library/nginx:latest
    container_name: nginx
    ports:
      - 80:80
    volumes:
      - /opt/docker_nginx/conf.d/:/etc/nginx/conf.d
      - /opt/docker_nginx/img/:/data/img
      - /opt/docker_nginx/html/:/data/html

重啟再查看,目錄已經(jīng)創(chuàng)建

[root@iz8vbdmrir2n6xqzrbd93hz docker_nginx]# docker-compose-Linux-x86_64 down
Stopping nginx ... done
Removing nginx ... done
Removing network docker_nginx_default
[root@iz8vbdmrir2n6xqzrbd93hz docker_nginx]# docker-compose-Linux-x86_64 up -d
Creating network "docker_nginx_default" with the default driver
Creating nginx ... done
[root@iz8vbdmrir2n6xqzrbd93hz docker_nginx]# ls
conf.d  docker-compose.yml  html  img

分別在 html 以及 img 目錄中拷貝對應(yīng)的 html 頁面和圖片即可,然后修改 Nginx 的 default.conf 配置文件

upstream my-server {
  server 39.98.132.196:8080 weight=5;
  server 39.98.132.196:8081 weight=1;
}
server {
  listen 80;
  listen  [::]:80;
  server_name localhost;

  # 代理到html的靜態(tài)資源
  location /html {
    root /data;   #由于location后面寫的是/html,所以root后的路徑就不用寫成/data/html,/html會默認(rèn)放在/data后面
    index student.html;
  }

  # 代理到img的靜態(tài)資源
  location /img {
    root /data;
    autoindex on;
  }
}
[root@iz8vbdmrir2n6xqzrbd93hz docker_nginx]# cd conf.d/
[root@iz8vbdmrir2n6xqzrbd93hz conf.d]# ls
default.conf
[root@iz8vbdmrir2n6xqzrbd93hz conf.d]# vim default.conf 
[root@iz8vbdmrir2n6xqzrbd93hz conf.d]# cd ..
[root@iz8vbdmrir2n6xqzrbd93hz docker_nginx]# docker-compose-Linux-x86_64 restart
Restarting nginx ... done

瀏覽器分別訪問以下地址進(jìn)行測試:

  http://39.98.132.196/html/ (查看之前拷貝的student.html頁面)

  http://39.98.132.196/img/2.jpg (注:2.jpg是拷貝的圖片名稱)

  http://39.98.132.196/img/ (注:可以看到當(dāng)前目錄下的所有文件)

七、Nginx集群


單點(diǎn)故障,避免nginx的宕機(jī),導(dǎo)致整個程序的崩潰

準(zhǔn)備多臺Nginx。

準(zhǔn)備keepalived,監(jiān)聽nginx的健康情況。

準(zhǔn)備haproxy,提供一個虛擬的路徑,統(tǒng)一的去接收用戶得請求。

Nginx集群
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Nginx介紹 1.1引言 為什么要學(xué)習(xí) Nginx問題1:客戶端到底要將請求發(fā)送給哪臺服務(wù)器問題2:如果所有...
    yjtuuige閱讀 1,384評論 1 25
  • 1 nginx介紹 nginx是一款高性能的http 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3...
    煩遠(yuǎn)遠(yuǎn)閱讀 1,072評論 0 0
  • 當(dāng)讓內(nèi)網(wǎng)用戶通過一個有外網(wǎng)地址的網(wǎng)關(guān)訪問互聯(lián)網(wǎng)時,內(nèi)網(wǎng)主機(jī)的網(wǎng)關(guān)都指向其中有外網(wǎng)的主機(jī)的內(nèi)網(wǎng)地址,一般在網(wǎng)關(guān)處添加...
    SRE1閱讀 1,837評論 1 3
  • Nginx安裝 docker-compose.yml 配置文件 nginx 目錄下 nginx.conf ngin...
    黑人毅的粉絲閱讀 294評論 0 0
  • Nginx負(fù)載均衡 1、負(fù)載均衡的作用 如果你的nginx服務(wù)器給2臺web服務(wù)器做代理,負(fù)載均衡算法采用輪詢,那...
    漫步云端vv閱讀 649評論 0 1

友情鏈接更多精彩內(nèi)容