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
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掉,從節點 就有了
檢視效果
- 一個是真實ip,一個虛拟vip ,同時關閉 nginx,會發現 keepalived,會自動重新開機我們的nginx
- 主備伺服器,将主伺服器的keepalived關掉,使用vip通路,會自動通路備選伺服器。