Nginx負載均衡的詳細配置及使用案例詳解.


感謝看過這一些列博文和評論的小夥伴, 我把本身所看到的學到的拿到這裏來分享是想和你們一塊兒學習進步, 想聽聽園友給出的意見, 也是對本身學習過程的一個總結. 
技術無止境, 咱們仍需努力!


1,話很少說, 這裏咱們來講下很重要的負載均衡, 那麼什麼是負載均衡呢? 
linux

因爲目前現有網絡的各個核心部分隨着業務量的提升,訪問量和數據流量的快速增加,其處理能力和計算強度也相應地增大,使得單一的服務器設備根本沒法承擔。在此狀況下,若是扔掉現有設備去作大量的硬件升級,這樣將形成現有資源的浪費,並且若是再面臨下一次業務量的提高時,這又將致使再一次硬件升級的高額成本投入,甚至性能再卓越的設備也不能知足當前業務量增加的需求。 
針對此狀況而衍生出來的一種廉價有效透明的方法以擴展示有網絡設備和服務器的帶寬、增長吞吐量、增強網絡數據處理能力、提升網絡的靈活性和可用性的技術就是負載均衡(Load Balance)。nginx


2, 負載均衡的種類
apache

1)一種是經過硬件來進行解決,常見的硬件有NetScaler、F五、Radware和Array等商用的負載均衡器,可是它們是比較昂貴的
2)一種是經過軟件來進行解決的,常見的軟件有LVS、Nginx、apache等,它們是基於Linux系統而且開源的負載均衡策略.

3, 這裏咱們只來講Nginx(其餘的你們有興趣能夠自行查閱相關文檔)
服務器

Nginx(發音同 engine x)是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev(伊戈爾·西索夫)所開發,供俄國大型的入口網站及搜索引擎Rambler(漫步者)(俄文:Рамблер)使用。其特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:新浪、網易、 騰訊等。
優勢:
1:可運行linux,並有 Windows 移植版。
2:在高鏈接併發的狀況下,Nginx是Apache服務器不錯的替代品Nginx在美國是作虛擬主機生意的老闆們常常選擇的軟件平臺之一。可以支持高達 50,000 個併發鏈接數的響應

4, 建立兩臺Nginx服務器
因爲本身在本身電腦上搭建, 因此 如今只模擬搭建兩臺Nginx服務器. 


網絡

負載均衡的功能:
轉發
故障移除
恢復添加
高可用 Ha

咱們想要使用Nginx那麼就必須知足上面的四個條件.
咱們配置負載均衡的目的是在於當用戶訪問咱們的服務器的時候, 首先會經過 Nginx服務器來決定轉發到哪一個Tomcat服務器上去給用戶提供服務, 固然這個機率是咱們經過權重來配置的. 通過Nginx指派以後, 咱們就能夠處理高併發的訪問了, 這裏就能達到負載均衡的目的.


5, 搭建Nginx
首先咱們須要你們兩臺機器, 兩臺機器分別安裝了Nginx和Tomcat, IP分別爲: 192.168.200.129. 192.168.200.130


併發


接着咱們須要將Nginx和Tomcat包分別拷貝到CentOS01和CentOS02上, 而且解壓好, 這裏就再也不復述這個過程了.
而後咱們須要關閉Linux的防火牆, 不然的話啓動了Nginx也是鏈接不上的.



咱們仍是來再看下解壓吧:
負載均衡

解壓完以後咱們須要編譯安裝:jsp

 1 ./configure \  2 --prefix=/usr/local/nginx \  3 --pid-path=/var/run/nginx/nginx.pid \  4 --lock-path=/var/lock/nginx.lock \  5 --error-log-path=/var/log/nginx/error.log \  6 --http-log-path=/var/log/nginx/access.log \  7 --with-http_gzip_static_module \  8 --http-client-body-temp-path=/var/temp/nginx/client \  9 --http-proxy-temp-path=/var/temp/nginx/proxy \ 10 --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ 11 --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ 12 --http-scgi-temp-path=/var/temp/nginx/scgi

注意:上邊將臨時文件目錄指定爲/var/temp/nginx,須要在/var下建立temp及nginx目錄
mkdir -p /var/temp/nginx
高併發

生成了文件夾後咱們直接拷貝上面的編譯安裝命令進行安裝.

性能

執行完上訴步驟後, 咱們能夠看到nginx目錄下生成了Makefile文件,咱們接着往下: 


而後使用Make命令, 運行結束後在使用Make install命令進行安裝, 最後是啓動Nginx:

查看是否啓動成功:



配置反向服務代理器:
什麼是反向服務呢? 首先說下正向服務, 例如爬蟲程序, 咱們主動出擊去獲取資源. 而反向服務咱們是等待用戶來訪問. 區別在於主動和被動.
配置文件Nginx/conf/nginx.conf


配置Nginx轉發條件


重啓Nginx服務器



爲了測試, 咱們在兩個Tomcat 服務器的index.jsp中分別加了這是來自於哪一個ip下的Tomcat. 以下圖所示:




重啓好Nginx後, 咱們再來訪問192.168.200.129 這臺機器, 我麼能夠發現其實訪問的是129.168.200.130這臺機器.



負債均衡的配置, 配置轉發的權重: (另外一臺CentOS02 依然按照CentOS01的配置)


咱們在這裏配置了兩臺轉發機器: 192.168.200.129和192.168.200.130, 它們的權重分別是2/3 和1/3, 也就是說訪問三次192.168.200.129, 有兩次是192.168.200.129上的Tomcat來處理, 有一次是192.168.200.130上的Tomcat來處理. 若是咱們的Tomcat服務器更多 那麼就須要在這裏配置更多, 權重根據實際需求來劃分.

同上, 搭建另外一臺機器192.168.200.130的負載均衡:



搭建Keepalived:(Keepalived須要依賴openssl)
這裏若是咱們的機器192.168.200.129 出現故障了呢? 那麼怎麼使用192.168.200.130上的Nginx進行轉發呢? 怎麼設置主機和備機呢? 若是主機死了怎麼進行故障移除呢? 若是主機從不可用到可用狀態又怎麼進行恢復添加呢? 這些功能都是能夠經過Keepalived來進行設置的.


Keepalived原理:

首先Keepalived能夠在主機上產生一個虛擬的ip, 這裏叫作vip(v是virtual的意思):192.168.200.150, keepalived會將這個vip綁定到交換機上.
當用戶訪問主機:192.168.200.129時, 交換機會經過這個ip和vip的對應找到192.168.200.129上的Nginx進行處理.
若是當有一天192.168.200.129上的Nginx掛掉的時候, Keepalived會當即在備機上生成一個相同的vip: 192.168.200.150, 當用戶繼續訪問192.168.200.129時, 交換機上已經綁定了vip, 這時發現這個vip是存在於192.168.200.130上面的, 因此直接將請求轉發到了備機上. 
若是主機被修復好可以繼續對外提供服務時, 這時keepalived會將主機上繼續生成這個vip, 同時回收在備機上生成的vip. 這個是經過心跳檢查來判斷主機已恢復使用.


我這裏已經提早安裝好了oppenssl, 關於具體安裝方法你們能夠自行百度.
檢查openssl 是否安裝成功: 


Keepalived的安裝命令:


查看Keepalived的安裝目錄:


編輯Keepalived的配置文件:

首先咱們來清空配置文件(清空後會自動再生成一個keepalived.conf, 可是裏面的內容爲空)
關於爲何要清空, 由於咱們已經配置好了一些相關內容, 直接使用便可.

 

這裏是來設置虛擬IPeth1:
由於個人CentOS是拷貝過來的, 因此這裏是eth1, 關於怎麼查看, 咱們在文章開頭有查看本機ip: ifconfig, 那裏面有顯示咱們的網卡就是eth1.




配置完成以後, 啓動keepalived:


檢測Keepalived是否啓動成功:

這裏查看 咱們的機器多了兩個ip, 其實這兩個ip都是虛擬ip

設置備機:|
這裏的權重只要低於主機的100就好.


啓動備機的Keepalived:



當主機中止服務時, 備機便可接管繼續服務:
關於Nginx的內容大概就是這麼多了, 我這裏是一步步配置且經過驗證的, 若是你們哪裏有疑問均可以回覆留言.

相關文章
相關標籤/搜索