Nginx配置負(fù)載均衡

負(fù)載均衡(Load Balance),其含義就是指將負(fù)載(工作任務(wù))進(jìn)行平衡、分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行運(yùn)行,例如FTP服務(wù)器、Web服務(wù)器、企業(yè)核心應(yīng)用服務(wù)器和其它主要任務(wù)服務(wù)器等,從而協(xié)同完成工作任務(wù)。
例如,當(dāng)我們網(wǎng)站的訪問(wèn)量少的時(shí)候,單臺(tái)服務(wù)器足以處理客戶的請(qǐng)求。但隨著我們的客戶量,訪問(wèn)量越來(lái)越多時(shí),單臺(tái)服務(wù)器處理不過(guò)來(lái)就會(huì)造成響應(yīng)時(shí)長(zhǎng)過(guò)長(zhǎng),用戶體驗(yàn)差,甚至造成服務(wù)器宕機(jī),此時(shí)我們就需要配置服務(wù)器集群,多臺(tái)服務(wù)器共同為用戶提供服務(wù),減輕單臺(tái)服務(wù)器壓力;而且當(dāng)其中一臺(tái)服務(wù)器出現(xiàn)問(wèn)題宕機(jī)后,其他服務(wù)器依然可以正常接收處理用戶請(qǐng)求,提高了系統(tǒng)的穩(wěn)定性,用戶體驗(yàn)也更好。
本文介紹Nginx配置反向代理實(shí)現(xiàn)負(fù)載均衡的步驟

一、正向代理與反向代理

1. 正向代理

正向代理類(lèi)似一個(gè)跳板機(jī),代理訪問(wèn)外部資源
比如我們國(guó)內(nèi)訪問(wèn)谷歌,直接訪問(wèn)訪問(wèn)不到,我們可以通過(guò)一個(gè)正向代理服務(wù)器,請(qǐng)求發(fā)到代理服,代理服務(wù)器能夠訪問(wèn)谷歌,這樣由代理去谷歌取到返回?cái)?shù)據(jù),再返回給我們,這樣我們就能訪問(wèn)谷歌了
正向代理的用途:

  1. 訪問(wèn)原來(lái)無(wú)法訪問(wèn)的資源,如google
  2. 可以做緩存,加速訪問(wèn)資源
  3. 對(duì)客戶端訪問(wèn)授權(quán),上網(wǎng)進(jìn)行認(rèn)證
  4. 代理可以記錄用戶訪問(wèn)記錄(上網(wǎng)行為管理),對(duì)外隱藏用戶信息
2. 反向代理

反向代理(Reverse Proxy)實(shí)際運(yùn)行方式是指以代理服務(wù)器來(lái)接受internet上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請(qǐng)求連接的客戶端,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)服務(wù)器
反向代理的作用:

  1. 保證內(nèi)網(wǎng)的安全,阻止web攻擊,大型網(wǎng)站,通常將反向代理作為公網(wǎng)訪問(wèn)地址,Web服務(wù)器是內(nèi)網(wǎng)
  2. 負(fù)載均衡,通過(guò)反向代理服務(wù)器來(lái)優(yōu)化網(wǎng)站的負(fù)載
image.png

二、負(fù)載均衡

現(xiàn)在我們搭建一個(gè)由兩臺(tái)服務(wù)器組成的集群為用戶提供服務(wù)。
第一臺(tái)服務(wù)器是:192.168.204.133
第二臺(tái)服務(wù)器是:192.168.204.134
那么我們可以這樣配置:所有的用戶通過(guò)域名解析訪問(wèn)到第一臺(tái)服務(wù)器:192.168.204.133的80端口,80端口由Nginx監(jiān)聽(tīng),接收到用戶請(qǐng)求后,按照一定的策略(平均,權(quán)重,ip_hash等等)分發(fā)到真正處理請(qǐng)求的服務(wù)器中,我們?cè)O(shè)置真正處理請(qǐng)求的服務(wù)器是192.168.204.133的8080端口 和 192.168.204.134的80端口。這樣,假如我們有100個(gè)請(qǐng)求同時(shí)請(qǐng)求我們的網(wǎng)站,那么可以把50個(gè)請(qǐng)求轉(zhuǎn)發(fā)到192.168.204.133,另外50個(gè)請(qǐng)求轉(zhuǎn)發(fā)到192.168.204.134,從而達(dá)到負(fù)載均衡的效果,減輕單機(jī)處理所有請(qǐng)求的壓力。


image.png

三、負(fù)載均衡配置

注意點(diǎn):
1,新裝的Linux可能只允許訪問(wèn)80端口,其他端口不允許訪問(wèn),此時(shí)需要配置防火墻
2,nginx+php環(huán)境訪問(wèn)顯示access denied 解決辦法:將php.ini中cgi.fix_pathinfo從0改為1。        
3,fastcgi_pass有兩種配置,unix:/tmp/php-cgi.sock 和 127.0.0.1:9000; 默認(rèn)是前者

1,第一臺(tái)服務(wù)器192.168.204.133的Nginx配置:
其中192.168.204.133:80提供代理服務(wù),負(fù)責(zé)分發(fā)用戶發(fā)送的請(qǐng)求到集群節(jié)點(diǎn),192.168.204.133:8080提供真實(shí)服務(wù),為一個(gè)集群節(jié)點(diǎn)

#nginx進(jìn)程數(shù),建議設(shè)置為等于CPU總核心數(shù)。該配置的數(shù)值越大,Nginx的并發(fā)能力就越強(qiáng)
worker_processes auto;
worker_cpu_affinity auto;

#全局錯(cuò)誤日志定義類(lèi)型,[ debug | info | notice | warn | error | crit ]
error_log  /home/wwwlogs/nginx_error.log  crit;


pid        /usr/local/nginx/logs/nginx.pid; #進(jìn)程pid文件
worker_rlimit_nofile 51200;                 #指定進(jìn)程可以打開(kāi)的最大描述符:數(shù)目

events
   {
       use epoll;
       worker_connections 51200;#數(shù)值越大,并發(fā)能力越強(qiáng)
       multi_accept off;
       accept_mutex off;
   }


http
{
   include       mime.types;           #引入一個(gè)外部文件: ./mine.types 該文件放著大量的媒體類(lèi)型 
   default_type  application/octet-stream;

   # 負(fù)載服務(wù)器節(jié)點(diǎn)
   upstream my-server
   {
       server 192.168.204.133:8080;
       server 192.168.204.134:80;
   }

   # 代理服務(wù)器配置:
   server
   {
       listen  80;                         #監(jiān)聽(tīng)的端口
       server_name _;                      #訪問(wèn)域名

       location /
       {
           proxy_pass http://my-server/;   #配置想要分發(fā)到的節(jié)點(diǎn)
       }

   }

   # 服務(wù)器節(jié)點(diǎn)192.168.204.133:8080 配置:
   server
   {
       listen  8080;                       #監(jiān)聽(tīng)的端口
       server_name _;                      #訪問(wèn)域名
       index index.html index.php;         #默認(rèn)訪問(wèn)的文件
       root /home/wwwroot/default/balance; #網(wǎng)站根目錄

       location /
       {
           index index.html index.php;
       }

       #命中php文件,交由php-cgi處理,非PHP應(yīng)用忽略以下配置
       location ~ \.php(.*)$  
       {
           fastcgi_pass  unix:/tmp/php-cgi.sock;
           fastcgi_index  index.php;
           fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
           fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
           fastcgi_param  PATH_INFO  $fastcgi_path_info;
           fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
           include        fastcgi_params;
       }
   }

}

2,第二臺(tái)服務(wù)器192.168.204.134的Nginx配置:

worker_processes auto;
worker_cpu_affinity auto;

error_log  /home/wwwlogs/nginx_error.log  crit;
pid        /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;

events
    {
        use epoll;
        worker_connections 51200;
        multi_accept off;
        accept_mutex off;
    }
http
{
    include       mime.types;           
    default_type  application/octet-stream;


    # 服務(wù)器節(jié)點(diǎn)192.168.204.134 配置:
    server
    {
        listen  80;                         #監(jiān)聽(tīng)的端口
        server_name _;                      #訪問(wèn)域名
        index index.html index.php;         #默認(rèn)訪問(wèn)的文件
        root /home/wwwroot/default;         #網(wǎng)站根目錄

        location /
        {
            index index.html index.php;
        }

        #命中php文件,交由php-cgi處理,非PHP應(yīng)用忽略以下配置
        location ~ \.php(.*)$  
        {
            fastcgi_pass  unix:/tmp/php-cgi.sock;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }
    }

    #include vhost/*.conf;
}

然后我們打開(kāi)兩個(gè)瀏覽器窗口模擬兩個(gè)請(qǐng)求,共同訪問(wèn) 192.168.204.133 ,可以看,一個(gè)請(qǐng)求分發(fā)到了192.168.204.133:8080,一個(gè)請(qǐng)求分發(fā)到了192.168.204.134:80,此時(shí),負(fù)載均衡配置完成。


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

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

  • 一、負(fù)載均衡 ??負(fù)載均衡是高可用網(wǎng)絡(luò)基礎(chǔ)架構(gòu)的的一個(gè)關(guān)鍵組成部分,有了負(fù)載均衡,我們通??梢詫⑽覀兊膽?yīng)用服務(wù)器部...
    無(wú)劍_君閱讀 891評(píng)論 0 7
  • 首先搭建3臺(tái)服務(wù)器,這里我的服務(wù)器ip分別是 外網(wǎng)ip 內(nèi)網(wǎng)ip 111.230.197...
    史史小子閱讀 585評(píng)論 0 0
  • 1. 負(fù)載均衡 Nginx的負(fù)載均衡算法有以下幾種:round-robin,least-connected,ip-...
    Karl90閱讀 223評(píng)論 0 0
  • ????Nginx 是一款使用非常多的 Web 服務(wù)器,經(jīng)典的 LNMP 中的一份子。當(dāng)然 Apache 也是非常...
    Hesunfly閱讀 3,344評(píng)論 0 1
  • 之前做項(xiàng)目都是在一臺(tái)服務(wù)器上部署,向用戶提供服務(wù),隨著用戶的增多,和使用系統(tǒng)的頻繁,用戶在使用過(guò)程中感覺(jué)越來(lái)越卡,...
    Macaroon7521閱讀 1,167評(píng)論 0 0

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