Linux上搭載Nginx負(fù)載均衡配置使用案例詳解
1,這里我們來說下很重要的負(fù)載均衡, 那么什么是負(fù)載均衡呢?
由于目前現(xiàn)有網(wǎng)絡(luò)的各個(gè)核心部分隨著業(yè)務(wù)量的提高,訪問量和數(shù)據(jù)流量的快速增長(zhǎng),其處理能力和計(jì)算強(qiáng)度也相應(yīng)地增大,使得單一的服務(wù)器設(shè)備根本無法承擔(dān)。在此情況下,如果扔掉現(xiàn)有設(shè)備去做大量的硬件升級(jí),這樣將造成現(xiàn)有資源的浪費(fèi),而且如果再面臨下一次業(yè)務(wù)量的提升時(shí),這又將導(dǎo)致再一次硬件升級(jí)的高額成本投入,甚至性能再卓越的設(shè)備也不能滿足當(dāng)前業(yè)務(wù)量增長(zhǎng)的需求。
針對(duì)此情況而衍生出來的一種廉價(jià)有效透明的方法以擴(kuò)展現(xiàn)有網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性的技術(shù)就是負(fù)載均衡(Load Balance)。
2, 負(fù)載均衡的種類
1)一種是通過硬件來進(jìn)行解決,常見的硬件有NetScaler、F5、Radware和Array等商用的負(fù)載均衡器,但是它們是比較昂貴的
2)一種是通過軟件來進(jìn)行解決的,常見的軟件有LVS、Nginx、apache等,它們是基于Linux系統(tǒng)并且開源的負(fù)載均衡策略.
3, 這里我們只來說Nginx(其他的大家有興趣可以自行查閱相關(guān)文檔)
Nginx(發(fā)音同 engine x)是一款輕量級(jí)的Web服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,并在一個(gè)BSD-like 協(xié)議下發(fā)行。由俄羅斯的程序設(shè)計(jì)師Igor Sysoev(伊戈?duì)?middot;西索夫)所開發(fā),供俄國(guó)大型的入口網(wǎng)站及搜索引擎Rambler(漫步者)(俄文:Рамблер)使用。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,中國(guó)大陸使用nginx網(wǎng)站用戶有:新浪、網(wǎng)易、騰訊等。
優(yōu)點(diǎn):
1:可運(yùn)行l(wèi)inux,并有Windows移植版。
2:在高連接并發(fā)的情況下,Nginx是Apache服務(wù)器不錯(cuò)的替代品Nginx在美國(guó)是做虛擬主機(jī)生意的老板們經(jīng)常選擇的軟件平臺(tái)之一。能夠支持高達(dá) 50,000 個(gè)并發(fā)連接數(shù)的響應(yīng)
4, 創(chuàng)建兩臺(tái)Nginx服務(wù)器
由于自己在自己電腦上搭建, 所以 現(xiàn)在只模擬搭建兩臺(tái)Nginx服務(wù)器.
負(fù)載均衡的功能:
轉(zhuǎn)發(fā)
故障移除
恢復(fù)添加
高可用 Ha
我們想要使用Nginx那么就必須滿足上面的四個(gè)條件.
我們配置負(fù)載均衡的目的是在于當(dāng)用戶訪問我們的服務(wù)器的時(shí)候, 首先會(huì)通過 Nginx服務(wù)器來決定轉(zhuǎn)發(fā)到哪個(gè)Tomcat服務(wù)器上去給用戶提供服務(wù), 當(dāng)然這個(gè)概率是我們通過權(quán)重來配置的. 經(jīng)過Nginx指派之后, 我們就可以處理高并發(fā)的訪問了, 這里就能達(dá)到負(fù)載均衡的目的.
5, 搭建Nginx
首先我們需要大家兩臺(tái)機(jī)器, 兩臺(tái)機(jī)器分別安裝了Nginx和Tomcat, IP分別為: 192.168.200.129. 192.168.200.130


接著我們需要將Nginx和Tomcat包分別拷貝到CentOS01和CentOS02上, 并且解壓好, 這里就不再?gòu)?fù)述這個(gè)過程了.
然后我們需要關(guān)閉Linux的防火墻, 否則的話啟動(dòng)了Nginx也是連接不上的.

我們還是來再看下解壓吧:

解壓完之后我們需要編譯安裝:
./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi
注意:上邊將臨時(shí)文件目錄指定為/var/temp/nginx,需要在/var下創(chuàng)建temp及nginx目錄
mkdir -p /var/temp/nginx

執(zhí)行完上訴步驟后, 我們可以看到nginx目錄下生成了Makefile文件,我們接著往下:

后使用Make命令, 運(yùn)行結(jié)束后在使用Make install命令進(jìn)行安裝, 最后是啟動(dòng)Nginx:

查看是否啟動(dòng)成功:

配置反向服務(wù)代理器:
什么是反向服務(wù)呢? 首先說下正向服務(wù), 例如爬蟲程序, 我們主動(dòng)出擊去獲取資源. 而反向服務(wù)我們是等待用戶來訪問. 區(qū)別在于主動(dòng)和被動(dòng).
配置文件Nginx/conf/nginx.conf

配置Nginx轉(zhuǎn)發(fā)條件

重啟Nginx服務(wù)器

為了測(cè)試, 我們?cè)趦蓚€(gè)Tomcat 服務(wù)器的index.jsp中分別加了這是來自于哪個(gè)ip下的Tomcat. 如下圖所示:


重啟好Nginx后, 我們?cè)賮碓L問192.168.200.129 這臺(tái)機(jī)器, 我么可以發(fā)現(xiàn)其實(shí)訪問的是129.168.200.130這臺(tái)機(jī)器.

負(fù)債均衡的配置, 配置轉(zhuǎn)發(fā)的權(quán)重: (另一臺(tái)CentOS02 依然按照CentOS01的配置)

我們?cè)谶@里配置了兩臺(tái)轉(zhuǎn)發(fā)機(jī)器: 192.168.200.129和192.168.200.130, 它們的權(quán)重分別是2/3 和1/3, 也就是說訪問三次192.168.200.129, 有兩次是192.168.200.129上的Tomcat來處理, 有一次是192.168.200.130上的Tomcat來處理. 如果我們的Tomcat服務(wù)器更多 那么就需要在這里配置更多, 權(quán)重根據(jù)實(shí)際需求來劃分.
同上, 搭建另一臺(tái)機(jī)器192.168.200.130的負(fù)載均衡:

搭建Keepalived:(Keepalived需要依賴openssl)
這里如果我們的機(jī)器192.168.200.129 出現(xiàn)故障了呢? 那么怎么使用192.168.200.130上的Nginx進(jìn)行轉(zhuǎn)發(fā)呢? 怎么設(shè)置主機(jī)和備機(jī)呢? 如果主機(jī)死了怎么進(jìn)行故障移除呢? 如果主機(jī)從不可用到可用狀態(tài)又怎么進(jìn)行恢復(fù)添加呢? 這些功能都是可以通過Keepalived來進(jìn)行設(shè)置的.

Keepalived原理:

首先Keepalived可以在主機(jī)上產(chǎn)生一個(gè)虛擬的ip, 這里叫做vip(v是virtual的意思):192.168.200.150, keepalived會(huì)將這個(gè)vip綁定到交換機(jī)上.
當(dāng)用戶訪問主機(jī):192.168.200.129時(shí), 交換機(jī)會(huì)通過這個(gè)ip和vip的對(duì)應(yīng)找到192.168.200.129上的Nginx進(jìn)行處理.
如果當(dāng)有一天192.168.200.129上的Nginx掛掉的時(shí)候, Keepalived會(huì)立即在備機(jī)上生成一個(gè)相同的vip:192.168.200.150, 當(dāng)用戶繼續(xù)訪問192.168.200.129時(shí), 交換機(jī)上已經(jīng)綁定了vip, 這時(shí)發(fā)現(xiàn)這個(gè)vip是存在于192.168.200.130上面的, 所以直接將請(qǐng)求轉(zhuǎn)發(fā)到了備機(jī)上.
如果主機(jī)被修復(fù)好能夠繼續(xù)對(duì)外提供服務(wù)時(shí), 這時(shí)keepalived會(huì)將主機(jī)上繼續(xù)生成這個(gè)vip, 同時(shí)回收在備機(jī)上生成的vip. 這個(gè)是通過心跳檢查來判斷主機(jī)已恢復(fù)使用.
我這里已經(jīng)提前安裝好了oppenssl, 關(guān)于具體安裝方法大家可以自行百度.
檢查openssl 是否安裝成功:

Keepalived的安裝命令:

查看Keepalived的安裝目錄:

編輯Keepalived的配置文件:

首先我們來清空配置文件(清空后會(huì)自動(dòng)再生成一個(gè)keepalived.conf, 但是里面的內(nèi)容為空)
關(guān)于為什么要清空, 因?yàn)槲覀円呀?jīng)配置好了一些相關(guān)內(nèi)容, 直接使用即可.

這里是來設(shè)置虛擬IP和eth1:
因?yàn)槲业腃entOS是拷貝過來的, 所以這里是eth1, 關(guān)于怎么查看, 我們?cè)谖恼麻_頭有查看本機(jī)ip: ifconfig, 那里面有顯示我們的網(wǎng)卡就是eth1.


配置完成之后, 啟動(dòng)keepalived:

檢測(cè)Keepalived是否啟動(dòng)成功:

這里查看 我們的機(jī)器多了兩個(gè)ip, 其實(shí)這兩個(gè)ip都是虛擬ip
設(shè)置備機(jī):|
這里的權(quán)重只要低于主機(jī)的100就好.

啟動(dòng)備機(jī)的Keepalived:

當(dāng)主機(jī)停止服務(wù)時(shí), 備機(jī)即可接管繼續(xù)服務(wù):

到此這篇關(guān)于Linux上搭載Nginx負(fù)載均衡配置使用案例詳解.的文章就介紹到這了,更多相關(guān)linux搭載Nginx負(fù)載均衡內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx配置gzip壓縮優(yōu)化傳輸效率加快頁面訪問速度的問題
本文介紹了如何在nginx服務(wù)器中配置gzip壓縮,通過壓縮HTTP響應(yīng)內(nèi)容,減少數(shù)據(jù)傳輸大小和響應(yīng)時(shí)間,從而提升網(wǎng)站性能和訪問速度,感興趣的朋友跟隨小編一起看看吧2024-09-09
詳解 Nginx 負(fù)載均衡和反向代理配置和優(yōu)化
這篇文章主要介紹了詳解 Nginx 負(fù)載均衡和反向代理配置和優(yōu)化的相關(guān)資料,需要的朋友可以參考下2017-03-03
nginx-rtmp-module模塊實(shí)現(xiàn)視頻點(diǎn)播的示例代碼
本文主要介紹了nginx-rtmp-module模塊實(shí)現(xiàn)視頻點(diǎn)播,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
修改配置解決Nginx服務(wù)器中常見的上傳與連接錯(cuò)誤
這篇文章主要介紹了修改配置解決Nginx服務(wù)器中常見的上傳與連接錯(cuò)誤的方法,分別針對(duì)Nginx的413錯(cuò)誤與111錯(cuò)誤,需要的朋友可以參考下2016-01-01
Kubernetes中Nginx服務(wù)啟動(dòng)失敗排查流程分析(Error:?ImagePullBackOff)
這篇文章主要介紹了Kubernetes中Nginx服務(wù)啟動(dòng)失敗排查流程(Error:?ImagePullBackOff),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
關(guān)于Nginx中虛擬主機(jī)的一些冷門知識(shí)小結(jié)
這篇文章主要給大家介紹了關(guān)于Nginx中虛擬主機(jī)的一些冷門知識(shí),文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-03-03

