章節(jié)目錄
- 什么是負載均衡
- 使用負載均衡要解決的問題
- 基于LVS的中間件架構(gòu)
- GSLB
- SLB
- 四層負載均衡和七層負載均衡
- Nginx 負載均衡
- 配置語法
- 負載均衡配置實戰(zhàn)
什么是負載均衡
當(dāng)用戶請求量增加至單臺服務(wù)器不能及時處理的時候
即(單臺服務(wù)器可接受能夠建立連接的并發(fā)請求超過上限時),
那么就需要橫向擴容應(yīng)用服務(wù)器來多當(dāng)前場景下的高并發(fā)請求做處理,
負載均衡正是將高并發(fā)請求分流至水平節(jié)點上不同應(yīng)用服務(wù)器的一種技術(shù)。
負載均衡要解決的問題
提升服務(wù)的高可用性,容災(zāi),提升應(yīng)用服務(wù)器對并發(fā)請求的處理能力。
基于LVS的中間件架構(gòu)
GSLB-全局負載均衡
如下圖所示:

GSLB-全局負載均衡
適用場景:跨國機房應(yīng)用服務(wù)部署
如北京張三訪問應(yīng)用服務(wù)器,則請求先到達本地的調(diào)度節(jié)點,
調(diào)度節(jié)點返回應(yīng)用服務(wù)器某服務(wù)的調(diào)用地址,
客戶端再去請求對應(yīng)的應(yīng)用服務(wù)器。
指路
SLB
如下圖所示:

SLB
調(diào)度節(jié)點轉(zhuǎn)發(fā)客戶請求至真正的應(yīng)用服務(wù)器,
應(yīng)用服務(wù)器再將響應(yīng)數(shù)據(jù)返回至調(diào)度節(jié)點,調(diào)度節(jié)點再將數(shù)據(jù)返回給客戶端。
從圖中可以看出調(diào)度節(jié)點與服務(wù)節(jié)點在統(tǒng)一區(qū)域內(nèi),這樣可以應(yīng)對高并發(fā)請求的場景。
四層負載均衡和七層負載均衡
四層負載均衡
傳輸層負載均衡,TCP/IP層負載均衡,進行數(shù)據(jù)包轉(zhuǎn)發(fā),性能更高
七層負載均衡
應(yīng)用層負載均衡 http nginx采用的就是七層負載均衡
Nginx 負載均衡
如下圖所示:

Nginx 負載均衡
Nginx 負載均衡采用了proxy_pass 方式將請求代理至一組虛擬的服務(wù)池,upstream server ,用戶請求過來時,通過一定的負載策略,將請求分發(fā)至服務(wù)池中的某一個應(yīng)用服務(wù)器中。
配置語法
語法:upstream name {}
默認:-
可配置上下文:http
注意配置到 server 層以外,且必須配置在http中
配置實戰(zhàn)
1.新建文件夾 分別存儲不同應(yīng)用服務(wù)上的同名靜態(tài)文件
1.cd /opt/app/
2.mkdir code1 code2 code3
3.cd code1
4.touch index.html
5.vi index.html
<html>
<title>page1</title>
<body>
it is page1
</body>
</html>
同上在code2 code3 中同樣建立index.html 并且index.html中的內(nèi)容 page1 更改為page2、page3 。
2.新建應(yīng)用服務(wù)器配置文件
1.cd /etc/nginx/conf.d
2.touch server1.conf server2.conf server3.conf
3.vi server1.conf
server {
listen 8081;
server_name eshop-cache04;
location / {
root /opt/app/code1;
index index.html index.htm;
}
}
4.vi server2.conf
server {
listen 8082;
server_name eshop-cache04;
location / {
root /opt/app/code2;
index index.html index.htm;
}
}
5.vi server3.conf
server {
listen 8083;
server_name eshop-cache04;
location / {
root /opt/app/code3;
index index.html index.htm;
}
}
3.配置upstream&代理請求至虛擬服務(wù)池upstream 中
1.touch upstream_test.conf
2.vi upstream_test.conf
upstream testUpstream {
server eshop-cache04:8081;
server eshop-cache04:8082;
server eshop-cache04:8083;
}
server {
listen 80;
server_name eshop-cache04;
location / {
proxy_pass http://testUpstream;//虛擬服務(wù)池名字
# include proxy_params;
}
}
4.檢查配置文件正確性,重新加載配置文件
1.nginx -t -c /etc/nginx/conf.d
2.nginx -s reload
6.瀏覽器請求,驗證結(jié)果

page1

page2

page3
可以觀察到,同樣的請求顯示的頁面內(nèi)容是不一致的,所以負載均衡配置成功。