天天看點

nginx叢集nginx叢集keepalive高可用叢集

nginx叢集

傳統web通路模型:使用者發起請求-》伺服器接收請求-》伺服器處理請求-》伺服器響應請求

缺點:單點故障、單台伺服器資源有限、單台伺服器處理耗時長

解決辦法

方案一:部署一台備用伺服器,當機時直接切換

伺服器使用率低,成本高,切換不及時,伺服器壓力依然大

方案二:部署多台伺服器,根據DNS的輪詢解析機制去實作使用者分發

使用者處理速度得到提高,但一台伺服器故障,就有一部分使用者通路不了網站

并行處理方案

nginx叢集nginx叢集keepalive高可用叢集

叢集模式:多态機器組成伺服器,單台伺服器出現故障時不向他分發内容即可,使用分發器控制。

nginx叢集nginx叢集keepalive高可用叢集

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腳本内容

nginx叢集nginx叢集keepalive高可用叢集

2.配置nginx.conf

nginx叢集nginx叢集keepalive高可用叢集

3,配置keepalive.conf

vim /etc/keepalived/keepalived.conf

主伺服器

nginx叢集nginx叢集keepalive高可用叢集

主伺服器使用

state MASTER

備份伺服器

nginx叢集nginx叢集keepalive高可用叢集

備份伺服器使用

state BACKUP

執行腳本檔案

檢查nginx伺服器是否啟動,沒有啟動則使其啟動,若啟動不了,則關閉keepalived程式

nginx叢集nginx叢集keepalive高可用叢集

4.驗證

lsof -i :80     
killall nginx
lsof -i :80  
           
nginx叢集nginx叢集keepalive高可用叢集

殺掉nginx後,keepalived重新啟動nginx,pid會改變

nginx叢集nginx叢集keepalive高可用叢集

抓包

tcpdump -nn -vvv -i ens33 vrrp

nginx叢集nginx叢集keepalive高可用叢集

224.0.0.18 為多點傳播位址,檢查網絡中資料伺服器是否存活

檢視主伺服器ip

ip add show

nginx叢集nginx叢集keepalive高可用叢集

主伺服器有虛拟ip

192.168.10.213/24

而備份伺服器則沒有

nginx叢集nginx叢集keepalive高可用叢集

測試keepalived是否好用

ip add show  檢視虛位址 192.168.10.213/24在主分發器上
watch -n1 killall nginx  使主分發器發生故障
tailf  /var/log/message  檢視備份分發器是否拿到虛ip
           
nginx叢集nginx叢集keepalive高可用叢集

我們可以看到備份伺服器拿到虛拟ip

ip add show

nginx叢集nginx叢集keepalive高可用叢集

同時,如果我再次啟動主分發器,虛ip又會重新回到主分發器上

systemctl start keepalived

設定資料伺服器備份

nginx叢集nginx叢集keepalive高可用叢集

在三秒内失敗2次就認定該資料伺服器不可通路,自動轉到其他資料伺服器

繼續閱讀