本文目錄一覽:
- 1、如何在Windows Azure中使用Java相關技術
- 2、如何創建和部署雲服務
- 3、怎麼使用Windows Azure Queue Storage 服務
- 4、如何通過 Java 使用 Azure Blob 存儲
- 5、如何註冊使用Azure for DreamSpark
- 6、java代碼控制azure虛擬機,比如添加,刪除等操作。求具體步驟,用eclipse或netbeans
如何在Windows Azure中使用Java相關技術
將打開Windows Azure模擬器窗口 你可以點擊角色查看記錄的日誌信息 如果你點擊合適的節點,可以看到你所有的自定義跟蹤,調試Windows Azure應用程序的體驗和調試ASP.NET應用程序或Web服務是類似的。
微軟的雲計算平台支持多種語言和不同框架開發的應用,開發者可以用.NET、PHP、Node.js和Java等變成語言來開發應用程序,而本文我們將闡述如何建立一個能在Windows Azure 平台運行的Java程序。
Windows Azure和Java
為了提高Windows Azure的接受度,微軟提供了一個強大的工具集來簡化Java應用程序在雲中的運行。這些工具集被打包在Windows Azure SDK for Java的包中,包括Windows Azure模擬器、內置於Eclipse IDE的Azure 開發的插件以及Java客戶端庫。同時,微軟也提供了技術上的支持,發布了上述提到的源代碼。
如何創建和部署雲服務
目錄
概念
準備應用程序
開始之前
如何使用”快速構建”構建雲服務
如何為雲服務上傳證書
如何部署雲服務
概念
想在Azure中將應用程序部署為雲服務,需要以下三個部分:
注意:
服務定義文件:雲服務定義文件(.csdef)定義了服務模型,包括角色的數量。
服務配置文件:雲服務配置文件(.cscfg)提供了雲服務和各個角色的配置設置,包括角色實例的數量。
服務包:服務包(.cspkg)包含應用程序代碼和服務定義文件。
準備應用程序
在你可以部署雲服務之前,必須利用你的應用程序代碼構建雲服務包(.cspkg),並構建雲服務配置文件 (.cscfg)。每個雲服務包都包含應用程序文件和配置。服務配置文件提供了配置設置。
Azure SDK(軟體開發工具包)提供了工具,用於準備這些必要的部署文件。你可以從Azure下載頁面安裝SDK,選擇你開發應用程序代碼時喜歡使用的那種語言。
如果你剛接觸雲服務,可以從 Azure代碼示例下載示例性的雲服務包(.cspkg)和服務配置文件(.cscfg)。
在你導出服務包之前,三種雲服務功能需要特殊的配置:
如果你想部署使用安全套接層(SSL)用於數據加密的雲服務,對你的應用程序進行SSL方面的配置。想了解詳細信息,請參閱《如何在HTTPS端點上配置SSL證書?》。
如果你想針對角色實例配置遠程桌面連接,請為遠程桌面配置角色。想了解準備服務定義文件,以便遠程訪問方面的詳細信息,請參閱《為角色設置遠程桌面連接概述》。
如果你想為雲服務配置詳細監視機制,為雲服務啟用Azure診斷。”最少監視”(默認監視級別)使用從角色實例(虛擬機)的主機操作系統收集而來的性能計數器。”詳細監視”基於角色實例裡面的性能數據,收集額外的度量指標,以便能夠對應用程序處理期間出現的問題進行更進一步的分析。想知道如何啟用Azure診斷,請參閱《在Azure中啟用診斷》。
開始之前
如果你沒有安裝過Azure SDK,點擊Install Azure SDK,打開Azure下載頁面,然後下載SDK,選擇你編寫代碼時喜歡使用的那種語言。(之後你有機會這麼操作。)
如果任何角色實例需要證書,請構建證書。雲服務需要帶有私鑰的.pfx文件。你可以在構建和部署雲服務時,將證書上傳到Azure。想了解關於構建證書的詳細信息,請參閱《如何在HTTPS端點上配置 SSL 證書?》。
如果你打算將雲服務部署到地緣組(affinity group),請構建地緣組。你可以使用地緣組,將雲服務及其他Azure服務部署到某個區域中的同一位置。你可以在管理門戶的Networks(網路)區域中的”地緣組”頁面上構建地緣組。想了解詳細信息,請參閱”地緣組”頁面上的幫助。
如何使用”快速構建”構建雲服務
1. 在管理門戶中,依次點擊New(新建)、Cloud Service(雲服務)和Quick Create(快速構建)。
2. 在URL中,輸入要在公共URL中使用的子域名稱,用於訪問生產部署環境中的雲服務。生產部署環境的URL格式為:。
3. 在Region/Affinity Group(區域/地緣組)中,選擇要在其中部署雲服務的地理區域或地緣組。如果你想將雲服務部署到某區域中與其他Azure服務同樣的位置,請選擇一個地緣組。
注意:如果想構建地緣組,打開管理門戶的Networks(網路)區域,點擊Affinity Groups(地緣組),然後點擊Create a new affinity group(構建新的地緣組)或Create(構建)。你可以使用在前面的Azure管理門戶中構建的地緣組。也可以使用Azure服務管理 API,構建和管理地緣組。想了解詳細信息,請參閱《地緣組方面的操作》。
4. 點擊Create Cloud Service(構建雲服務)。
你可以在窗口底部的消息區域監視這個過程的狀態。
Cloud Services(雲服務)區域隨即打開,顯示新的雲服務。狀態變成Created(已構建)後,表明雲服務構建已即成功完成。
如果雲服務中的任何角色需要用於安全套接字層(SSL)數據加密的證書,而且該證書並沒有上傳到Azure,你必須先上傳該證書,之後才能部署雲服務。你上傳證書後,在角色實例中運行的任何Windows應用程序都可以訪問該證書。
如何為雲服務上傳證書
1. 在管理門戶中,點擊Cloud Services(雲服務)。然後點擊雲服務的名稱,打開儀錶板。
2. 點擊Certificates(證書),打開Certificates(證書)頁面,如下所示。
3. 點擊Add new certificate(添加新證書)或Upload(上傳)。Add a Certificate(添加證書)隨即打開。
4. 在Certificate file(證書文件)中,使用Browse(瀏覽),選擇要使用的證書(.pfx文件)。
5. 在Password(密碼)中,輸入證書的私鑰。
6. 點擊OK(確定,鉤形符號)。
你可以在消息區域查看上傳進度,如下所示。上傳完畢後,證書被添加到表中。在消息區域,點擊向下箭頭以關閉消息,或者點擊X,刪除消息。
你可以從儀錶板或從”快速啟動”部署你的雲服務。
如何部署雲服務
1. 在管理門戶中,點擊Cloud Services(雲服務)。然後點擊雲服務的名稱,打開儀錶板。
2. 點擊Quick Start(快速啟動,”儀錶板”左側的圖標),打開”快速啟動”頁面,如下所示。(你還可以使用儀錶板上的”上傳”,部署你的雲服務。)
3. 如果你沒有安裝過Azure SDK,點擊Install Azure SDK,打開Azure下載頁面,然後下載SDK,選擇你編寫代碼時喜歡使用的那種語言。
在下載頁面上,你還可以安裝客戶端庫和源代碼,以便使用Node.js、Java、PHP及其他語言開發Web應用程序,可以將它們作為可擴展的Azure雲服務來部署。
注意:
針對之前構建的雲服務(以前叫託管服務),你需要確保虛擬機(角色實例)上的訪客操作系統與你安裝的Azure SDK版本兼容。想了解詳細信息,請參閱Azure SDK軟體發布說明。
4. 點擊New Production Deployment(新建生產部署環境)或New Staging Deployment(新建試運行部署環境)。
如果你希望將雲服務部署到生產環境之前先在Azure中進行測試,可以將其部署到試運行環境。在試運行環境中,雲服務的全局唯一標識符(GUID)可在URL中標識雲服務(GUID.chinacloudapp.cn)。在生產環境中,將使用你分配的更友好的DNS前綴(比如myservice.chinacloudapp.cn)。如果你準備好將試運行的雲服務發布到生產環境,可以使用Swap(交換),將客戶端請求重定向到生產部署環境。
你選擇部署環境後,Upload a Package(上傳包)會打開。
5. 在Deployment name(部署名稱)中,輸入新部署的名稱,比如MyCloudServicev1。
6. 在Package(包)中,使用Browser(瀏覽),選擇要使用的服務包文件(.cspkg)。
7. 在Configuration(配置)中,使用Browser(瀏覽),選擇要使用的服務配置文件(.cscfg)。
8. 如果雲服務將包括只有一個實例的任何角色,選擇Deploy even if one or more roles contain a single instance (即使一個或多個角色包含單個實例也進行部署)複選框,讓部署能夠繼續進行。
如果每個角色至少有兩個實例,Azure只能保證在維護和服務更新期間99.95%的時間段可以訪問雲服務。如果需要,你在部署雲服務後,可以在Scale(擴展)頁面上添加額外的角色實例。想了解詳細信息,請參閱《服務級別協議》。
1. 點擊OK(確定,鉤形符號),開始部署雲服務。
你可以在消息區域中監視部署狀態。點擊向下箭頭,即可隱藏消息。
想驗證你部署的雲服務是否已成功完成。
1. 點擊Dashboard(儀錶板)。
2. 在quick glance(速覽)下,點擊網站URL,即可在Web瀏覽器中打開你的雲服務。
怎麼使用Windows Azure Queue Storage 服務
若要執行存儲操作,您需要一個 Windows Azure 存儲帳戶。可通過以下步驟創建存儲帳戶。(也可以使用 REST API 創建存儲帳戶。)
登錄到 Windows Azure 管理門戶。
在導航窗格的底部,單擊「新建」。
+新建
依次單擊「數據服務」、「存儲」和「快速創建」。
「快速創建」對話框
在 URL 中,鍵入要在存儲帳戶的 URI 中使用的子域名稱。輸入的名稱可包含 3-24 個小寫字母和數字。此值將成為用於對訂閱的 Blob、隊列或表資源進行定址的 URI 中的主機名。
選擇要在其中查找存儲的區域/地緣組。如果要使用 Windows Azure 應用程序中的存儲,請選擇要在其中部署該應用程序的區域。
還可以選擇啟用異地複製。
單擊「創建存儲帳戶」。
創建 Java 應用程序
在本指南中,您將使用存儲功能,這些功能可在 Java 應用程序中本地運行,或在 Windows Azure 的 Web 角色或輔助角色中運行的代碼中運行。假定您已下載並安裝 Java 開發工具包 (JDK),並已按照下載 Windows Azure SDK for Java 中的說明進行操作來安裝 Windows Azure Libraries for Java 和 Windows Azure SDK,還在 Windows Azure 訂閱中創建了 Windows Azure 存儲帳戶。您可以使用任何開發工具(包括「記事本」)創建應用程序。您只要能夠編譯 Java 項目和引用 Windows Azure Libraries for Java 即可。
配置您的應用程序以訪問隊列存儲
將下列導入語句添加到要在其中使用 Windows Azure 存儲 API 以訪問隊列的 Java 文件的頂部:
// Include the following imports to use queue APIs
import com.microsoft.windowsazure.services.core.storage.*;
import com.microsoft.windowsazure.services.queue.client.*;
設置 Windows Azure 存儲連接字元串
Windows Azure 存儲客戶端使用存儲連接字元串來存儲用於訪問數據管理服務的終結點和憑據。在客戶端應用程序中運行時,必須提供以下格式的存儲連接字元串,並對 AccountName 和 AccountKey 值使用管理門戶中列出的存儲帳戶的名稱和存儲帳戶的主訪問密鑰。此示例演示如何聲明用於保存連接字元串的靜態欄位:
// Define the connection-string with your values
public static final String storageConnectionString =
“DefaultEndpointsProtocol=http;” +
“AccountName=your_storage_account;” +
“AccountKey=your_storage_account_key”;
在 Windows Azure 的角色中運行的應用程序中,此字元串可存儲在服務配置文件 ServiceConfiguration.cscfg 中,並可通過調用 RoleEnvironment.getConfigurationSettings 方法進行訪問。下面是從服務配置文件中名為 StorageConnectionString 的 Setting 元素中獲取連接字元串的示例:
// Retrieve storage account from connection-string
String storageConnectionString =
RoleEnvironment.getConfigurationSettings().get(“StorageConnectionString”);
如何:創建隊列
利用 CloudQueueClient 對象,可以獲得隊列的引用對象。以下代碼將創建 CloudQueueClient 對象。
本指南中的所有代碼都使用聲明了上述兩種方式之一的存儲連接字元串。還可以通過其他方式創建 CloudStorageAccount 對象。有關詳細信息,請參閱 Javadocs 文檔中的 CloudStorageAccount。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
使用 CloudQueueClient 對象獲取對要使用的隊列的引用。如果隊列不存在,您可以創建它。
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Create the queue if it doesn’t already exist
queue.createIfNotExist();
如何:向隊列添加消息
若要將消息插入現有隊列,請先創建一條新的 CloudQueueMessage。緊接著,調用 addMessage 方法。可從字元串(UTF-8 格式)或位元組數組創建 CloudQueueMessage。以下代碼將創建隊列(如果隊列不存在)並插入消息「Hello, World」。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Create the queue if it doesn’t already exist
queue.createIfNotExist();
// Create a message and add it to the queue
CloudQueueMessage message = new CloudQueueMessage(“Hello, World”);
queue.addMessage(message);
如何:查看下一條消息
通過調用 peekMessage,可以查看隊列前面的消息,而不必從隊列中將其刪除。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Peek at the next message
CloudQueueMessage peekedMessage = queue.peekMessage();
如何:取消對下一條消息的排隊
您的代碼通過兩個步驟取消在隊列中對消息的排隊。在調用 retrieveMessage 時,您將獲得隊列中的下一條消息。從 retrieveMessage 返回的消息變得對從此隊列讀取消息的任何其他代碼不可見。默認情況下,此消息將持續 30 秒不可見。若要完全從隊列中刪除消息,您還必須調用 deleteMessage。此刪除消息的兩步過程可確保當您的代碼因硬體或軟體故障而無法處理消息時,您的其他代碼實例可以獲取同一消息並重試。您的代碼在處理消息後會立即調用 deleteMessage。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Retrieve the first visible message in the queue
CloudQueueMessage retrievedMessage = queue.retrieveMessage();
// Process the message in less than 30 seconds, and then delete the message.
queue.deleteMessage(retrievedMessage);
如何:更改已排隊消息的內容
您可以更改隊列中已就位消息的內容。如果消息表示工作任務,則可以使用此功能更新工作任務的狀態。以下代碼使用新內容更新隊列消息,並將可見性超時設置為再延長 60 秒。這將保存與消息關聯的工作的狀態,並額外為客戶端提供一分鐘的時間來繼續處理消息。可使用此方法跟蹤隊列消息上的多步驟工作流,即使處理步驟因硬體或軟體故障而失敗,也無需從頭開始操作。通常,您還可以保留重試計數,如果某條消息的重試次數超過 n 次,您將刪除此消息。這可避免消息在每次處理時都觸發應用程序錯誤。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Retrieve the first visible message in the queue
CloudQueueMessage message = queue.retrieveMessage();
// Modify the message content and set it to be visible in 60 seconds
message.setMessageContent(“Updated contents.”);
EnumSetMessageUpdateFields updateFields =
EnumSet.of(MessageUpdateFields.CONTENT, MessageUpdateFields.VISIBILITY);
queue.updateMessage(message, 60, updateFields, null, null);
用於對消息取消排隊的其他方法
您可以通過兩種方式自定義隊列中的消息檢索。首先,您可以獲取一批消息(最多 32 個)。其次,您可以設置更長或更短的不可見超時,從而允許您的代碼使用更多或更少的時間來徹底處理每條消息。
以下代碼示例使用 retrieveMessages 方法通過一次調用獲取 20 條消息。然後,它使用 for 循環來處理每條消息。它還將每條消息的不可見超時設置為五分鐘(300 秒)。請注意,這五分鐘超時對於所有消息都是同時開始的,因此在調用 retrieveMessages 五分鐘後,尚未刪除的任何消息都將再次變得可見。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Retrieve 20 messages from the queue with a visibility timeout of 300 seconds
for (CloudQueueMessage message : queue.retrieveMessages(20, 300, null, null)) {
// Do processing for all messages in less than 5 minutes,
// deleting each message after processing.
queue.deleteMessage(message);
}
如何:獲取隊列長度
您可以獲得隊列中消息的估計數。downloadAttributes 方法會詢問隊列服務一些當前值,包括隊列中消息的計數。此計數僅為近似值,因為只能在隊列服務響應您的請求後添加或刪除消息。getApproximateMethodCount 方法返回通過調用 downloadAttributes 檢索到的最後一個值,而不會調用隊列服務。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Download the approximate message count from the server
queue.downloadAttributes();
// Retrieve the newly cached approximate message count
long cachedMessageCount = queue.getApproximateMessageCount();
如何:刪除隊列
若要刪除隊列及其包含的所有消息,請對隊列對象調用 delete 方法。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Delete the queue
queue.delete();
如何通過 Java 使用 Azure Blob 存儲
1.通過遠程桌面的本地資源訪問 最簡單的方式是通過遠程桌面的本地資源訪問功能。在虛擬機頁底部點擊「連接」後,瀏覽器會提示下載rdp文件。 不要直接打開該文件,而是選擇另存,將其存在本地 對於下載的RDP文件,不要直接打開,而是右鍵,選擇Edit…
如何註冊使用Azure for DreamSpark
通過Microsoft Azure for DreamSpark,您可免費開始使用雲中開發所需的服務:
• Application Insights 可向您360°全方位展示ASP.NET服務及適用於Windows Phone、iOS和Android平台的移動應用程序的可用性、性能和使用情況。搜索並分析您的數據,以便持續改進您的應用程序,明確未來各項投資的輕重緩急並提升整體客戶體驗。
• Visual Studio Online 是迄今最迅速、最簡便的跨多種平台規劃、構建和交付軟體的方法。只需幾分鐘即可在我們的雲基礎結構上準備就緒並開始運行,而無需安裝或配置單台伺服器。
• Azure 應用服務 Web 應用是全託管式平台即服務(PaaS)的一部分,能夠讓您快速構建、部署和擴展Web應用。使用ASP.NET、Java、PHP、Node.js或Python。運行受歡迎的Web應用和CMS解決方案,其中包括WordPress、Drupal、Joomla、Umbraco和DotNetNuke。利用VSO、GitHub、TeamCity、Hudson或BitBucket設置連續的集成和部署工作流,讓您能夠在各個成功的代碼簽入或集成測試中自動構建、測試和部署您的Web應用。
此外,微軟還表示,如果學生用戶有需要,可以升級現有服務。不過當前免費模式下微軟提供的雲服務託管功能,足以完成Web應用和網站的託管任務。
java代碼控制azure虛擬機,比如添加,刪除等操作。求具體步驟,用eclipse或netbeans
最近,使用Powershell腳本在A7 (8核,56G內存)配置的 Azure VM(Virtual Machine,虛擬機)上遠程運行Java JVM時 (Java.exe -version),總是失敗並返回如下的錯誤信息。同樣的Powershell腳本,在其它低於A7配置的VM上遠程執行一切正常;此外,如果使用遠程桌面登錄到VM上,再進行同樣的操作,一切執行正常。
[plain] view plain copy
Error occurred during initialization of VM
Unable to allocate 458752KB bitmaps for parallel garbage collection for the requested 14680064KB heap.
Error occurred during initialization of VM
Could not reserve enough space for object heap
以上的實驗排除了是JVM(1.7)本身的問題, 看來問題很有可能是出在Powershell的遠程執行方式上。Powershell Remoting依賴於WinRM (Windows Remote Management)在遠程機器上執行操作。默認情況下,WinRM為每個Powershell遠程連接分配了最大(MaxMemoryPerShellMB=1024)1G的內存空間(早期的版本只有150M),用於執行遠程操作。但遠程操作所需的執行內存空間 1G時,就會出現了內存不足的問題,不同的操作可能表現會有所不同,如:有的會拋出OutOfMemoryException等。針對這個問題,解決的辦法就是增加MaxMemoryPerShellMB,然後重啟WinRM服務:
[plain] view plain copy
$maxMemoryPerShellVM = 3072
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB $maxMemoryPerShellVM
Set-Item WSMan:\localhost\Plugin\Microsoft.PowerShell\Quotas\MaxMemoryPerShellMB $maxMemoryPerShellVM
Write-Output “List MaxMemoryPerShellMB configuration”
Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB
Get-Item WSMan:\localhost\Plugin\Microsoft.PowerShell\Quotas\MaxMemoryPerShellMB
# Restart WinRM service to make the change take effect
Restart-Service winrm
具體要增加到多大的內存,需要自己去實驗一下。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241280.html