顧躍舉
(武警遼寧省總隊,遼寧沈陽110034)
Linux系統(tǒng)下web服務雙機熱備系統(tǒng)設計與實現(xiàn)
顧躍舉
(武警遼寧省總隊,遼寧沈陽110034)
充分利用linux系統(tǒng)所獨有的功能強大的網(wǎng)絡命令工具,編寫基于tomcat+db2的網(wǎng)站更新文件和數(shù)據(jù)庫文件自動導出與導入腳本程序,配合系統(tǒng)定時器模擬心跳,實現(xiàn)基礎的雙機熱備功能。防止因硬件故障造成網(wǎng)站系統(tǒng)永久性的癱瘓,解決小企業(yè)無力購買價格昂貴的雙機熱備軟件的難題。
linux;雙機熱備;腳本程序
雙機熱備一般指兩臺高可用服務器的熱備份,簡稱雙機熱備,雙機高可用按工作中的切換方式分為:主-備方式(Active-Standby方式)和雙主機方式(Active-Active方式),主-備方式即指的是一臺服務器處于某種業(yè)務的激活狀態(tài)(即Active狀態(tài)),另一臺服務器處于該業(yè)務的備用狀態(tài)(即Standby狀態(tài))。而雙主機方式即指兩種不同業(yè)務分別在兩臺服務器上互為主備狀態(tài)(即Active-Standby和Standby-Active狀態(tài))。微軟將此功能加入到了windows2000server之后所有的服務器版本之中,命名為網(wǎng)絡負載均衡群集服務(nlb)。群集從切換方式來看為雙主機模式。即兩臺主機同時均可以接受訪問,根據(jù)訪問強度自動分配負載,且互為備份。其最大支持8個負載均衡節(jié)點。有效解決了高可用系統(tǒng)熱備需求。但也有其局限性,即服務器所連接的交換機必須配置使能組播功能,即使多個mac地址(也就是多塊網(wǎng)卡)共享一個ip地址映射,而一些低端交換機卻無法提供此服務,這就對軟件應用造成了瓶頸。而linux系統(tǒng)據(jù)了解目前尚未出現(xiàn)系統(tǒng)自帶的簡單易用的雙機熱備軟件,仍需第三方軟件來支持,如較為知名的rose軟件,不僅配置較為復雜,且系統(tǒng)硬件升級仍須交付軟件重新授權使用費用,這是一般小公司所不希望開銷的費用。本文以linux系統(tǒng)所自帶的網(wǎng)絡與系統(tǒng)命令工具為基礎,編寫了簡單易用的雙機熱備腳本程序,以解決上述難題。
我單位門戶網(wǎng)站由java語言開發(fā),現(xiàn)部署在tomcat應用服務環(huán)境下,后臺數(shù)據(jù)庫部署在db2數(shù)據(jù)庫管理系統(tǒng)中。由于此門戶網(wǎng)站既提供web服務,又提供本單位的oa自動化辦公服務,其重要性、安全性與穩(wěn)定性要求非常高。為防止因停電、服務器硬盤老化壞損或其他無法預見因素帶來無法恢復的災難性的影響,本文嘗試以兩臺服務器為基礎,通過編寫雙機熱備腳本代碼程序,實現(xiàn)雙機熱備功能,工作方式為主-備方式。
由于門戶網(wǎng)站服務器主要提供web與數(shù)據(jù)庫服務,其他服務暫不予考慮。所以只要實現(xiàn)雙機上的web文件與數(shù)據(jù)庫自動同步與高可用即可。以此為目的,設計基本思路為在主服務器上編寫數(shù)據(jù)庫導出腳本程序、網(wǎng)站新增文件備份腳本程序。依托l(wèi)inux系統(tǒng)的計劃任務crontab工具,實現(xiàn)每日增量文件自動備份至ftp服務主目錄下的某特定文件夾,并設定網(wǎng)絡用戶的完全訪問權限,以供備份服務器訪問;在從服務器上編寫數(shù)據(jù)庫導入腳本程序、網(wǎng)站新增文件拷貝腳本程序。以計劃任務工具來模擬心跳,具體自動備份更新的頻率可以設為每周、每日或每時。從服務器以主服務器所提供的網(wǎng)絡訪問用戶登錄ftp目錄,通過與本地文件的創(chuàng)建時間比對,增量拷貝所需更新文件,導入db2數(shù)據(jù)庫文件,重新啟動tomcat與db2應用服務程序,完成數(shù)據(jù)的更新過程。
(一)主服務器程序編寫
首先在主服務器上創(chuàng)建遠程ftp訪問用戶,設定遠程訪問主目錄,創(chuàng)建系統(tǒng)備份文件夾,而后編寫web文件與數(shù)據(jù)庫文件自動備份腳本程序代碼,配置計劃任務,完成系統(tǒng)的數(shù)據(jù)備份工作。具體實現(xiàn)過程如下:
[root@localhost]service vsftpd start#開啟linux的ftp服務
[root@localhost]useradd–d/home/backupuser–m backupuser#創(chuàng)建遠程訪問用戶并配置用戶登錄目錄
[root@localhost]passwdbackupuser#設置用戶登錄密碼
[root@localhost]cd/home/backupuser
[root@localhost]mkdir backup#創(chuàng)建系統(tǒng)備份文件夾
[root@localhost]cd backup
[root@localhost]mkdirdatabak#創(chuàng)建數(shù)據(jù)庫備份文件夾
[root@localhost]cd..
[root@localhost]mkdirnewsbak#創(chuàng)建新聞備份文件夾
[root@localhost]cd/usr/local
[root@localhost]vibackup.sh#編寫備份腳本程序#!/bin/sh
Date=’date+%y%m%d’#設定以日期命名的文件名變量
find/usr/local/tomcat/webapps/ROOT/news-name" ${Date}*"-exec cp{}/home/backupuser/backup/newsbak #查找文件名并拷貝至備份文件夾中
su-db2inst1#切換至數(shù)據(jù)庫管理員用戶
cd/home/backupuser/backup/databak#進入數(shù)據(jù)庫備份文件夾
db2move OA export#導出數(shù)據(jù)庫數(shù)據(jù)到此文件夾
[root@localhost]crontab-e 012***/usr/local/backup.sh–r#每日12點整執(zhí)行備份程序至此,主服務器備份過程配置完成。
(二)從服務器程序編寫
基本過程與主服務器配置雷同,首先要建立文件拷貝的目錄,通過wget網(wǎng)絡命令比對文件創(chuàng)建時間完成文件增量更新,導入數(shù)據(jù)庫,最后重啟系統(tǒng)服務完成系統(tǒng)更新操作。具體實現(xiàn)過程如下:
[root@localhost]vi/usr/local/restore.sh#編寫系統(tǒng)更新腳本程序
cd/usr/local/tomcat/webapps/ROOT/news
wget–nc–nH–r–np–c ftp://backupuser:backupuser@192.168.1.2/backup/*#拷貝比本目錄下更新的文件
su db2inst1
cddatabak
db2move OA import#完成數(shù)據(jù)庫導入
db2stop force
db2start#數(shù)據(jù)庫重啟
exit
./usr/local/tomcat/bin/shutdown.sh
./usr/local/tomcat/bin/startup.sh#重啟tomcat網(wǎng)頁服務[root@localhost]crontab-e
1012***/usr/local/restore.sh–r#每日12點10分執(zhí)行更新程序
至此,從服務器更新過程配置完成。
主服務器每日12點開始自動將增量數(shù)據(jù)備份至備份文件夾,從服務器每日12點10分開始自動將增量數(shù)據(jù)更新至從服務器。實現(xiàn)雙機熱備的主從工作模式。那么如何能夠讓系統(tǒng)自動檢測故障出現(xiàn)時間,讓從服務器及時替換主服務器進行工作呢?同樣,我們可以利用計劃任務模擬心跳,進行對主服務器的ping操作。如果不能連通,則修改本機ip地址為主服務器ip地址,重啟網(wǎng)絡服務,實現(xiàn)無人值守的自動災難恢復。具體實現(xiàn)過程如下:
[root@localhost]vi/usr/local/ping.sh#創(chuàng)建與主服務器的連通性測試腳本程序if[“$?”–ne“0”];#如果輸出結果不等于0則視為不通
then ifconfig eth0 192.168.1.1#修改本機網(wǎng)卡ip地址為主服務器地址
service netword restart#重起網(wǎng)絡服務
fi
同樣,再利用計劃任務設置每10分鐘進行一次連通性測試,以保證web服務的不間斷運行。
[root@localhost]crontab-e 10****/usr/local/ping. sh–r#每10分中執(zhí)行連通性測試程序或者,也可以將系統(tǒng)的更新程序添加到連通性測試程序后面,以保證替換的系統(tǒng)能夠保持最新的系統(tǒng)數(shù)據(jù)。
如果單位資金條件允許,也可以購買網(wǎng)絡存儲設備,就可以將網(wǎng)站與數(shù)據(jù)庫資源單獨存儲在網(wǎng)絡存儲的磁盤空間中,這時如果當主服務器出現(xiàn)中斷,可以隨時將網(wǎng)站與數(shù)據(jù)庫資源原原本本的移植到從服務器中,將數(shù)據(jù)損失風險歸零,且能夠保障網(wǎng)絡服務的不間斷運行。
[1]劉曉潔,黃永佳.基于Linux的雙機熱備系統(tǒng)的實現(xiàn)技術[J].計算機應用研究,2007,24(4).
[2]張立航,陳大勇.基于Linux的雙機熱備系統(tǒng)設計[J].計算機安全,2011,(10).
[3]張永立,胡杰,張根寶.Linux集群心跳檢測方法的研究與實現(xiàn)[J].化工自動化及儀表,2010,37(6).
編輯∕高偉
顧躍舉(1982-),男,遼寧遼陽人,現(xiàn)為武警遼寧省總隊助理工程師,主要研究方向:為計算機系統(tǒng)應用與維護。