nginx叢集
傳統web通路模型:使用者發起請求-》伺服器接收請求-》伺服器處理請求-》伺服器響應請求
缺點:單點故障、單台伺服器資源有限、單台伺服器處理耗時長
解決辦法
方案一:部署一台備用伺服器,當機時直接切換
伺服器使用率低,成本高,切換不及時,伺服器壓力依然大
方案二:部署多台伺服器,根據DNS的輪詢解析機制去實作使用者分發
使用者處理速度得到提高,但一台伺服器故障,就有一部分使用者通路不了網站
并行處理方案
叢集模式:多态機器組成伺服器,單台伺服器出現故障時不向他分發内容即可,使用分發器控制。
VIP:虛ip,有虛ip的主機負載分發器的作用
叢集原理
nginx在叢集中屬于分發器,有基于應用層分發器和基于傳輸層分發器兩種
原理:虛拟主機+反向代理+upstream分發器子產品組成
虛拟主機:接受響應和請求
反向代理:帶使用者去資料伺服器拿資料
upstream:告訴nginx去哪個資料伺服器拿資料
叢集實作
一台主機做分發器,兩台主機做資料處理
分發器:192.168.10.129
接收器:
192.168.10.41
192.168.10.42
虛拟主機接受使用者請求-》反向代理-》upstream分發器-》資料伺服器-》處理請求-》傳回相應nginx-》nginx響應請求給使用者
接受伺服器配置
兩個接受伺服器上網站資源一樣即可
能通路網站即可
分發器配置
upstream web{
server 192.168.10.41;
server 192.168.10.42;
}
server {
listen 80;
server_name www.bac.com;
location / {
proxy_pass http://web;
}
}
分發伺服器使用
proxy_pass
将浏覽器請求轉發達分發器中,
upstream
預設平均配置設定請求給伺服器去處理資料
keepalive高可用叢集
keepalive是監控加自愈軟體。檢測伺服器狀态,當機時,嘗試重新開機服務,失敗時,剔除伺服器
分發器配置
建構一個高可用叢集,解決備份分發器閑置問題
1.安裝keepalive
vim keepalived_install.sh
sh keepalived_install
keepalived_install腳本内容
2.配置nginx.conf
3,配置keepalive.conf
vim /etc/keepalived/keepalived.conf
主伺服器
主伺服器使用
state MASTER
備份伺服器
備份伺服器使用
state BACKUP
執行腳本檔案
檢查nginx伺服器是否啟動,沒有啟動則使其啟動,若啟動不了,則關閉keepalived程式
4.驗證
lsof -i :80
killall nginx
lsof -i :80
殺掉nginx後,keepalived重新啟動nginx,pid會改變
抓包
tcpdump -nn -vvv -i ens33 vrrp
224.0.0.18 為多點傳播位址,檢查網絡中資料伺服器是否存活
檢視主伺服器ip
ip add show
主伺服器有虛拟ip
192.168.10.213/24
而備份伺服器則沒有
測試keepalived是否好用
ip add show 檢視虛位址 192.168.10.213/24在主分發器上
watch -n1 killall nginx 使主分發器發生故障
tailf /var/log/message 檢視備份分發器是否拿到虛ip
我們可以看到備份伺服器拿到虛拟ip
ip add show
同時,如果我再次啟動主分發器,虛ip又會重新回到主分發器上
systemctl start keepalived
設定資料伺服器備份
在三秒内失敗2次就認定該資料伺服器不可通路,自動轉到其他資料伺服器