于 洋
(北京郵電大學(xué) 通信與信號(hào)處理專業(yè),北京 海淀 100876)
web遠(yuǎn)程升級(jí)Solaris及進(jìn)度跟蹤設(shè)計(jì)
于洋
(北京郵電大學(xué) 通信與信號(hào)處理專業(yè),北京 海淀 100876)
現(xiàn)代企業(yè)或單位服務(wù)器主機(jī)眾多,如果逐個(gè)對(duì)各個(gè)主機(jī)版本升級(jí)并進(jìn)行系統(tǒng)環(huán)境的配置將產(chǎn)生龐大的工作量,一種可以實(shí)現(xiàn)對(duì)主機(jī)的集成管理[9]的設(shè)計(jì)成為必須。當(dāng)前Solaris操作系統(tǒng)應(yīng)用于許多企業(yè)服務(wù)器,相對(duì)于windows服務(wù)器,其具有穩(wěn)定性高,網(wǎng)絡(luò)完善的優(yōu)點(diǎn),本文是針對(duì)Solaris操作系統(tǒng)的主機(jī)提供的一種版本升級(jí)解決方案,主要闡述通過(guò)web頁(yè)面遠(yuǎn)程控制Solaris主機(jī)對(duì)其進(jìn)行升級(jí)和系統(tǒng)環(huán)境的配置過(guò)程,并且通過(guò)web頁(yè)面實(shí)時(shí)跟蹤進(jìn)度的實(shí)現(xiàn)原理。
solaris;進(jìn)度跟蹤;集成管理;升級(jí)
本文著錄格式:于洋. web遠(yuǎn)程升級(jí)Solaris及進(jìn)度跟蹤設(shè)計(jì)[J]. 軟件,2016,37(9):115-117
Solaris操作系統(tǒng)屬于Unix的一個(gè)分支,由之前SUN公司研發(fā),SUN被收購(gòu)之前的操作系統(tǒng)代碼仍為開(kāi)源。當(dāng)前Solaris操作系統(tǒng)用于許多Oracle服務(wù)器。由于Solaris操作系統(tǒng)集成了SSH(Secure Shell)服務(wù),SSH可以在本地主機(jī)和遠(yuǎn)程主機(jī)之間,建立命令和數(shù)據(jù)的傳輸通道,服務(wù)器端通過(guò)web服務(wù)器來(lái)SSH公鑰登錄[7-8]到需要升級(jí)的Solaris主機(jī),并且傳遞數(shù)據(jù)和命令給Solaris主機(jī)。而Solaris主機(jī)又可以通過(guò)http請(qǐng)求的方式將主機(jī)的重要進(jìn)度信息返回給web服務(wù)器。
器中,MySQL數(shù)據(jù)庫(kù)存放主機(jī)的信息,包括主機(jī)的硬件類型、域、當(dāng)前最高版本對(duì)應(yīng)的BE(Boot Enviroment啟動(dòng)環(huán)境)名稱等;當(dāng)有新的Solaris主機(jī)注冊(cè)到系統(tǒng)中后,web服務(wù)器通過(guò)SSH公鑰登錄的方式首先為該主機(jī)安裝操作系統(tǒng)升級(jí)和系統(tǒng)環(huán)境配置所需要的Shell腳本。
圖1 系統(tǒng)整體框架
圖1 中總體設(shè)計(jì)主要分為兩個(gè)部分,web服務(wù)
在Solaris主機(jī)群中,設(shè)計(jì)需要的腳本主要包括創(chuàng)建狀態(tài)文件腳本stat-create、更改主機(jī)狀態(tài)的腳本stat-changer、執(zhí)行腳本execution、環(huán)境配置腳本env-conf和狀態(tài)監(jiān)控腳本stat-watch。實(shí)現(xiàn)對(duì)Solaris系統(tǒng)狀態(tài)的監(jiān)控和采集。
2.1系統(tǒng)升級(jí)
由于Solaris的BE(Boot Environment啟動(dòng)環(huán)境)對(duì)應(yīng)著不同操作系統(tǒng)的版本,安裝的系統(tǒng)包版本不同,每次系統(tǒng)升級(jí)都會(huì)創(chuàng)建一個(gè)新的BE作為最新操作系統(tǒng)版本的啟動(dòng)環(huán)境。但是在Solaris文件系統(tǒng)/export目錄下的文件在各個(gè)BE中的內(nèi)容是相同的,不會(huì)因?yàn)閱?dòng)環(huán)境的不同而改變。在升級(jí)時(shí)最好能在當(dāng)前主機(jī)的最高版本進(jìn)行升級(jí),從而最大程度避免由于依賴而產(chǎn)生的升級(jí)錯(cuò)誤,而更換到主機(jī)最高版本BE需要重新啟動(dòng)主機(jī),為了實(shí)現(xiàn)整個(gè)過(guò)程的自動(dòng)化,可以使系統(tǒng)在重新啟動(dòng)后繼續(xù)完成系統(tǒng)升級(jí)等功能,則在/export目錄下創(chuàng)建隱藏目錄.stat,在.stat目錄下創(chuàng)建一個(gè)隱藏文件,該文件的文件名用于判斷當(dāng)前主機(jī)的狀態(tài),而隱藏文件的內(nèi)容記錄主機(jī)當(dāng)前的最高版本的BE名稱,設(shè)計(jì)stat-changer腳本的功能在于更改.stat目錄下的隱藏文件的名稱,具體名稱與主機(jī)狀態(tài)對(duì)應(yīng)為:.upgrade為主機(jī)為更新?tīng)顟B(tài)、.basic_config為環(huán)境配置狀態(tài)、.finish為升級(jí)和配置完成狀態(tài)、.fail為升級(jí)失敗狀態(tài)。
圖1中SSH遠(yuǎn)程安裝完成必要腳本后,運(yùn)行stat-create腳本添加注冊(cè)時(shí)該主機(jī)的最高版本的BE名稱作為參數(shù),在/export目錄下創(chuàng)建隱藏目錄.stat,在.stat目錄下創(chuàng)建.finish文件,在文件中寫入作為參數(shù)傳遞來(lái)的主機(jī)最高版本的BE名稱。設(shè)置系統(tǒng)啟動(dòng)后自動(dòng)運(yùn)行execution和stat-watch腳本。
當(dāng)用戶通過(guò)web網(wǎng)頁(yè)為主機(jī)進(jìn)行升級(jí)后,web服務(wù)器SSH公鑰登錄到主機(jī)并運(yùn)行stat-changer腳本,stat-changer通過(guò)讀取.stat目錄下文件的內(nèi)容獲得主機(jī)最高版本的BE名稱,并且判斷最高版本的BE是否為當(dāng)前運(yùn)行的BE,如果不是則激活主機(jī)最高版本的BE,如果是最高版本則不做任何操作,修改.stat目錄下的文件名為.upgrade,需要升級(jí)主機(jī)操作系統(tǒng)重新啟動(dòng)后,運(yùn)行execution腳本,該腳本程序流程如圖2所示。
圖2中如果檢測(cè)文件名為.finish則不對(duì)主機(jī)做任何操作,如果是.upgrade則對(duì)主機(jī)執(zhí)行升級(jí)命令,升級(jí)完成后返回0則說(shuō)明升級(jí)成功,修改文件名為.basic_config,并且修改文件內(nèi)容中的主機(jī)最高版本BE名稱為當(dāng)前升級(jí)到的BE的名稱,重啟主機(jī);如果升級(jí)失敗,則把文件名稱改為.fail重啟主機(jī)。重啟后主機(jī)會(huì)在最新版本的BE上啟動(dòng),檢測(cè)文件名為.basic_config則運(yùn)行env-conf腳本對(duì)主機(jī)進(jìn)行系統(tǒng)環(huán)境的配置,具體配置包括log session、創(chuàng)建用戶等基本內(nèi)容,本文不對(duì)該腳本內(nèi)容進(jìn)行詳細(xì)介紹。如果文件名為.fail則向web服務(wù)器報(bào)告升級(jí)失敗狀態(tài),此時(shí)主機(jī)仍可以正常運(yùn)行,只是在升級(jí)之前的版本上運(yùn)行。
圖2 execution
2.2狀態(tài)跟蹤
stat-watch腳本運(yùn)行進(jìn)程開(kāi)啟FIFO管道,實(shí)現(xiàn)與stat-changer、execution和env-conf腳本運(yùn)行進(jìn)程間的通信,由stat-watch進(jìn)程對(duì)主機(jī)的運(yùn)行狀態(tài)了進(jìn)度進(jìn)行監(jiān)控,對(duì)于不同腳本運(yùn)行的進(jìn)程,通過(guò)不同的協(xié)議與stat-watch進(jìn)程進(jìn)行通信,具體協(xié)議設(shè)置如下表,以stat-changer為例。
圖3 進(jìn)度跟蹤框架
stat-changer、execution和env-conf腳本進(jìn)程在腳本開(kāi)始運(yùn)行或結(jié)束運(yùn)行時(shí)向有名管道中寫入表1中表示開(kāi)始或結(jié)束的協(xié)議,退出協(xié)議的M值為退出狀態(tài)碼。在重要的進(jìn)度狀態(tài)向管道中寫入表1中表示關(guān)鍵描述的協(xié)議,協(xié)議中的msg即為關(guān)鍵描述部分。當(dāng)操作系統(tǒng)升級(jí)成功后,向管道寫入帶有最新的系統(tǒng)版本號(hào)的消息協(xié)議。
表1 stat-changer進(jìn)度跟蹤消息協(xié)議
stat-watch腳本進(jìn)程在發(fā)現(xiàn)有名管道中有數(shù)據(jù)時(shí),讀取管道中的數(shù)據(jù),根據(jù)消息協(xié)議,解析消息的內(nèi)容來(lái)源,通過(guò)對(duì)協(xié)議的解析,了解消息內(nèi)容作用,在原有消息前加入“主機(jī)名”(注:同域中主機(jī)名一般不會(huì)出現(xiàn)重復(fù),可以作為唯一識(shí)別)。對(duì)于需要web服務(wù)器更新數(shù)據(jù)庫(kù)的消息如帶有最新版本號(hào)的消息,在原有消息前加入“主機(jī)名|UPDATE|”協(xié)議頭。stat-watch腳本通過(guò)http協(xié)議POST請(qǐng)求web服務(wù)器用來(lái)接收消息的API,把消息內(nèi)容作為請(qǐng)求的內(nèi)容返回給web服務(wù)器。
web服務(wù)器接收到消息內(nèi)容,web服務(wù)器的消息處理API對(duì)消息內(nèi)容進(jìn)行解析,同樣采用表1中的消息協(xié)議,對(duì)于不需要更新數(shù)據(jù)庫(kù)信息的消息,根據(jù)主機(jī)名在web服務(wù)器本地文件系統(tǒng)創(chuàng)建日志文件,根據(jù)SC、EXE、ENV來(lái)判斷出當(dāng)前執(zhí)行的腳本和正在進(jìn)行的操作。把返回的重要進(jìn)度分塊存入日志文件。用于監(jiān)控的web頁(yè)面實(shí)時(shí)刷新,從日志文件中讀取處于升級(jí)狀態(tài)的主機(jī)的最新進(jìn)度。由于進(jìn)度信息存在了本地文件系統(tǒng),所有即使退出了用于監(jiān)控web頁(yè)面,之后再次打開(kāi)數(shù)據(jù)依然保留。對(duì)于帶有UPDATE|的消息,web服務(wù)器根據(jù)其主機(jī)名更新主機(jī)在數(shù)據(jù)庫(kù)中的信息。如果消息中顯示的退出碼不是正常退出,則說(shuō)明主機(jī)在升級(jí)過(guò)程中出現(xiàn)了異常,判斷是升級(jí)異常還是環(huán)境配置異常,如果是系統(tǒng)環(huán)境配置異常,用戶根據(jù)狀態(tài)信息可以查看是哪些環(huán)境在配置過(guò)程中出現(xiàn)了錯(cuò)誤。如果是升級(jí)異常,則表示升級(jí)沒(méi)有成功,用戶同樣可以查看具體出現(xiàn)異常的位置了,用戶可以對(duì)出錯(cuò)主機(jī)的操作系統(tǒng)進(jìn)行檢測(cè)后再進(jìn)行升級(jí),或選擇手動(dòng)升級(jí)。
本文主要介紹了針對(duì)Solaris操作系統(tǒng)的主機(jī)通過(guò)web頁(yè)面對(duì)其進(jìn)行升級(jí)和系統(tǒng)環(huán)境的配置過(guò)程,并且通過(guò)web頁(yè)面實(shí)時(shí)跟蹤進(jìn)度的實(shí)現(xiàn)原理。本文涉及了Solaris操作系統(tǒng)、Shell腳本、SSH公鑰登錄、進(jìn)程間通信、http協(xié)議、文件I/O、數(shù)據(jù)庫(kù)應(yīng)用等多種技術(shù),該設(shè)計(jì)理論得到了實(shí)踐的驗(yàn)證。該實(shí)現(xiàn)原理不僅僅可以用在系統(tǒng)的升級(jí),同時(shí)還可以用于系統(tǒng)的安裝和測(cè)試等方面,根據(jù)需要可以將更多的需求按照該原理集成到管理系統(tǒng)中,可拓展性強(qiáng)。由于Solaris操作系統(tǒng)是Unix-like的操作系統(tǒng),而本文介紹的設(shè)計(jì)理論幾乎沒(méi)涉及Solaris特殊功能,所以該理論設(shè)計(jì)同樣可以用于Linux或Unix等操作系統(tǒng),實(shí)現(xiàn)跨平臺(tái)運(yùn)行。
[1] 喻剛, 王國(guó)生, 張磊“基于Solaris的綜合信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)”10.3969/j.issn.1006-6675-B.2012.01.029.
[2] 曹江華, 李巖麗“Solaris10系統(tǒng)管理”, 電子工業(yè)出版社978-7-121-09895-6, 2010.
[3] 李向群“solaris操作系統(tǒng)原理”, 機(jī)械出版社, 978-7-111-22641-3, 2008.
[4] SHEN yang “Webmin管理Sun Solaris 10 x86 Unix系統(tǒng)”10.3969/j.issn.1007-5348.2008.12.003.
[5] Janice Winsor著“SOLARIS系統(tǒng)管理員指南”機(jī)械工業(yè)出版社.
[6] Arnold Robbins/Nelson H. F. Beebe “SHELL腳本學(xué)習(xí)指南”機(jī)械工業(yè)出版社.
[7] 黃洋, 宋俊德, 宋美娜, 等. 基于本體與SSH架構(gòu)的異構(gòu)數(shù)據(jù)集成框架的研究[J]. 軟件, 2014, 35(11): 36-41.
[8] 王雪梅, 郭麗娜. 基于SSH的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件, 2015, 36(12): 132-136.
[9] 李可, 李昕. 基于Hadoop生態(tài)集群管理系統(tǒng)Ambari的研究與分析[J]. 軟件, 2016, 37(02): 93-97.
Remote Upgrade of Solaris and Progress Tracking Design
YU Yang (College of Communication and Signal Processing, Beijing University of Posts and Telecommunications, Haidian District, Beijing)
Modern enterprises has many unit server hosts , upgrading and configuring the operating system one by one will produce huge workload, one design which can achieve the integrated management of the host[9]becomes necessary. The current Solaris operating system which used in many enterprise servers, compared to windows server, has the advantages of high stability, perfect network, this article host provides a version upgrade solution for the Solaris operating system, mainly through web pages remote control Solaris host to upgrade its system environment and the configuration process, and through the web page to track the progress of real-time principle.
Solaris; Progress tracking; Integrated management; Upgrade
TP 311
A
10.3969/j.issn.1003-6970.2016.09.027
于洋,北京郵電大學(xué)研究生(1991-)
通訊聯(lián)系人: 于洋(1991-)