Nginx負載均衡


 

 

1. 環境搭建

依賴 gcc openssl-devel pcre-devel zlib-devel

1.1.安裝依賴

yum -y install gcc openssl-devel pcre-devel zlib-devel

1.2.上傳nginx壓縮包並解壓

tar -zxvf nginx-1.8.1.tar.gz 

1.3.進入目錄並執行configure命令

cd nginx-1.8.1
./configure --prefix=/home/nginx 

1.4.編譯安裝

make && make install

最終目錄結構:

1.5.啟動nginx訪問

進入nginx安裝目錄(指定好的那個文件夾)中的sbin文件夾,然后啟動nginx

cd sbin/
./nginx 

瀏覽器訪問: 虛擬機ip的80端口

 


 

nginx默認監聽80端口,當出現以上信息,說明安裝啟動成功。

 

1.6.常用命令

使用語法:nginx -s 信號 信號可以是下列之一:

  • stop - 快速關機
  • quit - 優雅的關機
  • reload - 重新加載配置文件
  • reopen - 重新打開日志文件

例如,要停止nginx進程並等待工作進程完成當前請求的服務,可以執行以下命令:

./nginx -s quit

2. 負載均衡搭建

模擬: 1個nginx 和 3個Tomcat服務

2.1.Tomcat配置

把Tomcat壓縮包解壓復制3份,並依次修改conf/server.xml中的端口配置

<Server port="18001" shutdown="SHUTDOWN">
...
  <Service name="Catalina">
    <Connector port="8001" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8441" />
  • 第一組: 18001 8001 8441
  • 第二組: 18002 8002 8442
  • 第三組: 18003 8003 8443

進入bin目錄執行./startup.sh命令啟動服務

2.2.nginx配置

修改nginx.conf文件

#user nobody;
worker_processes  1;
error_log  logs/error.log;# 開啟日志
pid        logs/nginx.pid;
...
    upstream lyf {
    server 192.168.37.220:8001; # 3個tomcat服務
    server 192.168.37.220:8002;
    server 192.168.37.220:8003;
    }
    server {
        listen       80;
        server_name  192.168.37.220;# 監聽ip
        location / {
            proxy_pass   http://lyf; # 設置代理
            index  index.html index.htm;
        }
}

lyf的部分要對應,名稱可以自由指定.

2.3.訪問nginx

本機linux測試nginx地址為: 192.168.37.220 ,為了看到訪問的是那台服務器,可以修改webapps/ROOT/index.jsp,標記為8001 8002 8003進行區別,多次訪問結果:

 


 

 

 


 

 

3. 負載均衡配置

nginx支持以下負載均衡機制

  • 循環 - 對應用程序服務器的請求以循環方式分發
  • 最少連接數 - 將下一個請求分配給活動連接數最少的服務器
  • ip-hash - 哈希函數用於確定下一個請求(基於客戶端的IP地址)應該選擇哪個服務器

3.1.加權負載平衡

權重越大,分發到的請求就越多

upstream lyf {
    server 192.168.37.220:8001 weight=3; 
    server 192.168.37.220:8002;
    server 192.168.37.220:8003;
}

3.2.最少連接負載平衡

將新請求分發給不太繁忙的服務器,避免服務器過載

upstream lyf {
    least_conn;
    server 192.168.37.220:8001; 
    server 192.168.37.220:8002;
    server 192.168.37.220:8003;
}

3.3.會話持久性

使客戶端的會話“粘滯”或“持久”,也就是說用戶如果第一次訪問被分發到8001,那么以后請求都在8001,而不會被再次分發到其他端口

upstream lyf {
    ip_hash;
    server 192.168.37.220:8001; 
    server 192.168.37.220:8002;
    server 192.168.37.220:8003;
}

3.4.訪問控制

Nginx還可以對IP的訪問進行控制,allow代表允許,deny代表禁止.

location / {
    deny 192.168.78.1;
    allow 192.168.78.0/24;
    allow 10.1.1.0/16;
    allow 192.168.1.0/32;
    deny all;
    proxy_pass http://lyf;
}

從上到下的順序,先禁止了192.168.78.1,接下來允許了3個網段,其中包含了一個ipv6,最后未匹配的IP全部禁止訪問.


免責聲明!

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



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