国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

通過tomcat manager和Zookeeper實(shí)現(xiàn)服務(wù)的高可用

2018-11-19 07:30李榮輝1楊志龍
通信電源技術(shù) 2018年9期
關(guān)鍵詞:集群啟動(dòng)節(jié)點(diǎn)

李榮輝1,楊志龍

(1.南瑞集團(tuán)有限公司,江蘇 南京211000;2.南京基石數(shù)據(jù)有限責(zé)任公司,江蘇 南京210093)

1 概 述

任務(wù)平臺(tái)通過admin來管理executor,任務(wù)經(jīng)客戶端觸發(fā),由admin進(jìn)行分發(fā),executor負(fù)責(zé)執(zhí)行。admin和executor通過jetty進(jìn)行通信,executor根據(jù)配置的admin信息,每隔30 s向admin中注冊(cè)一次,如果admin在3個(gè)周期中沒有收到executor的消息,則認(rèn)為executor不可用。由于任務(wù)需要經(jīng)過的admin分發(fā),可能出現(xiàn)單點(diǎn)故障。另外,executor分布在不同的機(jī)器上,如果executor出現(xiàn)故障,需要手動(dòng)去恢復(fù)。功能整體架構(gòu)如圖1所示。

圖1 功能整體架構(gòu)圖

2 可行性分析

Tomcat的manager可以管理項(xiàng)目,通過不同的URL來對(duì)項(xiàng)目進(jìn)行啟動(dòng)、停止、重啟等操作。Zookeeper,下面簡稱為zk,可以作為文件系統(tǒng)使用,其提供包括持久化目錄節(jié)點(diǎn)、持久化順序標(biāo)號(hào)目錄節(jié)點(diǎn)、臨時(shí)目錄節(jié)點(diǎn)以及臨時(shí)順序目錄節(jié)點(diǎn)等4種節(jié)點(diǎn)類型。在應(yīng)用啟動(dòng)時(shí),往zk中注冊(cè)一個(gè)臨時(shí)節(jié)點(diǎn),當(dāng)某個(gè)節(jié)點(diǎn)出現(xiàn)故障時(shí),與zk連接的session會(huì)中斷,通過監(jiān)控節(jié)點(diǎn)的變化可以獲取故障節(jié)點(diǎn)的信息,解析出節(jié)點(diǎn)的catalina地址以及webApp等唯一性信息,之后可以根據(jù)tomcat manager進(jìn)行相應(yīng)的恢復(fù)操作。

2.1 技術(shù)架構(gòu)與實(shí)現(xiàn)

2.1.1 運(yùn)行環(huán)境

Tomcat版本為tomcat-7.0.77,zk的版本為Zookeeper-3.4.12,JDK版本為1.8。

2.1.2 架構(gòu)設(shè)計(jì)

架構(gòu)設(shè)計(jì)如圖2所示。

圖2 技術(shù)架構(gòu)圖

新增了冗余的admin節(jié)點(diǎn),另外使用zk進(jìn)行協(xié)調(diào)管理,在主admin發(fā)生故障時(shí),可以迅速切換到從admin節(jié)點(diǎn)中,避免單點(diǎn)故障。

2.1.3 配置說明

manager是tomcat自帶的用于項(xiàng)目部署和管理的應(yīng)用,需要在tomcat-user.xml中增加 manager-gui和 manager-script配置,角色說明如下[2]:

manager-gui:訪問html接口。

manager-script:提供了純文本訪問形式,可以訪問服務(wù)器狀態(tài)頁面。配置此項(xiàng)主要是可以在代碼中封裝相應(yīng)的操作接口,可以直接對(duì)應(yīng)用進(jìn)行操作。啟動(dòng)、停止和重啟的文本訪問格式如下所示:

啟動(dòng):catalina/manager/text/start?path=/;

停止:catalina/manager/text/stop?path=/;

重啟:catalina/manager/text/reload?path=/;

其中,catalina為 http://ip:port,port只tomcat的端口。

程序在啟動(dòng)時(shí),對(duì)應(yīng)的每一個(gè)節(jié)點(diǎn)都需要向zk中注冊(cè)一個(gè)臨時(shí)節(jié)點(diǎn),創(chuàng)建臨時(shí)節(jié)點(diǎn)時(shí)向節(jié)點(diǎn)中寫入如下信息:

ip:對(duì)應(yīng)節(jié)點(diǎn)的ip信息;

catalina:對(duì)應(yīng)節(jié)點(diǎn)的catalina信息;

webApp:項(xiàng)目的webApp信息。

用catalina+webApp作為唯一標(biāo)識(shí)identity。

2.1.4 實(shí)現(xiàn)以及應(yīng)用的啟動(dòng)和恢復(fù)過程

(1)在zk中創(chuàng)建永久節(jié)點(diǎn)/ha,本項(xiàng)目使用curator中間件,通過創(chuàng)建NodeCache來監(jiān)聽/ha子節(jié)點(diǎn)的情況。每一個(gè)應(yīng)用在啟動(dòng)時(shí),則在/ha節(jié)點(diǎn)中創(chuàng)建一個(gè)臨時(shí)子節(jié)點(diǎn),寫入ip、catalina和webApp信息。在所有節(jié)點(diǎn)都成功啟動(dòng)之后,從zk的/ha節(jié)點(diǎn)中就可以獲取到集群中所有節(jié)點(diǎn)的信息。

(2)創(chuàng)建一個(gè)/board永久節(jié)點(diǎn)來保存節(jié)點(diǎn)的恢復(fù)信息,即每次節(jié)點(diǎn)需要恢復(fù)時(shí),先往/board節(jié)點(diǎn)中寫入節(jié)點(diǎn)的ip、catalina和webApp信息,這條信息只有在節(jié)點(diǎn)正常啟動(dòng)時(shí)自身可以刪除。設(shè)置這個(gè)廣播信息是為了節(jié)點(diǎn)不被重復(fù)恢復(fù)。

2.1.4.1 啟動(dòng)過程

(1)admin在啟動(dòng)時(shí),發(fā)現(xiàn)沒有同名的identity,說明集群中沒有此節(jié)點(diǎn),先到/board節(jié)點(diǎn)中查看是否包含該identity信息。如果有,則刪除相應(yīng)的identity信息;沒有則直接創(chuàng)建/ha的臨時(shí)子節(jié)點(diǎn)/ha/a-ip,a是admin節(jié)點(diǎn)的標(biāo)識(shí)。

(2)admin在啟動(dòng)時(shí),如果發(fā)現(xiàn)有同名的identity信息,說明該節(jié)點(diǎn)已經(jīng)存在,屬于重復(fù)啟動(dòng),這時(shí)可以直接退出。

(3)executor在啟動(dòng)時(shí),直接創(chuàng)建/ha/ip臨時(shí)有序節(jié)點(diǎn)。同時(shí)查找/board看是否存在自身的唯一標(biāo)識(shí),如果有則刪除。

2.1.4.2 恢復(fù)過程

(1)如果是executor宕機(jī),集群中的所有節(jié)點(diǎn)通過競爭分布式鎖來進(jìn)行節(jié)點(diǎn)的恢復(fù)操作。節(jié)點(diǎn)獲取鎖后,先遍歷/ha節(jié)點(diǎn)中所有的子節(jié)點(diǎn),比較節(jié)點(diǎn)的identity與需要被恢復(fù)節(jié)點(diǎn)的identity時(shí)候相同。如果有相同信息,說明該節(jié)點(diǎn)已經(jīng)被恢復(fù),不再進(jìn)行恢復(fù)操作;如果沒有,說明該節(jié)點(diǎn)還未被恢復(fù),則查看/board中是否包含該節(jié)點(diǎn)信息。如果包含,說明已經(jīng)有其他節(jié)點(diǎn)在進(jìn)行恢復(fù)操作,不再進(jìn)行恢復(fù)操作;不包含,通過發(fā)送tomcat manager的管理命令來對(duì)節(jié)點(diǎn)進(jìn)行恢復(fù)操作。

(2)如果是admin宕機(jī),先遍歷/ha中所有的子節(jié)點(diǎn),看是否有冗余的admin節(jié)點(diǎn),如果有,則選取任一一個(gè),executor將注冊(cè)信息注冊(cè)到新的admin中,從而實(shí)現(xiàn)admin的切換。如果沒有冗余的admin。則集群中其他所有節(jié)點(diǎn)需要競爭分布式鎖,先將admin的identity寫入/board中,在通過發(fā)送tomcat manager的管理命令來對(duì)節(jié)點(diǎn)進(jìn)行恢復(fù)操作。

3 結(jié)束語

雖然這種機(jī)制需要依賴tomcat進(jìn)程的存活以及zk的可用性。但是通過tomcat manager以及Zookeeper實(shí)現(xiàn)應(yīng)用的自動(dòng)喚醒機(jī)制以及服務(wù)的高可用性,同時(shí),通過tomcat manager的純文本訪問形式,可以相應(yīng)減少人工維護(hù),提高系統(tǒng)的可用時(shí)間。

猜你喜歡
集群啟動(dòng)節(jié)點(diǎn)
CM節(jié)點(diǎn)控制在船舶上的應(yīng)用
基于AutoCAD的門窗節(jié)點(diǎn)圖快速構(gòu)建
概念格的一種并行構(gòu)造算法
海上小型無人機(jī)集群的反制裝備需求與應(yīng)對(duì)之策研究
《悅讀·家》暨“悅讀·家@萬家”活動(dòng)啟動(dòng)
一種無人機(jī)集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計(jì)
Python與Spark集群在收費(fèi)數(shù)據(jù)分析中的應(yīng)用
勤快又呆萌的集群機(jī)器人
電啟動(dòng)機(jī)的正確使用
抓住人才培養(yǎng)的關(guān)鍵節(jié)點(diǎn)