1. 程式人生 > >淘淘商城29_nginx的使用02_反向代理及負載均衡和高可用

淘淘商城29_nginx的使用02_反向代理及負載均衡和高可用

一、Ip區分虛擬主機(可以用EditPlus這個編輯器)

具體看視訊:百度網盤

連結:https://pan.baidu.com/s/1Xv3nOLos9Qh7B9INLvl8Mw 
提取碼:zjnt 

 

1. 檢視內容

[[email protected] /]# cd /etc/sysconfig/network-scripts

[[email protected] network-scripts]# ls

執行命令檢視內容

[[email protected] network-scripts]# vim ifcfg-eth0

2. 複製一份檔案出來

/etc/sysconfig/network-scripts/ifcfg-eth0檔案複製一份,命名為ifcfg-eth0:1

[[email protected] network-scripts]# cp ifcfg-eth0 ifcfg-eth0:1

修改新檔案裡的兩個內容

DEVICE=eth0:1

IPADDR=192.168.1.109

其他項不用修改

3. 再複製一份內容

cp ifcfg-eth0 ifcfg-eth0:2

DEVICE=eth0:2

修改192.168.1.110

4. ​​​​​​​重啟虛擬機器系統

二、​​​​​​​配置nginx基於ip地址的虛擬主機

1. ​​​​​​​Nginx的配置檔案

#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
     keepalive_timeout  65;
    server { #一個Server就是一個虛擬主機
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}

2. ​​​​​​​基於ip的虛擬主機配置

server {
        listen       80;
        server_name  192.168.1.109;
        location / {
            root   html-109;
            index  index.html index.htm;
        }
    }
    server {
        listen       80;
        server_name  192.168.1.110;
        location / {
            root   html-110;
            index  index.html index.htm;
        }
    }

3. ​​​​​​​去nginx下修改配置檔案,複製兩個html資料夾,名字分別為  html-109   html-110

[[email protected] nginx]# cp html html-109 -r

[[email protected] nginx]# cp html html-110 -r

4. ​​​​​​​修改資料夾裡的index.html

用於區分通過不同ip訪問的首頁

[[email protected] nginx]# vim html-109/index.html

5. ​​​​​​​110同上修改

[[email protected] nginx]# vim html-110/index.html

6. ​​​​​​​重啟nginx,測試

測試url: 192.168.1.109     192.168.1.110

三、​​​​​​​基於埠的虛擬主機

1.​​​​​​​ 新增埠號配置

server {
        listen       81;
        server_name  192.168.1.109;
        location / {
            root   html-81;
            index  index.html index.htm;
        }   
    }
    server {
        listen       82;
        server_name  192.168.1.110;

         location / {
            root   html-82;
            index  index.html index.htm;
        }
    }

2. ​​​​​​​複製html檔案,修改裡面的index.html程式碼

​​​​​​​3. 修改檔案

測試url  http://192.168.1.110:81/    http://192.168.1.110:82/

四、​​​​​​​基於域名的虛擬主機

最有用的虛擬主機配置方式。一個域名只能繫結一個ip地址,一個ip地址可以被多個域名繫結。

 

1. ​​​​​​​設定域名和ip的對映關係

修改window的hosts檔案:

C:\Windows\System32\drivers\etc

 

工具連結地址:

連結:https://pan.baidu.com/s/10iY6XJNT_1xZ0O17VLhAZg 
提取碼:4d6p 

 

2. ​​​​​​​基於域名的虛擬主機配置

2.1 修改配置檔案

server {
        listen       80;
        server_name  www.cctv.com;
        location / {
            root   html-www;
            index  index.html index.htm;
        }  
    }
    server {
        listen       80;
        server_name  hehe.cctv.com;
        location / {
            root   html-hehe;
            index  index.html index.htm;
        }   
    }

修改配置檔案後,需要nginx重新載入配置檔案。

2.2 複製檔案

修改內容

2.3 ​​​​​​​重啟nginx 

需要使用工具修改host檔案,使用管理員許可權執行這個工具,使用這個工具修改host檔案的原理是繞開了DNS的解析.

2.4 測試url:www.cctv.com

五、Nginx的反向代理

 

輸入網址後,域名解析器將網址解析為一個IP,通過這個IP訪問的伺服器

比如:百度   www.baidu.com   

它的IP為61.135.169.125,這個ip可能會變,它只是就近選擇的百度的伺服器,因為百度的伺服器遍佈全國

1. 反向代理與正向代理

正向代理:

反向代理:

2. ​​​​​​​使用nginx實現反向代理

Nginx只做請求的轉發,後臺有多個http伺服器提供服務,nginx的功能就是把請求轉發給後面的伺服器,決定把請求轉發給誰。

2.1 ​​​​​​​安裝JDK和 Tomcat

在一個虛擬機器上建立兩個tomcat例項,模擬多個伺服器。

安裝過程就不說了,之前的文章中有詳細的安裝步驟

這是連結:https://mp.csdn.net/postedit/85229049

2.2 建立好兩個tomcat後

2.3 ​​​​​​​修改tomcat2的埠號

[[email protected] tomcats]# vim tomcat2/conf/server.xml

2.4 ​​​​​​​修改三個地方的埠號如下圖

2.5 ​​​​​​​啟動tomcat,測試

[[email protected] tomcats]# tomcat1/bin/startup.sh

2.6 ​​​​​​​修改首頁顯示

為了區分訪問的的伺服器,修改下tomcat的首頁內容

[[email protected] tomcats]# vim tomcat1/webapps/ROOT/index.jsp

把 tomcat1和tomcat2都修改了

3. ​​​​​​​需求

通過訪問不同的域名訪問執行在不同埠的tomcat

8080.cctv.com 訪問執行8080埠的tomcat

8081.cctv.com 訪問執行8081埠的tomcat

4. ​​​​​​​域名需要配置host檔案:

4.1 Nginx的配置

upstream tomcatserver1 {
	server 192.168.1.108:8080;
    }
    upstream tomcatserver2 {
	server 192.168.1.108:8081;
    }
   server {
        listen       80;
        server_name  8080.cctv.com;
        location / {
            proxy_pass   http://tomcatserver1;
            index  index.html index.htm;
        }     
    }
    server {
        listen       80;
        server_name  8081.cctv.com;
        location / {
            proxy_pass   http://tomcatserver2;
            index  index.html index.htm;
        } 
    }

如果在同一個域名下有多臺伺服器提供服務,此時需要nginx負載均衡。

4.2 ​​​​​​​測試:

  1. cctv.com
  2. Cctv.com

nginx只是做了一個請求的轉發,而沒有做任何的業務處理

六、負載均衡

​​​​​​​1. 什麼是負載均衡

負載均衡 建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬、增加吞吐量、加強網路資料處理能力、提高網路的靈活性和可用性。

負載均衡,英文名稱為Load Balance,其意思就是分攤到多個操作單元上進行執行,例如Web伺服器、FTP伺服器、企業關鍵應用伺服器和其它關鍵任務伺服器等,從而共同完成工作任務。

2. ​​​​​​​需求

nginx作為負載均衡伺服器,使用者請求先到達nginx,再由nginx根據負載配置將請求轉發至 tomcat伺服器。

nginx負載均衡伺服器:192.168.1.108

tomcat1伺服器:192.168.1.108:8080

tomcat2伺服器:192.168.1.108:8081

3. ​​​​​​​配置nginx的負載均衡

測試:

8080.cctv.com,   第一次訪問 8080伺服器,第二次重新整理訪問8081伺服器

4. ​​​​​​​配置負載均衡的權重

這個可以根據伺服器的配置來進行分配,伺服器配置越高,分配的權重可以越大,訪問次數也就越多,權重預設是1

節點說明:

在http節點裡新增:



#定義負載均衡裝置的 Ip及裝置狀態

upstream myServer {   



    server 127.0.0.1:9090 down;

    server 127.0.0.1:8080 weight=2;

    server 127.0.0.1:6060;

    server 127.0.0.1:7070 backup;

}

在需要使用負載的Server節點下新增

proxy_pass http://myServer;



upstream 每個裝置的狀態:



down 表示單前的server暫時不參與負載

weight  預設為1.weight越大,負載的權重就越大。

max_fails :允許請求失敗的次數預設為1.當超過最大次數時,返回proxy_next_upstream 模組定義的錯誤

fail_timeout:max_fails 次失敗後,暫停的時間。

backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。

七、高可用(keepalived)

1. 安裝環境

su - root

yum -y install kernel-devel*

yum -y install openssl-*

yum -y install popt-devel

yum -y install lrzsz

yum -y install openssh-clients

yum -y install libnl libnl-devel popt

2. 安裝keepalived

2.1 

將keepalived-1.2.15.tar.gz上傳到伺服器/usr/local/下。

cd /usr/local

tar -zxvf keepalived-1.2.15.tar.gz

cd keepalived-1.2.15

執行配置命令

./configure --prefix=/usr/local/keepalived

2.2 編譯

make

2.3 安裝

make install

至此安裝成功

2.4 拷貝執行檔案

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

2.5、將init.d檔案拷貝到etc下,加入開機啟動項

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived

2.6、將keepalived檔案拷貝到etc下,加入網絡卡配置

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

2.7、建立keepalived資料夾

mkdir -p /etc/keepalived

2.8、將keepalived配置檔案拷貝到etc下

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

2.9、新增可執行許可權

chmod +x /etc/init.d/keepalived

 

3. ​​​​​​​加入開機啟動:

chkconfig --add keepalived #新增時必須保證/etc/init.d/keepalived存在

chkconfig keepalived on

新增完可查詢系統服務是否存在:chkconfig --list

 

4. ​​​​​​​啟動keepalived

啟動:service keepalived start

停止:service keepalived stop

重啟:service keepalived restart

 

5. 配置日誌檔案

1.將keepalived日誌輸出到local0:

vi /etc/sysconfig/keepalived

KEEPALIVED_OPTIONS="-D -d -S 0"

 

2.在/etc/rsyslog.conf裡新增:

local0.*  /var/log/keepalived.log

 

3.重新啟動keepalived和rsyslog服務:

service rsyslog restart

service keepalived restart

 

4. 開啟防火牆的通訊地址

iptables -A INPUT -d 224.0.0.18 -j ACCEPT

/etc/rc.d/init.d/iptables save