準備工作:
192.168.16.128
192.168.16.129
兩條虛擬機。安裝好Nginx
安裝Nginx
更新yum 原始檔:
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
安裝Nginx:
yum -y install nginx
操作命令:
systemctl start nginx; #啟動Nginx
systemctl stop nginx; #停止Nginx
# 什麼是高可用?
高可用HA(High Availability)是分散式系統架構設計中必須考慮的因素之一,它通常是指,透過設計減少系統無法提供服務的時間。如果一個系統能夠一直提供服務,那麼這個可用性則是百分之百,但是天有不測風雲。所以我們只能盡可能的去減少服務的故障。
解決的問題?
在生產環境上很多時候是以Nginx 做反向代理對外提供服務,但是一天Nginx難免遇見故障,如:伺服器宕機。當Nginx 宕機那麼所有對外提供的介面都將導致無法存取。
雖然我們無法保證伺服器百分之百可用,但也得想辦法避免這種悲劇,今天我們使用keepalived 來實現Nginx
的高可用。
雙機熱備方案
這種方案是國內企業中最為普遍的一種高可用方案,雙機熱備其實就是指一台伺服器在提供服務,另一台為某服務的備用狀態,當一台伺服器不可用另一台就會頂替上去。
keepalived是什麼?
Keepalived 軟體起初是專為LVS 負載平衡軟體設計的,用來管理並監控LVS叢集系統中各個服務節點的狀態,後來又加入了可以實現高可用的VRRP (Virtual Router Redundancy Protocol ,虛擬路由器冗餘協定)功能。因此,Keepalived 除了能夠管理LVS軟體外,還可以作為其他服務(例如:Nginx、Haproxy、MySQL等)的高可用解決方案軟體
故障轉移機制
Keepalived 高可用服務之間的故障切換轉移,是透過VRRP 來實現的。
在Keepalived 服務正常運作時,主Master 節點會不斷地向備節點發送(多播的方式)心跳訊息,用以告訴備Backup 節點本身還活著,當主Master 節點發生故障時,就無法發送心跳訊息,備節點也就因此無法繼續偵測到來自主Master 節點的心跳了,於是呼叫自身的接管程序,接管主Master節點的IP資源及服務。而當主 Master節點恢復時,備Backup節點又會釋放主節點故障時自身接手的IP資源及服務,並恢復到原來的備用角色。
實作過程
安裝keepalived
yum 方式直接安裝即可,該方式會自動安裝依賴:
yum -y install keepalived
修改主機(192.168.16.128)keepalived設定檔
# yum 方式安裝的會生產設定檔在/etc/keepalived 下:
vi keepalived.conf
keepalived.conf:
#偵測腳本
# vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh" #心跳執行的腳本,偵測nginx是否啟動
# interval 2 #(偵測方式執行的間隔,而單位為秒)
# weight 2 #重量
# }
#vrrp 實例定義部分
vrrp_instance VI_1 {
# state MASTER # 指定keepalived的角色,MASTER為主,BACKUP為備
interface ens33 # 目前進行vrrp通訊的網路介面卡(目前centos的網路卡) 用ifconfig檢視你特定的網路卡
virtual_router_id 66 # 虛擬路由編號,主從要一直
priority 100 # 優先級,數值越大,取得處理請求的優先順序越高
advert_int 1 # 檢查間隔,預設為1s(vrrp組播週期秒數)
#授權存取
# authentication {
# auth_type PASS #設定驗證類型和密碼,MASTER和BACKUP必須使用相同的密碼才能正常通訊
auth_pass 1111
}
track_script {
# chk_http_port #(偵測腳本)
}
virtual_ipaddress {
192.168.16.130 # 定義虛擬ip(VIP),可多設,每行一個
# }
}
virtual_ipaddress 裡面可以設定vip,在線上透過vip來存取服務。
interface 需要根據伺服器網路卡進行設定通常查看方式ip addr
# authentication 設定授權存取後備機也需要相同設定
修改備機(192.168.16.129)keepalived設定檔
# keepalived.conf:
#偵測腳本
# vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh" #心跳執行的腳本,偵測nginx是否啟動
# interval 2 #(所執行期間偵測中的間隔)
weight 2 #重量
# }
#vrrp 實例定義部分
vrrp_instance VI_1 {
# state BACKUP # 指定keepalived的角色,MASTER為主,BACKUP為備
interface ens33 # 目前進行vrrp通訊的網路介面卡(目前centos的網路卡) 用ifconfig檢視你特定的網路卡
virtual_router_id 66 # 虛擬路由編號,且擁有者總是使用
## priority 99 # 優先級,且數值越大,取得處理請求的優先順序越高
advert_int 1 # 檢查間隔,預設為1s(vrrp群播週期秒數)
#授權存取
# authentication {
# auth_type PASS #設定驗證類型和密碼,MASTER和BACKUP必須使用相同的密碼才能正常通訊
auth_pass 1111
### }###### track_script {####### chk_http_port #(請呼叫偵測腳本)############################################################################################################ }###### virtual_ipaddress {###### 192.168.16.130 # 定義虛擬ip(VIP),可多設,且每行一個###### }###### }###### 偵測腳本:###### #!/bin/bash###### #偵測nginx是否啟動了###### A=`ps -C nginx --no-header |wc -l` ####### if [ $A -eq 0 ];then #如果nginx沒有啟動就啟動nginx ####### systemctl start nginx #重啟nginx###### if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #nginx重啟失敗,則停掉keepalived服務,進行VIP轉移###### killall keepalived ####### fi####### fi###### 腳本授權:chmod 775 check_nginx_pid.sh###### 說明:腳本必須透過授權,不然沒權限存取啊,在這裡我們兩個伺服器執行、VIP(virtual_ipaddress:192.168.16.130) ,我們在生產環境是直接透過vip來存取服務。 ###### 模擬nginx 故障:###### 修改兩個伺服器預設存取的Nginx 的html 頁面作為區別。 ###### 首先訪問192.168.16.130 ,透過vip 進行訪問,頁面顯示192.168.16.128 ;說明目前是主伺服器提供的服務。 ###### 這時候192.168.16.128 主伺服器執行指令:###### systemctl stop nginx; #停止nginx####### 再次造訪vip(192.168.16.130) 發現這個時候頁面顯示的還是:192.168.16.128 ,這是腳本裡面自動重啟。 ###### 現在直接將192.168.16.128 伺服器關閉,在此訪問vip(192.168.16.130) 現在發現頁面顯示192.168.16.129 這個時候keepalived 就自動故障轉移了,一套企業級生產環境的高可用方案就搭建好了。 ###以上是怎麼實現Nginx高可用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

NGINXUnit是一個開源應用服務器,支持多種編程語言,提供動態配置、零停機更新和內置負載均衡等功能。 1.動態配置:無需重啟即可修改配置。 2.多語言支持:兼容Python、Go、Java、PHP等。 3.零停機更新:支持不中斷服務的應用更新。 4.內置負載均衡:可將請求分發到多個應用實例。

NGINXUnit優於ApacheTomcat、Gunicorn和Node.js內置HTTP服務器,適用於多語言項目和動態配置需求。 1)支持多種編程語言,2)提供動態配置重載,3)內置負載均衡功能,適合需要高擴展性和可靠性的項目。

NGINXUnit通過其模塊化架構和動態重配置功能提高了應用的性能和可管理性。 1)模塊化設計包括主控進程、路由器和應用進程,支持高效管理和擴展。 2)動態重配置允許在運行時無縫更新配置,適用於CI/CD環境。 3)多語言支持通過動態加載語言運行時實現,提升了開發靈活性。 4)高性能通過事件驅動模型和異步I/O實現,即使在高並發下也保持高效。 5)安全性通過隔離應用進程提高,減少應用間相互影響。

NGINXUnit可用於部署和管理多種語言的應用。 1)安裝NGINXUnit。 2)配置它以運行不同類型的應用,如Python和PHP。 3)利用其動態配置功能進行應用管理。通過這些步驟,你可以高效地部署和管理應用,提升項目效率。

NGINX更适合处理高并发连接,而Apache更适合需要复杂配置和模块扩展的场景。1.NGINX以高性能和低资源消耗著称,适合高并发。2.Apache以稳定性和丰富的模块扩展闻名,适合复杂配置需求。

NGINXUnit通過其動態配置和高性能架構提升應用的靈活性和性能。 1.動態配置允許在不重啟服務器的情況下調整應用配置。 2.高性能體現在事件驅動和非阻塞架構以及多進程模型上,能夠高效處理並發連接和利用多核CPU。

NGINX和Apache都是強大的Web服務器,各自在性能、可擴展性和效率上有獨特的優勢和不足。 1)NGINX在處理靜態內容和反向代理時表現出色,適合高並發場景。 2)Apache在處理動態內容時表現更好,適合需要豐富模塊支持的項目。選擇服務器應根據項目需求和場景來決定。

NGINX適合處理高並發請求,Apache適合需要復雜配置和功能擴展的場景。 1.NGINX採用事件驅動、非阻塞架構,適用於高並發環境。 2.Apache採用進程或線程模型,提供豐富的模塊生態系統,適合複雜配置需求。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

Dreamweaver CS6
視覺化網頁開發工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。