負(fù)載均衡 建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種廉價(jià)有效透明的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。(百度百科的解釋)
在我看來就是防止一臺(tái)服務(wù)器在承受不住大流量的訪問而產(chǎn)生宕機(jī)時(shí),解決宕機(jī)的一種方案。也就是利用N臺(tái)服務(wù)器來平均分擔(dān)主服務(wù)器的流量,將流量轉(zhuǎn)向到其他服務(wù)器。
Nginx安裝教程(https://lnmp.org/install.html)
實(shí)驗(yàn)環(huán)境
由于沒有實(shí)體的服務(wù)器,所以本次實(shí)驗(yàn)直接在VMware虛擬機(jī)里安裝了三臺(tái)服務(wù)器
1、硬件:
I5-CPU
16G的內(nèi)存(虛擬機(jī)里的服務(wù)器開啟的越多,占用的內(nèi)存越多)
2、軟件:
VM_12
CentOS_7
Nginx
3、配置安排
實(shí)驗(yàn)域名:long.com
A服務(wù)器IP:192.168.7.240(主)
B服務(wù)器IP:192.168.7.237(從)
C服務(wù)器IP:192.168.7.231(從)
部署安排:
A服務(wù)器為主服務(wù)器,域名直接解析在該服務(wù)器上;訪問long.com之后,由A服務(wù)器負(fù)載均衡到B服務(wù)器和C服務(wù)器上。
1、域名解析:
打開hosts文件
vi /etc/hosts
末尾添加
192.168.7.240 long.com
保存退出,然后使用 ping long.com 測試是否設(shè)置成功
2、A服務(wù)器的nginx.conf設(shè)置
獲取 nginx.conf 路徑
ps aux | grep nginx
打開 nginx.conf 文件
vi /usr/local/nginx/conf/nginx.conf
在http段添加以下代碼
upstream long.com { server 192.168.7.237:80; server 192.168.7.231:80; } server{ listen 80; server_name long.com; location / { proxy_pass http://long.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
注意:可用 nginx -t -c /usr/local/nginx/conf/nginx.conf測試nginx.conf配置文件是否正確
保存并重啟nginx服務(wù)器
3、B、C服務(wù)器的nginx.conf設(shè)置
打開 nginx.conf,在http段加入以下代碼。
server{ listen 80; server_name long.com; index index.html; root /home/wwwroot/default; }
保存并重啟nginx 之后分別在B、C服務(wù)器的 /home/wwwroot/default(這是我的Nginx服務(wù)器的訪問文件存放目錄) 目錄下寫一個(gè)不同內(nèi)容的index.html文件,以作區(qū)分。
4、測試
在A服務(wù)器中輸入命令 curl long.com 可得在B或C服務(wù)器添加的index.html文件內(nèi)容
完成以上操作,可實(shí)現(xiàn)long.com的負(fù)載均衡
以上例子中,我們都是應(yīng)用到了主服務(wù)器負(fù)載均衡到其它服務(wù)器上,那么主服務(wù)器本身能不能也加在服務(wù)器列表中,這樣就不會(huì)白白浪費(fèi)一臺(tái)純當(dāng)做轉(zhuǎn)發(fā)功能的服務(wù)器。
現(xiàn)在我們讓A服務(wù)器也提供站點(diǎn)服務(wù)。
首先我們先來分析一下,如果添加主服務(wù)器到upstream中,那么可能會(huì)有以下兩種情況發(fā)生:
1、主服務(wù)器轉(zhuǎn)發(fā)到了其它IP上,其它IP服務(wù)器正常處理;
2、主服務(wù)器轉(zhuǎn)發(fā)到了自己IP上,然后又進(jìn)到主服務(wù)器分配IP那里,假如一直分配到本機(jī),則會(huì)造成一個(gè)死循環(huán)。
怎么解決這個(gè)問題呢?
因?yàn)?0端口已經(jīng)用來監(jiān)聽負(fù)載均衡的處理,那么本服務(wù)器上就不能再使用80端口來處理long.com的訪問請求,要用一個(gè)新的端口 8080。于是我們把主服務(wù)器的 nginx.conf 加入以下一段代碼:
server { listen 8080; server_name long.com; index index.html index.htm index.php; root /home/wwwroot/default; }
注意:添加之后,應(yīng)該有兩個(gè) server
重啟 nginx 之后輸入 curl long.com:8080 驗(yàn)證A服務(wù)器是否能訪問
能正常訪問,那么我們就可以把主服務(wù)器添加到upstream中,但是端口要改一下,如下代碼:
upstream long.com { server 192.168.7.237:80; server 192.168.7.231:80; server 127.0.0.1:8080; }
這里可以添加主服務(wù)器IP192.168.7.240或者127.0.0.1均可以,都表示訪問自己。
重啟Nginx,然后再來訪問long.com看看會(huì)不會(huì)分配到主服務(wù)器上。
參考別人教程,再結(jié)合自己的總結(jié),綜合而成!