通常我們會(huì)使用Nginx做反向代理和負(fù)載均衡,都是http協(xié)議,其實(shí)Nginx還可以轉(zhuǎn)發(fā)TCP,而且配置基本很相似(下面的原理也適用于http)。 原理圖如下: 正向代理和反向代理正向代理:就是我們所說(shuō)的代理,例如客戶向服務(wù)器A發(fā)請(qǐng)求,但是A不接受除了服務(wù)器B以外的請(qǐng)求,然后客戶委托服務(wù)器B向服務(wù)器A發(fā)請(qǐng)求,然后通過(guò)服務(wù)器B做中間人傳輸信息。這個(gè)過(guò)程是對(duì)服務(wù)器A是透明的,它只知道和服務(wù)器B通信。 反向代理:正向代理是客戶委托,那么反向代理就是服務(wù)器做委托。例如客戶向服務(wù)器A做請(qǐng)求,但是服務(wù)器A不知道怎么處理,那么A就委托服務(wù)器B處理,然后把結(jié)果返回給客戶,這個(gè)過(guò)程對(duì)客戶是透明的。 所有負(fù)載均衡就是利用了反向代理,把客戶的請(qǐng)求分發(fā)到不同的主機(jī)上處理,客戶并不需要知道處理的過(guò)程。 負(fù)載均衡策略Nginx 提供輪詢(round robin)、IP 哈希(client IP)和加權(quán)輪詢 3 種方式,默認(rèn)情況下,Nginx 采用的是輪詢。 輪詢(默認(rèn))每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動(dòng)剔除。 加權(quán)輪詢指定輪詢幾率,weight和訪問(wèn)比率成正比,用于后端服務(wù)器性能不均的情況。 ip_hash每個(gè)請(qǐng)求按訪問(wèn)ip的hash結(jié)果分配,這樣每個(gè)訪客固定訪問(wèn)一個(gè)后端服務(wù)器,可以解決session的問(wèn)題。 重試策略可以為每個(gè) backserver 指定最大的重試次數(shù),和重試時(shí)間間隔,所使用的關(guān)鍵字是 max_fails 和 fail_timeout。 熱機(jī)策略當(dāng)所有的非備機(jī)(non-backup)都宕機(jī)(down)或者繁忙(busy)的時(shí)候,就會(huì)使用由 backup 標(biāo)注的備機(jī)。必須要注意的是,backup 不能和 ip_hash 關(guān)鍵字一起使用。 在nginx.conf文件配置,是和http同級(jí)的 stream { upstream backend { #hash $remote_addr consistent; server 10.118.12.92:10001 weight=5; #server 127.0.0.1:12345 max_fails=3 fail_timeout=30s; #server unix:/tmp/backend3; } server { listen 10001; proxy_connect_timeout 5s; proxy_timeout 3600s; proxy_pass backend; } } 注意如果放在http里面,那么這個(gè)配置就是負(fù)載均衡http了。 ref. https://blog./archives/623/ |
|
來(lái)自: liang1234_ > 《高可用》