天天看點

Nginx+Lvs+keepAlived【nginx高性能實戰】DNS域名解析過程nginx的應用場景正向代理和反向代理的差別nginx存放html靜态資源基于Nginx實作反向代理基于Nginx實作負載均衡Upstream Server配置軟負載與硬負載nginx安裝Nginx+Lvs+keepAlivedLinux環境下載下傳keepAlived

DNS域名解析過程

用戶端-》檢視本地有沒有-〉沒有去營運商擷取

nginx的應用場景

  • 反向代理
  • 負載均衡
  • 微服務網管入口
  • 靜态資源伺服器
  • 配置安全政策

正向代理和反向代理的差別

  • 正向代理:隐藏使用者行為
  • 反向代理:隐藏伺服器

nginx存放html靜态資源

server {
        listen       80;
        server_name  localhost;
		#通路端口為80 location為/ 通路的html檔案目錄,找到index.html頁面通路
        location / {
            root   html;
            index  index.html index.htm;
        }
    }           

複制

基于Nginx實作反向代理

location /api {
	    proxy_set_header Host $host;
            proxy_set_header  X-Real-IP        $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            rewrite ^/api/(.*)$ /$1 break;
            proxy_pass http://127.0.0.1:8096;
        }           

複制

基于Nginx實作負載均衡

五種負載均衡政策

  • 1、輪詢(預設)

    每個請求按時間順序逐一配置設定到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。

  • 2、指定權重

    指定輪詢幾率,weight和通路比率成正比,用于後端伺服器性能不均的情況。

  • 3、IP綁定 ip_hash

    每個請求按通路ip的hash結果配置設定,這樣每個訪客固定通路一個後端伺服器,可以解決session的問題。

  • 4、fair(第三方)

    按後端伺服器的響應時間來配置設定請求,響應時間短的優先配置設定。

  • 5、url_hash(第三方)

    按通路url的hash結果來配置設定請求,使每個url定向到同一個後端伺服器,後端伺服器為緩存時比較有效。

Upstream Server配置

###定義上遊伺服器(需要被nginx真實代理通路的伺服器) 預設是輪訓機制
   upstream  backServer{
       server 127.0.0.1:8080;
       server 127.0.0.1:8081;
   }
	
   server {
       listen       80;
       server_name  www.***.com;
       location / {
   	    ### 指定上遊伺服器負載均衡伺服器
   	    proxy_pass http://backServer;
           index  index.html index.htm;
       }
   }           

複制

軟負載與硬負載

  • 軟負載:軟體
  • 硬負載:硬體設施

nginx安裝

1.安裝gcc gcc-c++(如新環境,未安裝請先安裝)
$ yum install -y gcc gcc-c++
2.安裝wget
$ yum -y install wget
3.安裝PCRE庫
$ cd /usr/local/
$ wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz
$ tar -zxvf pcre-8.33.tar.gz
$ cd pcre-8.33
$ ./configure
$ make && make install
如果報錯:

在 linux 中執行 wget 指令提示 -bash: wget: command not found 解決方法
解決辦法 yum -y install wget
5.安裝SSL庫
$ cd /usr/local/
$ wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
$ tar -zxvf openssl-1.0.1j.tar.gz
$ cd openssl-1.0.1j
$ ./config
$ make && make install
6.安裝zlib庫存

$ cd /usr/local/
$ wget http://zlib.net/zlib-1.2.11.tar.gz
$ tar -zxvf zlib-1.2.11.tar.gz
$ cd zlib-1.2.11
$ ./configure
$ make && make install
5.安裝nginx
$ cd /usr/local/
$ wget http://nginx.org/download/nginx-1.8.0.tar.gz
$ tar -zxvf nginx-1.8.0.tar.gz
$ cd nginx-1.8.0 
$ ./configure
$ make && make install
6.啟動nginx
/usr/local/nginx/sbin/nginx
ps -aux | grep 'nginx'
關閉防火牆
systemctl stop firewalld
停止nginx           

複制

gzip壓縮

zip on;
	    gzip_buffers 32 4K;
	    gzip_comp_level 6;
        gzip_min_length 100;
	    gzip_types application/javascript text/css text/xml;
        gzip_disable "MSIE [1-6]\."; #配置禁用gzip條件,支援正則。此處表示ie6及以下不啟用gzip(因為ie低版本不支援)
        gzip_vary on;           

複制

Nginx+Lvs+keepAlived【nginx高性能實戰】DNS域名解析過程nginx的應用場景正向代理和反向代理的差別nginx存放html靜态資源基于Nginx實作反向代理基于Nginx實作負載均衡Upstream Server配置軟負載與硬負載nginx安裝Nginx+Lvs+keepAlivedLinux環境下載下傳keepAlived

Nginx+Lvs+keepAlived

LVS基本介紹

LVS是Linux Virtual Server的簡寫,意即Linux虛拟伺服器,是一個虛拟的伺服器叢集系統。本項目在1998年5月由章文嵩博士成立,是中國國内最早出現的自由軟體項目之一。

摘自:百度百科

LVS的核心可以實作虛拟vip,實作對Nginx負載均衡功能

keepAlived基本介紹

keepAlived對伺服器狀态檢測和故障隔離基于lvs+keepAlived可以高可用的叢集環境

lvs與Nginx的工作原理

Lvs是四層負載均衡基于ip+端口實作負載均衡

Nginx是基于應用層Http層實作負載均衡

Lvs相比Nginx實作負載均衡抗負載能力更加強、穩定、配置低

Linux環境下載下傳keepAlived

https://logaaaaa.oss-cn-beijing.aliyuncs.com/keepalived-1.2.18.tar.gz

1.下載下傳keepalived
wget http://www.keepalived.org/software/keepalived-1.2.18.tar.gz
2.解壓安裝:
tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/
3.下載下傳插件openssl
yum install -y openssl openssl-devel(需要安裝一個軟體包)
4.開始編譯keepalived
cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived
5.make一下
make && make install           

複制

常見錯誤1

執行yum install 報錯如下:
File contains no section headers.
解決方案:
步驟1
删除yum.repos.d目錄下所有檔案
rm -f /etc/yum.repos.d/*  
步驟2
然後重新下載下傳阿裡的鏡像
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  

步驟3
清理緩存
yum clean all

步驟4
測試下載下傳安裝
yum install gcc  





常見錯誤2
報錯: eepalived執行./configure --prefix=/usr/local/keepalived時報錯:configure: error: Popt libraries is required
出現此錯誤的原因:
未安裝popt的開發包
解決方法:
yum install popt-devel
安裝好popt的開發包。重新./configure 即可。           

複制

keepalived安裝成Linux系統服務

将keepalived安裝成Linux系統服務,因為沒有使用keepalived的預設安裝路徑(預設路徑:/usr/local),安裝完成之後,需要做一些修改工作:
首先建立檔案夾,将keepalived配置檔案進行複制:
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
然後複制keepalived腳本檔案:
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/sbin/keepalived /usr/sbin/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
可以設定開機啟動:chkconfig keepalived on,到此我們安裝完畢!
Keepalived常用的指令
service keepalived start
service keepalived stop

啟動報錯Starting keepalived (via systemctl):  Job for keepalived.service failed. See 'systemctl status keepalived.service' and 'journalctl -xn' for details.  
解決辦法
[root@edu-proxy-01 sbin]# cd /usr/sbin/  
[root@edu-proxy-01 sbin]# rm -f keepalived   
[root@edu-proxy-01 sbin]# cp /usr/local/keepalived/sbin/keepalived  /usr/sbin/             

複制

Keepalived虛拟vip功能(主從都需要設定)

vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" #運作腳本,腳本内容下面有,就是起到一個nginx當機以後,自動開啟服務
    interval 2 #檢測時間間隔
    weight -20 #如果條件成立的話,則權重 -20
}
# 定義虛拟路由,VI_1 為虛拟路由的标示符,自己定義名稱
vrrp_instance VI_1 {
    ###MASTER 主的意思  BACKUP 從
    state MASTER #來決定主從
    interface ens33 # 綁定虛拟 IP 的網絡接口,根據自己的機器填寫
    virtual_router_id 121 # 虛拟路由的 ID 号, 兩個節點設定必須一樣
    mcast_src_ip 192.168.31.185 #填寫本機ip
    priority 100 # 節點優先級,主要比從節點優先級高
    nopreempt # 優先級高的設定 nopreempt 解決異常恢複後再次搶占的問題
    advert_int 1 # 多點傳播資訊發送間隔,兩個節點設定必須一樣,預設 1s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 将 track_script 塊加入 instance 配置塊
    track_script {
        chk_nginx #執行 Nginx 監控的服務
    }
    ### 虛拟IP位址配置規範 假設192.168.212.143 
    virtual_ipaddress {
        192.168.212.110 # 虛拟ip,也就是解決寫死程式的ip怎麼能切換的ip,也可擴充,用途廣泛。可配置多個(如果是主備這裡不需要改)。
    }
}           

複制

nginx_check.sh

#!/bin/bash
A=`ps -C nginx ィCno-header |wc -l`
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi           

複制

一定要授權

chmod 777 nginx_check.sh            

複制

主備一定要虛拟vip一樣。

通過ipaddr檢視,隻有主節點down掉,從節點 就有了

檢視效果

  1. 一個是真實ip,一個虛拟vip ,同時關閉 nginx,會發現 keepalived,會自動重新開機我們的nginx
Nginx+Lvs+keepAlived【nginx高性能實戰】DNS域名解析過程nginx的應用場景正向代理和反向代理的差別nginx存放html靜态資源基于Nginx實作反向代理基于Nginx實作負載均衡Upstream Server配置軟負載與硬負載nginx安裝Nginx+Lvs+keepAlivedLinux環境下載下傳keepAlived
  1. 主備伺服器,将主伺服器的keepalived關掉,使用vip通路,會自動通路備選伺服器。
Nginx+Lvs+keepAlived【nginx高性能實戰】DNS域名解析過程nginx的應用場景正向代理和反向代理的差別nginx存放html靜态資源基于Nginx實作反向代理基于Nginx實作負載均衡Upstream Server配置軟負載與硬負載nginx安裝Nginx+Lvs+keepAlivedLinux環境下載下傳keepAlived