張洪
摘要:在現(xiàn)代社會,企業(yè)為了提高自身的競爭力,紛紛構(gòu)建了自己的計算機網(wǎng)絡和數(shù)據(jù)中心。但是高昂投入和后期管理成本,以及很低服務器利用率,給企業(yè)帶來了不小的負擔和資源浪費。云計算的興起,有利于企業(yè)提升核心競爭力,有利于提高效率、降低成本和技術創(chuàng)新。該文對利用JMX技術,JBOSS和Hyper-V來構(gòu)建企業(yè)私有云平臺進行了一些探索和研究。
關鍵詞: 私有云;JMX;JBOSS;Hyper-V
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2016)04-0107-02
隨著現(xiàn)代社會經(jīng)濟的高速發(fā)展,企業(yè)面臨的生存環(huán)境發(fā)生了翻天覆地的變化,顧客的需求不斷變化,生產(chǎn)技術不斷創(chuàng)新,產(chǎn)品生產(chǎn)周期不斷縮短,企業(yè)之間的競爭日益激烈,促使企業(yè)必須快速提升企業(yè)管理水平。在這種背景下很多企業(yè)構(gòu)建了自己的計算機網(wǎng)絡和數(shù)據(jù)中心,用于企業(yè)的管理,提高管理效率。但是高昂投入和后期管理成本,以及很低服務器利用率,給企業(yè)帶來了不小的負擔和資源浪費。云計算的興起,使企業(yè)能夠降低了IT運作成本,企業(yè)無需為煩瑣的細節(jié)而煩惱,能夠更加專注于自己的業(yè)務,得以將有限的資源和人力用于拓展業(yè)務、有利于企業(yè)提升核心競爭力,有利于提高效率、降低成本和技術創(chuàng)新。本文對如何利用JMX技術,JBOSS 7和Hyper-V來構(gòu)建企業(yè)私有云平臺進行了一些探索和研究。
1 JMX、JBOSS和Hyper-V
JMX(Java Management Extensions,即Java管理擴展)是一個為應用程序、設備、系統(tǒng)等植入管理功能的框架。JMX在Java編程語言中定義了應用程序以及網(wǎng)絡管理和監(jiān)控的體系結(jié)構(gòu)、設計模式、應用程序接口以及服務。通常使用JMX來監(jiān)控系統(tǒng)的運行狀態(tài)或管理系統(tǒng)的某些方面。JMX優(yōu)點可以非常容易的使應用程序具有被管理。
JBoss 7是一個基于J2EE的開放源代碼的應用服務器。 JBoss代碼遵循LGPL許可,可以在任何商業(yè)應用中免費使用,而不用支付費用。JBoss 7構(gòu)建于先前版本的良好基礎之上,并提供更出色的性能、更低的內(nèi)存占用率、分布式管理和Java EE6 Web Profile認證。
Hyper-V是微軟的一款虛擬化產(chǎn)品,是微軟第一個采用類似Vmware和Citrix開源Xen一樣的基于hypervisor的技術。Hyper-V是微軟提出的一種系統(tǒng)管理程序虛擬化技術,能夠?qū)崿F(xiàn)桌面虛擬化。Hyper-V設計的目的是為廣泛的用戶提供更為熟悉以及成本效益更高的虛擬化基礎設施軟件,這樣可以降低運作成本、提高硬件利用率、優(yōu)化基礎設施并提高服務器的可用性。通過虛擬化我們可以有效提高資源的利用率。
2 如何構(gòu)建企業(yè)私有云
在云計算中會根據(jù)用戶訪問量的增加而增加服務器數(shù)量,當用戶訪問量減少是,會釋放多余的服務器,這樣達到了提高用戶訪問速度,又節(jié)約了計算資源的目的。假設我們在Windows服務器上用Hyper-V創(chuàng)建了二個虛擬機testVM01和 testVM02,使用JBoss 7向用戶提供Internet信息服務。當用戶訪問量少的時候使用一臺虛擬機向用戶提供Internet信息服務,當用戶訪問量增加超過閥值時,啟動第二臺虛擬機對用戶訪問量進行分流,以提高用戶訪問速度。要實現(xiàn)這樣的目的,我們有二個問題要解決,一個就是怎樣確定用戶的訪問量;二就是根據(jù)訪用戶問量動態(tài)的對服務器的數(shù)量進行增加或減少。在實現(xiàn)過程中如何確定用戶訪問量有很多方法,流量監(jiān)控,網(wǎng)絡計數(shù)器和內(nèi)存使用率等,在本文中使用JMX技術來實現(xiàn)對內(nèi)存使用率進行監(jiān)控,并根據(jù)內(nèi)存使用情況來確定用戶訪問量。
3 如何實現(xiàn)企業(yè)私有云
要使用JMX技術來實現(xiàn)對內(nèi)存使用率進行監(jiān)控,我們首先要在JBOSS 7中對相應的配置文件進行修改,JBOSS 7和舊的版本有很大的不同,舊版本中用來啟動JBoss服務的run.sh不見了,取而代之的是standalone.bat(獨立運行模式)及domain.bat(域運行模式)。我們這里用的是standalone.bat(獨立運行模式)來啟動JBoss服務,因此要對standalone.xml配置文件進行修改,實現(xiàn)核心代碼如下:
通過修改配置文件,讓JBoss服務器允許訪問JMX服務,現(xiàn)在我們就可對JMX進行編程,以實現(xiàn)對堆內(nèi)存使用率進行動態(tài)的訪問,從而確定用戶訪問量。實現(xiàn)核心代碼如下:
String host = "127.0.0.1";
int port = 9999; // 默認的JMX服務訪問端口
String urlString =System.getProperty("jmx.service.url","service:jmx:remoting-jmx://" + host + ":" + port);
JMXServiceURL serviceURL = new JMXServiceURL(urlString);
JMXConnector jmxConnector = JMXConnectorFactory.connect(serviceURL, null);
repository = jmxConnector.getMBeanServerConnection();
ObjectName heapObjName = new ObjectName("java.lang:type=Memory");
MemoryUsage heapMemoryUsage = MemoryUsage.from((CompositeDataSupport)repository.getAttribute(heapObjName, "HeapMemoryUsage"));
long maxMemory = heapMemoryUsage.getMax();
long usedMemory = heapMemoryUsage.getUsed();
double heapMemUse =(double)usedMemory/ maxMemory;//堆使用率
通過上面的程序我們可以實時的返回內(nèi)存使用率,我們可以利用內(nèi)存使用率情況來動態(tài)實現(xiàn)對虛擬機進行啟動或關閉,以達到控制服務器數(shù)量的目的。Hyper-V給我們提供了相應的命令接口,能讓我們在程序中控制虛擬機的啟動和關閉。我們可把內(nèi)存監(jiān)控和虛擬機操作集成在一起,做成一個可動態(tài)伸縮的虛擬服務器調(diào)度程序,實現(xiàn)核心代碼如下:
while(true)
{
double heapMemUse=0;
Thread.sleep(5*60000);//每隔5min查看一次內(nèi)存情況
heapMemUse=JMXCon.getheapMemUse();if(heapMemUse>0.5){String cmd = "cmd /c Start-VM testVM02"; //啟動備用虛擬機服務器Runtime.getRuntime().exec(cmd); }else{String cmd = "cmd /c Stop-VM testVM02 -Force "; //關閉備用虛擬機服務器 Runtime.getRuntime().exec(cmd); }}
4 結(jié)束語
通過上面的代碼,我們利用JMX技術,JBOSS 7和Hyper-V已經(jīng)可以完整的搭建一個簡單的、可以根據(jù)用戶訪問量動態(tài)伸縮的Internet信息服務平臺。根據(jù)云計算的定義,它通常涉及通過互聯(lián)網(wǎng)來提供動態(tài)易擴展且經(jīng)常是虛擬化的資源。按需分配資源。而這個實例按照增長的需求,利用虛擬技術對資源進行合理動態(tài)的調(diào)度分配,符合云計算的定義,所以屬于一個云計算的應用。希望本文能給企業(yè)在創(chuàng)建自己的私有云平臺起到一點借鑒作用。
參考文獻:
[1] 徐強,王振江. 云計算應用開發(fā)實踐[M].北京:機械工業(yè)出版社,2011.
[2] 李剛.經(jīng)典Java EE企業(yè)應用實踐[M].北京:電子工業(yè)出版社,2010.
[3] 王淑江.Windows Server 2012 Hyper-V虛擬化管理實踐[M].北京:人民郵電出版社,2013.
[4] 陳聰,俞東進.基于JMX的Mule ESB管理控制臺[J].計算機時代,2012(3):25-27.