linux實現nginx負載均衡


1,本地虛擬機安裝好環境,我的是lnmp,虛擬機訪問正常(關於如何安裝環境就不一一介紹,自行百度)
2,從第一台安裝好的主機克隆三台虛擬機
如圖:
my_linux為我的第一台主機,其他三台是克隆的(一主三輔)
主服務器:192.168.110.129
輔服務器:192.168.110.131
192.168.110.132
192.168.110.133

3,了解一下nginx負載的5種模式
nginx的負載均衡有5種模式:
1)、輪詢(默認)
每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。
2)、weight
指定輪詢幾率,weight和訪問比率成正比,用於后端服務器性能不均的情況。
3)、ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。
4)、fair (第三方)
按后端服務器的響應時間來分配請求,響應時間短的優先分配。
5)、url_hash(第三方)
根據請求的url的hash值將請求分到不同的機器中,當后台服務器為緩存的時候效率高

4,在本地host文件中配置測試域名
192.168.110.129 www.my_linux.com
5,在主服務器查找nginx.conf文件
打開:vim /usr/local/nginx/conf/nginx.conf
以下使用輪詢方式負載
在配置文件中添加如圖代碼

本機加入輪詢,另加一個端口8080,使用域名訪問www.my_linux.com:8080訪問正常

server{
 listen 8080;
 server_name www.my_linux.com;
 location / {
 root html;
 index index.html index.htm index.php;
 }
 }

使用輪詢方式負載均衡

  upstream www.my_linux.com {
      server 192.168.110.131:80;
      server 192.168.110.132:80;
      server 192.168.110.133:80;
      server 127.0.0.1:8080;
      }

注意:proxy_pass 后面域名和upstream 配置相同

 location / {
        proxy_pass              http://www.my_linux.com;
        root   html;
        index  index.html index.htm index.php;
    }

保存退出:wq
重啟nginx/usr/local/nginx/sbin/nginx -s reload
修改nginx下html文件,增加一行每台主機的ip
vim /usr/local/nginx/html/index.html
瀏覽器訪問www.my_linux.com
如圖:



每刷新一次,ip都在變,說明輪詢成功

權重負載代碼,服務器性能越好,可分配更大權重。weight越大,被訪問幾率越大

 upstream www.my_linux.com {
  server 192.168.110.129 weight=1;
  server 192.168.110.132 weight=2;
  server 192.168.110.131 weight=3;
  server 192.168.110.133 weight=4;
  }

ip_hash

upstream www.my_linux.com {
 ip_hash;
  server 192.168.110.131:80;
  server 192.168.110.132:80;
  server 192.168.110.133:80;
 }

fair

upstream www.my_linux.com{
    server 192.168.110.131;
    server 192.168.110.132;
    server 192.168.110.133;
    fair; 
}

url_hash

upstream www.my_linux.com {
  server 192.168.110.131:80;
  server 192.168.110.132:80;
  server 192.168.110.133:80;
  hash $request_uri;
  hash_method crc32;
 }

如下是訪問php文件

在主服務器和從服務器建立index.php文件,分別輸出當前服務器ip
需要去除nginx.conf配置文件里面對php解析處理的配置,因為在80這里配置,就會指向本服務器
如圖:

再把注釋掉的這部分代碼加入到8080這個server里面

location ~ \.php$ {
  root            html;
  fastcgi_pass    127.0.0.1:9000;
  fastcgi_index   index.php;
  include         fastcgi.conf;
  }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM