Windows Azure

Windows Azure Companion for PHP: Common Errorsを簡単に紹介する投稿です。

Windows Azure Companion for PHPは、Windows Azure上にPHPベースのアプリケーションを数クリックで配置できる便利なソリューションです。Windows Azure Companion for PHPを使用していると遭遇する可能性があるエラーと原因について説明します。

Windows Azure

Windows Azure Companionのソースが、ダウンロードできます。WindowsAzure Companion

の概要は、「ここ」で紹介しています。この投稿では、ソースコードから5箇所取り上げて、説明します。ソリューションアーキテクチャーを理解するのに重要な5箇所です。簡単な機能拡張をしたいときに、触る可能性がある箇所です。

1. Azure Companion 管理アプリケーション:

 

WorkerRole\WorkerRole.cs

             // Start ASP .NET Admin WebSite

       private void StartAdminWebSite()

2. Web CoreでPHPを実行する:

 

VMManagerService\WindowsAzureVMManager.cs

             public static string HWCForPHPProcessName = "HWCForPHP.exe";

 

VMManagerService\WindowsAzureVMManager.cs

// setting the file name and arguments

              hwcServerProcess.StartInfo.FileName = Path.Combine(approot,

 WindowsAzureVMManager.HWCForPHPProcessName);

              hwcServerProcess.StartInfo.Arguments =

                    Path.Combine(configPath, "php_applicationHost.config") + " "

                    + Path.Combine(configPath, "php_web.config");

              hwcServerProcess.Start();

              // Start the asynchronous read of the output stream.

              hwcServerProcess.BeginOutputReadLine();

 

              Trace.TraceInformation("Started Hosted Web Core Server for PHP Applications

 on port {0}", endpoint.Port.ToString());

 

3. RAM パフォーマンスカウンター:

WorkerRole\WorkerRole.cs

// Add performance counter monitoring

            cfg.PerformanceCounters.DataSources.Add(

                            new PerformanceCounterConfiguration()

                            {

                               CounterSpecifier = @"\Processor(_Total)\% Processor Time",

                               SampleRate = timeSpan

                            });

            cfg.PerformanceCounters.DataSources.Add(

                new PerformanceCounterConfiguration()

                {

                    CounterSpecifier = @"\Memory\Available Mbytes",

                    SampleRate = timeSpan

                });

            cfg.PerformanceCounters.ScheduledTransferPeriod = timeSpan;

 

4. Cloud Driveを作成し、 backup.vhd をマウントする:

VMManagerService\WindowsAzureVMManager.cs

// Get Windows Azure Drive container and blob names from service configuration file

string xdriveContainerName = RoleEnvironment.GetConfigurationSettingValue("PHPApplicationsBackupContainerName");

string xdriveBlobName = RoleEnvironment.GetConfigurationSettingValue("XDrivePageBlobName");

 

5. Cloud Drive の名前とサイズなどの設定:

ServiceConfiguration.cscfg

      <!– Settings for Windows Azure Drive used for durability –>

      <Setting name="PHPApplicationsBackupContainerName" value="phpapps" />

      <Setting name="InstallationStatusConfigFileBlob" value="status.xml" />

      <Setting name="ProgressInformationFileBlob" value="progress.xml" />

      <Setting name="XDrivePageBlobName" value="backup.vhd" />

      <Setting name="XDriveSizeInMB" value="2000" />

SQL Azure Team Blog

Service Update 5 Released to Productionを簡単に紹介。

SQL AzureのService Update 5が全世界のすべてのデータセンターにリリースしました。

今回のリリースでは、将来的な機能追加を可能にするために内部オペレーションの改善に注力しました。

今回の更新の1つで、sp_tablepointシステムストアドプロシージャの提供を開始しました。
詳細は、sp_tableoption (SQL Azure Database)を参照してください。

 

更新に合わせて、以下のMSDNドキュメントを追加、修正しました。

HintsSupported Transact-SQL Statements (SQL Azure Database)に新たにHintsに関する情報を追加しました。

Error MessagesError Messages (SQL Azure Database)に、エラーを絞り込み解決するための情報を追加しました。
詳細は、Error Messages (SQL Azure Database)を参照してください。

Microsoft Sync Framework 2.1Migrating Databases to SQL AzureにMicrosoft Sync Framework 2.1のサポートについて説明を追加しました。

SQL Azure Team Blog

SQL Azureで提供されている2つの動的管理ビュー(sys.database_usagesys.bandwidth_usage)を使用して、アカウントの稼働状況を確認することができます。
参考値として利用し、実際の課金額は別途オンラインポータルで確認してください。

 

次のクエリは、今月、自分のサーバにある全てのデータベース使用料を表示します。

SELECT           SKU as "種類",

                  SUM   (     CASE WHEN USAGE.SKU = ‘Web’

                                    THEN (Quantity * 979.02/31)

                               WHEN USAGE.SKU = ‘Business’

                                          THEN (Quantity * 9799.02/31)

                              END ) AS "費用()"

FROM              sys.Database_Usage USAGE

WHERE             datepart(yy, TIME) = datepart(yy, GetUTCDate())

AND               datepart(mm, TIME) = datepart(mm, GetUTCDate())

GROUP BY    SKU

Master DBに接続している時に、上のクエリを実行することができます。実行結果は以下のようになります。

SQL Azureの使用量は、ストレージ使用料だけでなく、データの転送量にも課金されます。

SELECT            USAGE.Time_Period as "オン/オフピーク",

                  USAGE.Direction as "送受信",

                  CASE WHEN USAGE.Direction = ‘Egress’

                              THEN 14.70 * USAGE.BandwidthInKB/(1024*1024)

                        WHEN USAGE.DIRECTION = ‘Ingress’

                              THEN 9.80 * USAGE.BandwidthInKB/(1024*1024)

                  END AS "費用()"

FROM (

                  SELECT      Time_Period,

                              Direction,

                              SUM(Quantity) AS BandwidthInKB

                  FROM        sys.Bandwidth_Usage

                  WHERE       datepart(yy, TIME) = datepart(yy, GetUTCDate())

                  AND         datepart(mm, TIME) = datepart(mm, GetUTCDate())

                  AND         class = ‘External’

                  GROUP BY    Time_Period, Direction

) AS USAGE

 

 

 

この投稿は、Billing Numbers Directly From Transact-SQL – TechNet Articles – Home – TechNet Wikiを意訳したものです。

Windows Azure, ダウンロード

Windows Azure Companion: PHP and WordPress in Azure」にて、Webプラットフォーム インストーラー(Web PI)のクラウド版とも言えるWindows Azure CompanionのCTP版のリリースが紹介されていました。

 

Windows Azure Companionとは

 

Windows Azure Companionとは、自分のAzureアカウントにインストールすることで、Azure上でwebサイトの準備を行えるお手軽インストーラーです。イメージ的には、Web PIのAzure版です。

Windows Azure Companionを使用することで、PHPを導入し、OSSのWordPress、Drupal、JoomlaなどをWindows Azure Companionを動作させているAzureインスタンス(Worker Role)と同じ場所に直接インストールできます。

すでにPHP、MYSQL、Javaなどマイクロソフト製では無いフレームワークやWindows Azreアプリケーションを動作させていたり、ユーザを助けるためのPHP/MySQLTomcatmemcachedなどのアクセラレーターが提供されています。

Windows Azure Companionは、一歩先に進み、Azure上でアプリケーションやフレームワークを管理したり、動作させる為の管理作業をシングルポイントで提供します。現時点では、PHPベースの有名なWordPressやDrupalのようなCMSライクなアプリケーションに集中していますが、将来的には、その他のプラットフォームにも対応していきます。