このブログのサーバーをMicrosoft Azureの仮想マシンに移行してみました。
AzureにはWordPressを直接ホストしてくれるサービス(いわゆるSaaSというんですか?)もあるのですが、今回Azureを利用するのははじめてな事と、ブログ以外も移行すべきものが少々あるのでオーソドックスに仮想マシンを作成してそこでサーバーを立てました。
という事で今回分かった事をいくつか。
ポータルというのはAWSで言うところのマネジメントコンソールに相当するもので、ブラウザで操作可能なものです。
古いの(現行?)と新しいの(ベータバージョン?)があり、どちらもフラットデザインでおしゃれな感じですが、AWSと比べると分かりづらいです。
まぁそこは慣れの問題も大きいかと思いますが、そうも言い切れない部分もあります。
AWSに比べるとポータルで出来る事が少ないので、無い機能を探して延々と新旧ポータルを探しまわる事になりがちです。
そういったポータルに無い機能はコマンドラインツール(Azure PowerShell)等で実行することになります。
今回実際に、グローバルIPを予約しようとしてポータル内を探し回った挙句、そういう機能がポータルに無いらしいという事に気づいて、結局Azure PowerShellで操作する羽目になりました。
Azure PowerShell自体は、導入もしやすくコマンドも分かりやすくてなかなか使えそうだという印象を持ちました。
ただPowerShellに慣れてないので、MS公式のNode.js用Azureモジュールを使ってLinuxなクライントマシンで操作したい感じです。
AzureではWindowsやLinuxの仮想マシンを簡単に立ち上げるためのテンプレートみたいなものが用意されてるので、それを利用する場合はとても簡単なんですが、今回とある事情で独自にOSをインストールした仮想マシンをAzureで動かそうとしたところ、予想以上に時間がかかってしまいました。
大まかな手順としては、まずローカルのHyper-Vサーバーで独自にOSをインストールし、次にその仮想ディスク(vhdファイル)をAzureにアップロードし、それを元にAzureの仮想マシンを起動する、という感じになります。
(ローカルでHyper-Vを使わずともVMwareやKVMで作った仮想ディスクをvhdに変換してアップロードするのでもいけると思いますが、ゲストがLinuxだとdracutでinitramfsを作り直さないとAzureで起動しないって事になりそうな気がします。)
今回最初はAzureへのvhdのアップロードにAzure Storage ExplorerというGUIのツールを使ったんですが、今思うとこのチョイスがダメでした。
Azureの仮想マシンの仮想ディスクは、vhdxでもなく可変長(≒スパース)vhdでもなく固定長(≒非スパース)vhdでなければならないのですが、それを知らず可変長vhdで作ったものをアップロードしてしまいました。
当然Azureの仮想マシンは起動せず。
ここで固定長vhdでないといけないという事を知り、ローカルで固定長に変換したものをアップロードしてみたのですが、可変長の時はせいぜい数GBだった仮想ディスクが、固定長に展開すると数十GBにもなるため、アップロードが一向に終わらないという事態に。
一瞬「Azureダメじゃね?」と思ったんですが、Azure Storage Explorerにアップロードの進捗を表示する機能がないので、一旦止めて、Azure PowerShellのAdd-AzureVhdコマンドでアップロードしてみたところ、なんと固定長でも高速にアップロードが完了しました。
(しかも進捗も表示してくれる)
ディスクイメージのゼロの部分を飛ばしてアップロードしてるんだと思います。
さらに調べたところ、Azure PowerShellのAdd-AzureVhdコマンドは可変長vhdを自動的に固定長に変換してアップロードしてくれるらしく、最初からこれ使ってれば何の問題も無かったみたいです。
まぁ、落とし穴というか自分で勝手に穴を掘って勝手に落ちた感じですね(汗
ちなみに今回独自にOSをインストールした理由。
CentOS7を使いたかったのですが、AzureにもOpenLogicのサポート付きCentOS7はあります。
しかしそのOpenLogicのサポート付きCentOS、サポートするためか何か知りませんが、yumの設定でkernel*が除外されてるとかいう話を見かけ、そういう独自の設定が追加されてる可能性があるものは使いたくなかったため、ローカルで普通にインストールしたCentOS7をアップロードして使いました。
MicrosoftがGitHubで公開してるWALinuxAgentをインストールしました。
一言で言えば、Azureの機能と協調して動くためのLinuxゲスト内サービス、という感じでしょうか。
これで多分Azureのポータルにある仮想マシンのパスワードリセット機能とかがちゃんと動くようになるんだと思います。
(Azureにアップロードする前にインストールしてしまったので、インストールしてない状態でどうなるか全く未確認です。)
もうちょっとポータルが分かりやすくなれば良いなぁとか、機能が追加されれば良いなぁとか、ポータルのレスポンスがもうちょっと良くなると良いなぁとかあるんですが、それよりも安定してサービスが継続される事が重要だと思います。
これからしばらく使ってみて、手がかかるのか、全く手がかからないか、どっちになるか楽しみです。
追記
5ヶ月以上経ちましたが今のところドが付くほど安定してます。
安定しすぎてポータルなんて全く見る必要がない状態ですw
どこでも事故は起こりうるので何も保証は出来ませんが、Azureは信頼できる、と思ってます。
コメント