nginx 的負載均衡

nginx 屬於更高級的應用層,不牽扯到 IP 和內核的改動,它只是單純地把用戶的請求nginx

轉發到後面的機器上。這就意味着,後端的 RS 不須要配置公網 IP。算法

(1)環境說明vim

nginx 分發器(一個公網 ip192.168.1.40 和一個內網 ip192.168.0.40)。後端

RS1 只有內網 ip(192.168.0.43)session

RS2 只有內網 ip(192.168.0.45)server

(2)配置ip

在 nginx 分發器上編輯配置文件rem

# vim /usr/local/nginx/conf/vhosts/lb.confhash

加入以下內容:io

upstream test {

ip_hash;

server 192.168.0.43;

server 192.168.0.45;

}

server {

listen 80;

server_name www.123com;

location / {

proxy_pass http://test/;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

 

ip_hash 爲 nginx 的一種調度

算法,加上這一行後會達到這樣的效果,即一個用戶的請求會適中被分發到固定的一個 RS

上。這樣的好處是,能夠避免把同一個用戶的請求分發到不一樣的機器上而致使 session 丟失

的狀況。upstream 裏面,RS 後面的 ip 後面還能夠加權重,好比「server 192.168.31.100

weight=100;」。還有一點要注意,upstream 後面的 test 是自定義的一個名字,能夠隨便寫,

惟一的要求是要和 proxy_pass 後面保持一致。

相關文章
相關標籤/搜索