Linux 之nginx 負載均衡集羣:
實驗環境:10.72.4.37 (dr,是lnmp 的環境),10.72.4.48 (rs1),10.72.4.39 (rs2,是lamp 的環境),三臺機上均安裝nginx。[rpm -qal nginx 查看nginx 的黙認安裝目錄]
【如果是沒有安裝nginx的,按以下步驟操作:
Centos 6下如果安裝過epel的yum源可以直接yum安裝nginx yum install -y nginx
或者源碼包編譯nginx, 官網地址http://nginx.org/ 下載合適版本(最好不要最新)
下載後解壓編譯安裝:
./configure --prefix=/usr/local/nginx; make; make install
源碼包cd /usr/local/nginx/conf; yum安裝 cd /etc/nginx
vim nginx.conf // 增加
include lb.conf;
vim lb.conf //增加如下 #編譯upstream
[root@dir ~]# vim /usr/local/nginx/conf/vhosts/lb.conf #編譯upstream
upstream 321.com {
server 10.72.4.39:80 weight=2;#此處可以加端口,也可以不加,黙認是80
server 10.72.4.48:80 weight=1;
}
server {
listen 80;
server_name www.321.com;
location / {
proxy_pass http://321.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;
}
}
~
[root@dir ~]# ipvsadm -C #清空之前實驗的所有規則
[root@dir ~]# iptables -t nat -F
[root@dir ~]# iptables -F
[root@dir ~]# /etc/init.d/nginx start #啓動nginx
Starting Nginx: [ OK ]
[root@dir ~]# curl -xlocalhost:80 www.321.com #在dir 上curl測試,因爲加了權重,兩次rs2,一次rs1
[root@rs2 ~]# /etc/init.d/nginx stop #停掉rs2 上的 nginx 服務
Stopping nginx: [ OK ]
[root@dir ~]# curl -xlocalhost:80 www.321.com #服務器直接把rs2 剔除
Welcome to china,wumai 2016-12-23 RS1_rs1
#全是rs1 ,不會切換到rs2,因爲rs2的服務已要停了,服務器自動把RS2
重新啓動rs2上的nginx 服務又恢復原來兩臺rs 的工作狀態
--------------------------------------------------------
Linux 之nginx 負載均衡集羣可以針對目錄來操作。樓主末親測。
來源 :http://ask.apelearn.com/question/920
我的需求: 當請求的目錄是 /aaa/ 則把請求發送到機器a,當請求的目錄爲/bbb/則把請求發送到機器b,除了目錄/aaa/與目錄/bbb/外,其他的請求發送到機器b
我的配置文件內容爲:
upstream aaa.com
{
server 192.168.111.6;
}
upstream bbb.com
{
server 192.168.111.20;
}
server {
listen 80;
server_name li.com;
location /aaa/
{
proxy_pass http://aaa.com/aaa/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /bbb/
{
proxy_pass http://bbb.com/bbb/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /
{
proxy_pass http://bbb.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;
}
}
說明:
1 以上配置文件中的 aaa.com 以及 bbb.com 都是自定義的,隨便寫。
2 upstream 中的server 可以寫多個,例如
upstream aaa.com
{
server 192.168.111.6;
server 192.168.111.4;
server 192.168.111.5;
}
3 proxy_pass http://aaa.com/aaa/ 這裏必須要加這個目錄,不然就訪問到根目錄了。
4 實際上,上述配置文件中, localtion /bbb/ 部分是可以省略掉的,因爲後邊的 location / 已經包含了/bbb/,所以即使我們不去定義 localtion /bbb/ 也是會訪問到 bbb.com 的。