Статьи

Windows Azure и масштабирование: как? (PHP)

Одной из ключевых идей облачных вычислений является концепция масштабирования. Говоря с клиентами и энтузиастами облачных вычислений, многие люди, похоже, не знают о том, что есть большие возможности для масштабирования, даже для небольших приложений. В этой серии постов в блоге я расскажу о следующем:

Создание и загрузка сертификата управления

Чтобы все было сухо (не повторяйте себя), я просто свяжу вас с предыдущим постом ( Windows Azure и масштабирование: как? (.NET) ) для этого.

Однако для PHP вам понадобится сертификат .pem. Опять же, для ленивых, вот мой ( management.pfx (4,05 кб) , management.cer (1,18 кб) и management.pem (5,11 кб) ). Если вы хотите создать его самостоятельно, зайдите на этот сайт, где вы можете конвертировать и создавать сертификаты .

Создание небольшого инструмента для масштабирования из командной строки (на PHP)

Чтобы иметь возможность автоматического масштабирования, давайте создадим небольшой инструмент командной строки на PHP. Идея состоит в том, что вы сможете запустить следующую команду на консоли для масштабирования до 4 экземпляров:

1 php autoscale.php "management.cer" "subscription-id0" "service-name" "role-name" "production" 4 

Или до 2 случаев:

1 php autoscale.php "management.cer" "subscription-id" "service-name" "role-name" "production" 2

Будет ли это работать на Linux? Ага! Будет ли это работать на Windows? Ага! Теперь давайте начнем.

Windows Azure SDK для PHP будет очень удобно делать такого рода вещи. Загрузите последний исходный код (поскольку класс Microsoft_WindowsAzure_Management_Client, который мы будем использовать, официально еще не выпущен).

Наш скрипт начинается так:

<?php
2 // Set include path
3 $path = array('./library/', get_include_path());
4 set_include_path(implode(PATH_SEPARATOR, $path));
5
6 // Microsoft_WindowsAzure_Management_Client
7 require_once 'Microsoft/WindowsAzure/Management/Client.php';

Это просто гарантирует, что все необходимые библиотеки были загружены. затем вызовите метод setInstanceCountBySlot () класса Microsoft_WindowsAzure_Management_Client, чтобы установить количество экземпляров на запрошенное число. Легко! И на самом деле даже проще, чем Microsoft. NET версия этого .

// Do the magic
2 $managementClient = new Microsoft_WindowsAzure_Management_Client($subscriptionId, $certificateFile, '');
3
4 echo "Uploading new configuration...\r\n";
5
6 $managementClient->setInstanceCountBySlot($serviceName, $slot, $roleName, $instanceCount);
7
8 echo "Finished.\r\n";

Вот полный сценарий:

<?php
2 // Set include path
3 $path = array('./library/', get_include_path());
4 set_include_path(implode(PATH_SEPARATOR, $path));
5
6 // Microsoft_WindowsAzure_Management_Client
7 require_once 'Microsoft/WindowsAzure/Management/Client.php';
8
9 // Some commercial info 🙂
10 echo "AutoScale - (c) 2011 Maarten Balliauw\r\n";
11 echo "\r\n";
12
13 // Quick-and-dirty argument check
14 if (count($argv) != 7)
15 {
16 echo "Usage:\r\n";
17 echo " AutoScale <certificatefile> <subscriptionid> <servicename> <rolename> <slot> <instancecount>\r\n";
18 echo "\r\n";
19 echo "Example:\r\n";
20 echo " AutoScale mycert.pem 39f53bb4-752f-4b2c-a873-5ed94df029e2 bing Bing.Web production 20\r\n";
21 exit;
22 }
23
24 // Save arguments to variables
25 $certificateFile = $argv[1];
26 $subscriptionId = $argv[2];
27 $serviceName = $argv[3];
28 $roleName = $argv[4];
29 $slot = $argv[5];
30 $instanceCount = $argv[6];
31
32 // Do the magic
33 $managementClient = new Microsoft_WindowsAzure_Management_Client($subscriptionId, $certificateFile, '');
34
35 echo "Uploading new configuration...\r\n";
36
37 $managementClient->setInstanceCountBySlot($serviceName, $slot, $roleName, $instanceCount);
38
39 echo "Finished.\r\n";

Теперь запланируйте или сделайте это (при необходимости) и воспользуйтесь преимуществами масштабирования службы Windows Azure.

Так ты ленивый? Вот мой пример проекта ( AutoScale-PHP.zip (181,67 кб) ) и используемые сертификаты ( management.pfx (4,05 кб) , management.cer (1,18 кб)  и management.pem (5,11 кб) ).