nginx 負(fù)載均衡服務(wù)
實現(xiàn)的原理使用的是 proxy_pass哎榴,nginx將不同的服務(wù)轉(zhuǎn)發(fā)到服務(wù)池當(dāng)中蜕着。
//語法
Syntax:upstream name {...}
Default:-
Context:http
在目標(biāo)服務(wù)器配置三個不同server表示不同的服務(wù)
//server1
server{
listen 8001;
...
location / {
root /opt/app/code1;
index index.html index.htm;
}
}
//server2
server{
listen 8002;
...
location / {
root /opt/app/code2;
index index.html index.htm;
}
}
//server3
server{
listen 8003;
...
location / {
root /opt/app/code3;
index index.html index.htm;
}
}
在代理服務(wù)器配置 upsteram.conf
//后面的名字是自定義的,在proxy_pass配置
upstream imooc{
server 192.168.9.1:8001;
server 192.168.9.1:8002;
server 192.168.9.1:8003 ;
}
server {
listen 80;
server_name www.applelife.xyz;
...
location /{
#配置上面的名稱 imocc
proxy_pass http://imocc;
#proxy_params 為共同參數(shù)配置文件
include proxy_params;
}
}
啟動之后惠况,瀏覽驗證查看遭庶,訪問代理服務(wù)器,默認(rèn)服務(wù)請求是輪詢的操作查看
在目標(biāo)服務(wù)器上停止掉一個服務(wù)驗證:利用iptables
//命令 不對外提供8002的端口的服務(wù)
iptables -I INPUT -p tcp --dport 8002 -j DROP
upstream舉例
//支持ip域名的方式
upstream backend{
#weight表示權(quán)重稠屠,在輪詢當(dāng)中比重
server backend1.example.com weight =5;
server backend2.exxample.com:8080;
#socket方式
server unix:/tmp/backend3;
#backup表示是一個備份的節(jié)點
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
后端服務(wù)器在負(fù)載均衡調(diào)度中的狀態(tài)參數(shù)介紹
#當(dāng)前的server暫時不參與負(fù)載均衡
down
#預(yù)留的備份服務(wù)器
backup
#允許請求失敗的次數(shù)
max_fails
#經(jīng)過max_fails失敗后峦睡,服務(wù)暫停的時間,默認(rèn)10秒
fail_timeout
#限制最大的接收的連接數(shù)
max_conns
//示例
upstream applelife {
#不進(jìn)行服務(wù) server1
server 192.168.9.1:8001 down;
#備份服務(wù) server2
server 192.168.9.1:8002 backup;
#允許請求失敗次數(shù) server3
server 192.168.9.1:8003 max_fails=1 fail_timeout=10s;
}
在驗證的時候权埠,發(fā)現(xiàn)只會出現(xiàn)server3 在目標(biāo)服務(wù)器上停止掉一個服務(wù)驗證:利用iptables
//命令 不對外提供8003的端口的服務(wù)
iptables -I INPUT -p tcp --dport 8003 -j DROP
停掉 8003服務(wù)之后榨了,之后就會啟動8002備份服務(wù)了
//關(guān)閉 iptables
iptables -F
調(diào)度算法方式
- 輪詢 按照時間的順序逐一分配到不同的后端服務(wù)器
- 加權(quán)輪詢 weight值越大 ,分配到的訪問的機(jī)率越高
- ip_hash 每個請求的按訪問ip的hash結(jié)果分配攘蔽,這樣來自同一個ip的固定訪問一個后端服務(wù)器(代理不能訪問的客戶端的ip)
- url_hash 按照訪問的url的hash結(jié)果來分配請求龙屉,是每個url定向到同一個后端服務(wù)器
- least_conn 最少的鏈接數(shù),那個機(jī)器連接數(shù)少就分發(fā)
- hash關(guān)鍵數(shù)值 hash自定義的key
//iphash方式
upstream applelife {
ip_hash;
# server1
server 192.168.9.1:8001;
# server2
server 192.168.9.1:8002;
# server3
server 192.168.9.1:8003;
}
hash關(guān)鍵數(shù)值
//語法 這個是在版本1.7.2出現(xiàn)的
Syntax:hash key [consistent];
Default:-
Context:upstream
//示例
upstream applelife {
#request_uri請求參數(shù) 不包括域名的部分
hash $request_uri;
# server1
server 192.168.9.1:8001;
# server2
server 192.168.9.1:8002;
# server3
server 192.168.9.1:8003;
}