Nginx+Keepalived實現前臺服務高可用

? ? ? ? 現階段項目開發往往采用前后臺分離,前臺常用的技術有vue、react等,前臺代碼部署在nginx中,代碼中配置了后臺服務的網關地址,由網關向后臺分發服務請求,架構示意圖如下:

? ? ? ? 在上述架構圖中,如果Nginx服務器宕機,那么客戶端則無法訪問后臺服務,本文重點闡述基于Keepalived實現前臺服務高可用。改進后架構示意圖如下:

? ? ? ? 實現基于Keepalived的前臺服務高可用,步驟如下:

? ? ? ? 環境說明:系統版本:centos7?;Nginx版本:nginx-1.20.2.tar.gz;keepalived版本:keepalived-2.0.20.tar.gz;后臺2個虛擬機,ip分別是:192.168.136.129、192.168.136.130

? ? ? ? 1、Nginx安裝【129、130】

# 安裝四個依賴
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel# 解壓nginx源碼
cd /usr/software/
tar xzvf nginx-1.20.2.tar.gz# 創建安裝的文件夾
cd /usr/install
mkdir nginx-1.20.2#指定安裝位置
cd /usr/software/nginx-1.20.2
./configure --prefix=/usr/install/nginx-1.20.2#編譯&安裝
make && make install

? ? ? ? 2、為了方便觀察ip信息,修改nginx的主頁面index.html

vim /usr/install/nginx-1.20.2/html/index.html

? ? ? ? 【129】文件修改內容如下:

????????【130】文件修改內容如下:

? ? ? ? 3、【129、130】分別啟動nginx

cd /usr/install/nginx-1.20.2/sbin/
./nginx

? ? ? ? 4、【129、130】安裝keepalived?

#解壓縮keepalived
cd /usr/software/
tar xzvf keepalived-2.0.20.tar.gz#創建keepalived的安裝目錄
cd /usr/install
mkdir keepalived-2.0.20#配置keepalived的安裝目錄并編譯安裝
cd /usr/software/keepalived-2.0.20
./configure --prefix=/usr/install/keepalived-2.0.20
make && make install

? ? ? ? 5、?【129、130】etc創建keepalived配置目錄,拷貝配置文件到etc目錄下,并修改此文件

mkdir /etc/keepalived
cp -p /usr/install/keepalived-2.0.20/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf

? ? ? ? 【129】keepalived.conf 文件信息如下:

! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.136.250}
}virtual_server 192.168.136.250 80 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCPsorry_server 192.168.136.200 80real_server 192.168.136.129 80 {weight 1TCP_CHECK {connect_port    80connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.136.130 80 {weight 1TCP_CHECK {connect_port    80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

????????【130】keepalived.conf 文件信息如下:

! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.136.250}
}virtual_server 192.168.136.250 80 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCPsorry_server 192.168.136.200 80real_server 192.168.136.129 80 {weight 1TCP_CHECK {connect_port    80connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.136.130 80 {weight 1TCP_CHECK {connect_port    80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

? ? ? ? ?重點配置如下:

? ? ? ? 【129】state MASTER;【130】state BACKUP;

????????interface ens33 :網卡名稱

????????virtual_ipaddress?192.168.136.250:虛擬地址,就是客戶端可以訪問的地址

????????【129】priority 100;【130】priority 80;【129】的優先級高

????????real_server 192.168.136.129 80 真實的nginx地址

????????real_server 192.168.136.130 80?真實的nginx地址

? ? ? ? 6、【129】、【130】分別啟動keepalived并測試

cd /etc/keepalived
service keepalived start
service keepalived status

? ? ? ? 瀏覽器輸入虛地址:http://192.168.136.250/?,由于129是master,顯示129的ip地址

? ? ? ? 當129虛擬機宕機時(模擬關閉電源),再次訪問?http://192.168.136.250/是,顯示130的ip地址,實現了前臺服務的高可用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/87322.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/87322.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/87322.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Gradio全解13——MCP協議詳解(5)——Python包命令:uv與uvx實戰

Gradio全解13——MCP協議詳解(5)——Python包命令:uv與uvx實戰 第13章 MCP協議詳解13.5 Python包命令:uv與uvx實戰13.5.1 uv核心亮點與常用命令1. uv介紹2. 安裝與項目管理3. 腳本與工具4. Python版本與pip接口 13.5.2 uv核心指令…

OD 算法題 B卷【求最小步數】

文章目錄 求最小步數 求最小步數 求從坐標零點到坐標點n的最小步數,一次只能沿著橫坐標軸向左或向右移動2或3;途經的坐標點可以為負數; 輸入描述: 坐標點n 輸出描述: 從坐標零點移動到坐標點n的最小步數 n在【1,10^9】 示例1 輸入&#xf…

Elasticsearch 集群升級實戰指引—7.x 升級到 8.x

升級Elasticsearch集群從7.x到8.x是一項復雜且關鍵的任務,涉及重大版本變更(如API調整、配置變更、安全功能強制啟用等),可能影響集群的性能和穩定性。結合您提到的業務量增長導致索引寫入變慢的問題,本指引不僅提供詳…

JWT學習總結

文章目錄 前置知識Authorization頭部和 CookieCRSF攻擊 JWT概念JWT認證流程使用Springboot整合JWTJwtUtil JWT案例控制器JWT攔截器注冊攔截器結果 session VS Jwt 前置知識 Authorization頭部和 Cookie Authorization 頭部和 Cookie 是 HTTP 協議中兩種不同的身份認證 / 信息…

阿里云消息隊列 Apache RocketMQ 創新論文入選頂會 ACM FSE 2025

近日,由阿里云消息團隊發表的 Apache RocketMQ 創新論文被 CCF-A 類軟件工程頂級會議 FSE 2025 Industry Track 錄用。 ACM FSE(The ACM International Conference on the Foundations of Software Engineering)是享有盛譽的國際學術會議&…

定制WordPress管理后臺

WordPress作為全球最流行的建站工具,因其靈活性和易用性受到廣泛歡迎。許多服務器提供商都支持一鍵安裝WordPress,例如Hostease,使新手用戶也能輕松搭建屬于自己的網站。然而,后臺的默認設置可能無法完全滿足不同用戶的需求。定制…

REST API設計與Swagger:構建高效、易用的Web服務

引言 在現代Web開發中,REST API已成為不同系統間通信的標準方式。一個設計良好的REST API不僅能提高開發效率,還能改善用戶體驗。而Swagger(現稱為OpenAPI)作為API文檔和測試的強大工具,已經成為API開發中不可或缺的一…

一個非對齊訪問的問題

1、引言 最近在編寫代碼時,出現了這樣一個 bug。程序一跑,系統就崩潰了,報錯是 bus error。 目標平臺:ARM32 最終定位到出錯的代碼片段: *((uint32_t *)ptr) id;這里的 ptr 是一個非 4 字節對齊的地址!&a…

【構造】P8976 「DTOI-4」排列|普及+

本文涉及知識點 構造 P8976 「DTOI-4」排列 題目背景 Update on 2023.2.1:新增一組針對 yuanjiabao 的 Hack 數據,放置于 #21。 Update on 2023.2.2:新增一組針對 CourtesyWei 和 bizhidaojiaosha 的 Hack 數據,放置于 #22。…

多路I/O轉接服務器(select、poll、epoll)

多路IO轉接服務器也叫做多任務IO服務器。該類服務器實現的主旨思想是,不再由應用程序自己監視客戶端連接,取而代之由內核替應用程序監視文件。 IO 多路轉接方式比較: 常見的 IO 多路轉接方式有:select、poll、epoll,他…

最新臨時文件快傳系統源碼 輕量化 帶后臺

簡介: 最新臨時文件快傳系統源碼 輕量化 帶后臺 首發 輕松上傳文件并生成提取碼分享給他人,無需注冊,方便快捷。 圖片:

MyBatis多數據源動態連接工具類實現

這個DatabaseService工具類提供了動態創建MyBatis SqlSession的能力,可以靈活地連接到不同的數據庫,非常適合需要動態切換數據源的場景。 package com.cmes.immp.device.utils;import lombok.SneakyThrows; import org.apache.commons.dbcp2.BasicDataS…

用亮數據 MCP 驅動 Trae 智能體:打造高效亞馬遜商品采集與分析助手

本文適合希望快速構建數據驅動型智能體的開發者、數據工程師及 AI 產品設計者閱讀 并非廣告,希望本文可以幫助有需求的同學,祝大家天天開心 在數字時代,數據是決策與洞察趨勢的關鍵。但移動互聯網數據獲取不易,傳統爬蟲技術面對復…

如何降低AIGC生成內容的重復率?五種免費降AI率的方法 (25年更新)

隨著AI生成內容(AIGC)的普及,越來越多的學術寫作依賴AI工具來生成論文和文章。然而,AI生成內容的查重率常常偏高,導致很多論文無法通過學術查重系統。為了解決這一問題,以下是五種有效的免費降AIGC率的方法…

小米YU7使用UWB技術,厘米級定位精準迎賓,安全防破解無感控車

當您雙手抱著快遞走向愛車時,車門自動解鎖;當您站在前備箱前稍作停留,箱蓋優雅升起——這不是科幻電影,而是小米YU7搭載UWB技術帶來的真實體驗。在2025年5月的小米15周年戰略新品發布會上,雷軍揭曉了這項革命性技術&am…

WPF學習(動畫)

文章目錄 一、圖像變換 RenderTransform1、常見變換類型2、RenderTransform 的核心作用3、RenderTransform 的使用方式4、與 LayoutTransform 的對比5、在動畫中的應用 二、 滾動的橢圓三、Storyboard放置位置1. **元素的 Resources 集合**2. **控件模板(ControlTem…

Crossbar結構的排隊策略

目錄 一、概述 二、排隊策略 三、輸入排隊結構(IQ) 3.1 結構特點 3.2 改進方案 四、輸出排隊結構(OQ) 五、輸入輸出聯合排隊結構(CIOQ) 六、輸入交叉節點聯合排隊結構(CICQ) 一、概述 Crossbar是一種全連接的交換結構,由 MN 個交叉…

狀態模式 - Flutter中的狀態變身術,讓對象隨“狀態“自由切換行為!

訂單狀態流轉/播放器控制/游戲角色行為…一個模式搞定所有狀態驅動型邏輯! 經典場景:訂單狀態管理 假設你在開發一個外賣App,訂單有以下狀態: 等待接單已接單配送中已完成已取消 每個狀態下: 顯示的UI不同可執行的…

數據庫9:數據庫字符編碼調整與校隊(排序)規則

一.常用字符編碼 1.ASCII編碼 用一個字節表示一個字符 2.ANSI編碼 每個國家為了顯示本國的語言而對ASCII碼進行了拓展 用兩個字節表示一個漢字,中國的ANSI編碼是GB2312編碼(簡體),日本的ANSI編碼是JIS編碼,臺灣的A…

人臉活體識別4:Android實現人臉眨眼 張嘴 點頭 搖頭識別(可實時檢測)

人臉活體識別4:Android實現人臉眨眼 張嘴 點頭 搖頭識別(可實時檢測) 目錄 人臉活體識別4:Android實現人臉眨眼 張嘴 點頭 搖頭識別(可實時檢測) 1. 前言 2.人臉活體識別方法 (1)基于人臉動作的檢測?? (2&…