最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx雙機(jī)熱備的實(shí)現(xiàn)步驟

 更新時(shí)間:2024年05月12日 09:49:10   作者:逆流°只是風(fēng)景-bjhxcc  
本文主要介紹了Nginx雙機(jī)熱備的實(shí)現(xiàn)步驟,是國(guó)內(nèi)企業(yè)中最為普遍的一種高可用方案,具有一定的參考價(jià)值,感興趣的可以了解一下

目前所接觸的項(xiàng)目還不涉及到分布式,都是單機(jī)模式。不過好在至今沒出過什么大問題,基本能滿足客戶的需求。

由于數(shù)據(jù)量不是很大,單機(jī)的性能已經(jīng)可以滿足,按理不應(yīng)該做加法,畢竟部署的越復(fù)雜,維護(hù)起來就越麻煩。

性能雖然可以滿足,但有一個(gè)不得不提的痛點(diǎn):項(xiàng)目無法隨時(shí)更新。

目前的解決方式是:白天改bug、測(cè)試,等到晚上客戶不使用系統(tǒng)時(shí)才停機(jī)維護(hù),效率相對(duì)較低。

有沒有可能讓項(xiàng)目可以隨時(shí)更新?
答案肯定是有,相對(duì)簡(jiǎn)單的解決方案是:雙機(jī)熱備(應(yīng)用雙活) 。

什么是雙機(jī)熱備?

這里引用一下百度百科的解釋。

雙機(jī)熱備是應(yīng)用于服務(wù)器的一種解決方案,其構(gòu)造思想是主機(jī)和從機(jī)通過TCP/IP網(wǎng)絡(luò)連接,正常情況下主機(jī)處于工作狀態(tài),從機(jī)處于監(jiān)視狀態(tài),一旦從機(jī)發(fā)現(xiàn)主機(jī)異常,從機(jī)將會(huì)在很短的時(shí)間之內(nèi)代替主機(jī),完全實(shí)現(xiàn)主機(jī)的功能。

就是同時(shí)部署兩套系統(tǒng),一主一備。主節(jié)點(diǎn)負(fù)責(zé)對(duì)外提供服務(wù),備用節(jié)點(diǎn)默認(rèn)不提供服務(wù),只有在主節(jié)點(diǎn)出問題的情況下,備用節(jié)點(diǎn)才頂替主節(jié)點(diǎn),繼續(xù)對(duì)外提供服務(wù)。
大哥不行了,二弟替一會(huì)兒。
可以解決什么問題?
利用這個(gè)思路,是否可以實(shí)現(xiàn)同時(shí)部署AB兩套系統(tǒng),當(dāng)系統(tǒng)需要更新維護(hù)時(shí),停用A服務(wù),B服務(wù)頂替A工作。待A服務(wù)更新完畢后,A服務(wù)啟動(dòng)提供升級(jí)后的服務(wù),B服務(wù)停用再更新。實(shí)現(xiàn)應(yīng)用的熱插拔?
答案當(dāng)然也是可以的。
紙上得來終覺淺,絕知此事要躬行。
本人寫了個(gè)小demo親測(cè)!

實(shí)現(xiàn)思路

搭建項(xiàng)目前先簡(jiǎn)單理一下思路。
要做的分為以下幾步:
1、啟動(dòng)兩套簡(jiǎn)單的Web服務(wù)
2、服務(wù)內(nèi)就兩個(gè)簡(jiǎn)單的方法

保存值到Session
從Session取值

3、Nginx配置負(fù)載均衡,PC01主,PC02備
3、保存Session到PC01服務(wù),然后停用PC01
4、從PC02服務(wù)取值,看PC02能否正常工作并訪問Session
如果服務(wù)可以無縫切換,Session也都正常則表示成功。

項(xiàng)目環(huán)境

兩套SpringBoot服務(wù)(雙活)
Redis(實(shí)現(xiàn)Session共享)
Nginx(負(fù)載均衡-主備模式) (也可使用KeepAlived)

為什么需要Redis?
使用多套系統(tǒng)無法避開的一個(gè)問題就是Session,再也不能像以前單機(jī)模式下直接從request中g(shù)etSession了,Session是保存在服務(wù)器的,多個(gè)服務(wù)器之間無法共享Session。關(guān)于共享Session有很多實(shí)現(xiàn)方案,這里采用的是Redis。
搭建步驟

1、先簡(jiǎn)單看一下前端

由于只講環(huán)境搭建,所以項(xiàng)目竟可能的簡(jiǎn)單。
只有兩個(gè)功能,保存值到Session和從Session中取值。

const PATH = ‘/backend/';
//保存到Session
function saveSession() {
    const personName = $('#personName').val();
    if (personName.length <= 0) {
        alert('請(qǐng)輸入再保存');
        return;
    }
    $.ajax({
        type:'post',
        url: PATH+"test/save",
        async:false,
        xhrFields: {
            withCredentials: true
        },
        crossDomain: true,
        data: {
            personName:personName
        },
        success: function(json) {
            $('#screen').text(json);
        }
    });
}

//查詢Session
function requestServer() {
    $.ajax({
        type:'post',
        url: PATH+"test/query",
        async:false,
        xhrFields: {
            withCredentials: true
        },
        crossDomain: true,
        success: function(json) {
            $('#screen').text(json);
        }
    });
}

2、再看一下后端服務(wù)

很簡(jiǎn)單的一個(gè)服務(wù),就兩個(gè)方法:保存值到session、從session中取值
只從request中獲取SessionId作為Key,數(shù)據(jù)作為Value保存到Redis。

@RestController
@RequestMapping("/test")
public class TestController {
	private static final String SERVER = "PC01";

	@Autowired
	private RedisUtil redisUtil;

	@RequestMapping("/save")
	public Object save(String personName, HttpServletRequest request, HttpServletResponse response) {
		String sessionId = request.getRequestedSessionId();
		if (redisUtil.set(sessionId, personName)) {
			return SERVER+",Session保存成功";
		}
		return "Session保存失敗";
	}

	@RequestMapping("/query")
	public Object query(HttpServletRequest request) {
		String sessionId = request.getRequestedSessionId();
		Object personName = redisUtil.get(sessionId);
		if (personName != null) {
			return "Hello," + personName+",我是"+SERVER;
		}
		return "Session為空";
	}
}

項(xiàng)目會(huì)編譯兩個(gè)jar包,同時(shí)部署。
PC01對(duì)應(yīng)8081端口,PC02對(duì)應(yīng)8082端口。

3、Nginx配置負(fù)載均衡

#主備模式,backup只有在主節(jié)點(diǎn)故障時(shí)才提供服務(wù)
upstream backend {  
   server 127.0.0.1:8081;  
   server 127.0.0.1:8082 backup;  
}
server {
    listen       81;
    server_name  localhost;
     location /{
		#前端
        root www/back; 
     } 
     location /backend{
        #反向代理到8081、8082
        proxy_pass http://backend;
     } 
}

到這一步環(huán)境就算搭建完成了。

4、測(cè)試

現(xiàn)在雖然PC01和PC02都是啟動(dòng)的,但是只有PC01對(duì)外提供服務(wù)。
我們將‘小潘’保存到Session,然后查詢。

可以看到,我們現(xiàn)在訪問的是PC01服務(wù),且Session也保存成功了。
接下來,我們停用PC01服務(wù)。

[root@localhost test]# lsof -i:8081
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 71972 root 13u IPv6 88606 0t0 TCP *:tproxy (LISTEN)
[root@localhost test]# kill -9 71972

強(qiáng)制殺掉進(jìn)程,項(xiàng)目會(huì)不會(huì)因此而掛掉呢?
再次請(qǐng)求查詢Session

可以看到,項(xiàng)目并沒有掛掉。不僅如此,而且Session也能正常訪問,PC02迅速頂替了PC01的位置,繼續(xù)對(duì)外提供服務(wù)。
接下來,就可以對(duì)PC01進(jìn)行維護(hù)更新了,更新好了直接啟用,PC02又會(huì)退居幕后,等待下一次復(fù)出。
整個(gè)過程對(duì)于用戶而言是無縫的。
利用雙機(jī)熱備,不僅可以實(shí)現(xiàn)項(xiàng)目的隨時(shí)更新,而且還實(shí)現(xiàn)了高可用。即使PC01意外宕機(jī),PC02也會(huì)迅速接替,不至于整個(gè)項(xiàng)目癱瘓。

到此這篇關(guān)于Nginx雙機(jī)熱備的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Nginx雙機(jī)熱備內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx反向代理多域名的HTTP和HTTPS服務(wù)的實(shí)現(xiàn)

    Nginx反向代理多域名的HTTP和HTTPS服務(wù)的實(shí)現(xiàn)

    這篇文章主要介紹了Nginx反向代理多域名的HTTP和HTTPS服務(wù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Nginx部署多個(gè)vue項(xiàng)目的方法步驟

    Nginx部署多個(gè)vue項(xiàng)目的方法步驟

    本文主要介紹了Nginx部署多個(gè)vue項(xiàng)目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Fastdfs與nginx進(jìn)行壓縮圖片比率

    Fastdfs與nginx進(jìn)行壓縮圖片比率

    前陣子,工作搞了一下Fastdfs與nginx進(jìn)行壓縮圖片比率存儲(chǔ)在服務(wù)器中,今天應(yīng)用下工作時(shí)間記錄下.
    2014-07-07
  • 深入理解nginx的access.log文件

    深入理解nginx的access.log文件

    NGINX軟件會(huì)把每個(gè)用戶訪問網(wǎng)站的日志記錄到指定的日志文件里,供網(wǎng)站者分析用戶的瀏覽行為,本文主要介紹了nginx的access.log文件,感興趣的可以了解一下
    2023-09-09
  • 詳解前端到底可以用nginx做什么

    詳解前端到底可以用nginx做什么

    Nginx因?yàn)樗姆€(wěn)定性、豐富的模塊庫(kù)、靈活的配置和低系統(tǒng)資源的消耗而聞名,下面這篇文章主要給大家介紹了關(guān)于前端到底可以用nginx做什么的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • nginx實(shí)現(xiàn)單主機(jī)多域名映射的項(xiàng)目實(shí)踐

    nginx實(shí)現(xiàn)單主機(jī)多域名映射的項(xiàng)目實(shí)踐

    本文主要介紹了nginx實(shí)現(xiàn)單主機(jī)多域名映射的項(xiàng)目實(shí)踐,配置不同的子域名映射到不同的內(nèi)部服務(wù)端口,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02
  • Nginx反向代理解決IPv6報(bào)錯(cuò)與跨網(wǎng)段訪問的詳細(xì)步驟

    Nginx反向代理解決IPv6報(bào)錯(cuò)與跨網(wǎng)段訪問的詳細(xì)步驟

    本文檔記錄了如何通過 Nginx 將公網(wǎng)域名請(qǐng)求代理到公司內(nèi)部網(wǎng)絡(luò)服務(wù)的完整過程,重點(diǎn)解決了 IPv6 解析導(dǎo)致的連接超時(shí) 問題,并詳細(xì)闡述了 端口映射 與 DNS 解析 的核心原理,需要的朋友可以參考下
    2026-03-03
  • Nginx 處理超長(zhǎng) Cookie 導(dǎo)致的 400 錯(cuò)誤

    Nginx 處理超長(zhǎng) Cookie 導(dǎo)致的 400 錯(cuò)誤

    本文主要介紹了Nginx 處理超長(zhǎng) Cookie 導(dǎo)致的 400 錯(cuò)誤,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-04-04
  • Nginx?Proxy?Manager的具體實(shí)現(xiàn)

    Nginx?Proxy?Manager的具體實(shí)現(xiàn)

    Nginx?Proxy?Manager?就是一個(gè)?Nginx?的代理管理器,本文主要介紹了Nginx?Proxy?Manager的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • Nginx location匹配模式與規(guī)則詳解

    Nginx location匹配模式與規(guī)則詳解

    這篇文章主要介紹了Nginx location匹配模式與規(guī)則,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04

最新評(píng)論

台南市| 平遥县| 高清| 航空| 邵阳市| 密云县| 会泽县| 鱼台县| 汪清县| 青阳县| 渑池县| 莱阳市| 安远县| 永康市| 房山区| 班玛县| 博湖县| 延川县| 高阳县| 仁怀市| 东山县| 金昌市| 柳州市| 阿城市| 应城市| 舒城县| 鸡东县| 三穗县| 兴国县| 弥勒县| 临海市| 汉中市| 潞城市| 剑阁县| 铁力市| 平舆县| 留坝县| 南宫市| 湖州市| 资阳市| 定州市|