1. 程式人生 > >2018-07-06筆記(LNMP配置)

2018-07-06筆記(LNMP配置)

更多 install file 不同 比較 serve 實驗 裝包 兩個

12.17 Nginx負載均衡

要理解負載均衡,必須先搞清楚正向代理和反向代理
技術分享圖片\
註:
正向代理,代理的是用戶。
反向代理,代理的是服務器。
一、什麽是負載均衡
負載均衡是用反向代理的原理實現的,代理一臺機器,叫做代理服務器,代理多臺機器就叫做負載均衡。nginx通過proxy_pass_http 配置代理站點,upstream實現負載均衡
當一臺服務器的單位時間內的訪問量越大時,服務器壓力就越大,大到超過自身承受能力時,服務器就會崩潰。為了避免服務器崩潰,讓用戶有更好的體驗,我們通過負載均衡的方式來分擔服務器壓力。
我們可以建立很多很多服務器,組成一個服務器集群,當用戶訪問網站時,先訪問一個中間服務器,在讓這個中間服務器在服務器集群中選擇一個壓力較小的服務器,然後將該訪問請求引入該服務器。如此以來,用戶的每次訪問,都會保證服務器集群中的每個服務器壓力趨於平衡,分擔了服務器壓力,避免了服務器崩潰的情況。

二、負載均衡的幾種常用方式(算法)
(1)、輪詢(默認)
每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自動剔除
(2)、weight (權重)
指定輪詢權重,weight和訪問比率成正比,用於後端服務器性能不均的情況
(3)、ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session的問題
(4)、fair(第三方)
按後端服務器的響應時間來分配請求,響應時間短的優先分配
(5)、url_hash(第三方)
按訪問url的hash結果來分配請求,使每個url定向到同一個後端服務器,後端服務器為緩存時比較有效

三、配置nginx負載均衡

在配置負載均衡前先介紹一個命令:dig 如果沒有這個命令需要安裝包:yum -y install bind-utils
dig是用來進行域名解析的,例如我解析www.qq.com這個域名,使用dig能夠反饋更多的解析信息

[root@lnmp-server ~]# dig www.qq.com
; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> www.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23121
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.qq.com.            IN  A
;; ANSWER SECTION:
www.qq.com.     220 IN  A   58.60.9.21
www.qq.com.     220 IN  A   59.37.96.63
;; Query time: 37 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: 日 7月 08 20:50:20 CST 2018
;; MSG SIZE  rcvd: 71

現在我們開始配置負載均衡,新建一個虛擬主機配置文件:

[root@lnmp-server ~]# vim /usr/local/nginx/conf/vhost/ld.conf`

增加以下內容,我拿解析到www.qq.com的ip來當服務器做這個實驗:

upstream qq    #upstream是一個模塊,需要使用它來定義多個IP    YY_com=名字可以任意修改
{
    ip_hash;      #ip_hash是為了讓同一個用戶始終保持在同一個機器上
    #定義兩個服務器的ip,qq.com解析出來的ip
    server 58.60.9.21:80;
    server 59.37.96.63:80;
}
server
{
    listen 80;    #定義監聽端口
    server_name www.qq.com;     #定義域名
    location /
    {
        proxy_pass      http://qq;     #upstream的名稱,這個名稱代表著upstream裏定義的ip
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

編輯完之後保存退出,先不要重新加載配置文件,先測試一下用本機ip去訪問www.qq.com這個域名看看結果會是什麽:

[root@lnmp-server vhost]# curl -x127.0.0.1:80 www.qq.com
This is default server aaa

檢測是否有錯並重載

[root@lnmp-server ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@lnmp-server ~]# /usr/local/nginx/sbin/nginx -s reload

再用curl測試


[root@lnmp-server vhost]# curl -x127.0.0.1:80 www.qq.com
。。。
    </script>
    <!-- ?1·?? ??-->
    <script>
     // ??·?

2018-07-06筆記(LNMP配置)