基本的にいつもAzureだとPaaSを使うことがメインでIaaSは、あまり使わないのですが、
とある用事でIaaSを真面目に使わないといけない状況に直面したので意外と知らなかったIaaSの可用性について調べてみました。
可用性を必要とする状況
まず初めに可用性を設定する理由とかを簡単に。
メンテナンス対策
仮想マシンも所詮は、PCです。
基本的にメンテナンスは、運用するうえで必要不可欠になります。
メンテナンスと言っても個人でPC内のソフトウェア設定を見直すとかそういう場合もありますが、この場合は、マシンのメンテナンスです。
クラウドサービスの場合は、基本的にサーバは、自分の手元にないのでベンダー側がメンテナンスを行うはずですよね。
そのメンテナンスは、ユーザーサイドからは、基本的に触ることは、不可能です。
メンテナンスは、主に計画済みメンテナンスと計画外メンテナンスがあります。
Azureにおいて可用性に影響を及ぼすイベントは、主に以下の2つのメンテナンスイベントです。
計画済みメンテナンス
これは、Microsoftが計画に基づいて実行するメンテナンスです。
基本的には、VMやクラウドサービスなどに影響を及ぼさない形で実行されますが、稀にマシンの再起動が必要になる場合があります。
計画外メンテナンス
これは、Microsoftが行う計画的なメンテナンスとは、異なり、マシンが物理的に障害を起こした際などに発生します。
Azureでは、これらが検知されると自動的に異常を起こしたマシンから正常に動いているマシンに以降が行われます。
この場合もVMの再起動を行う必要が発生する場合があります。
仮にこれらが発生した場合、インスタンスに可用性を与えずにいると普通にインスタンスが再起動されてシステムにダウンタイムが発生します。
通常Azureでは、SLA99.9%をほとんどのサービスで保証しています。
VMも例に漏れないといえば漏れませんが、基本的に可用性セットを構成している場合に限り99.95%でSLAを確保するという点に注意が必要です。
可用性セットを実際に構成してみる
とりあえず可用性が必要だということは、分かったはずなので実際にAzureで可用性セットを構成してみましょう。
可用性セットを構成する場合というかVMを管理する場合現在では、新ポータルで操作するほうがいろいろと便利なのでそちらで紹介します。
とりあえず新ポータルで、VMの設定画面まで行きます。
この画面に来たら以下のようにオプション構成を設定します。
あとは、適当にエンドポイントの構成やらなんやらをやってください。
ちなみに新ポータルでエンドポイントをここで構成する場合、旧ポータルと違いSSHやRDPのエンドポイント設定が表示されないのですが、
システム的には、あらかじめもうすでに設定されている状態で進むのでここで別途SSHなどを設定しようとするとエラーで構成できなくなるので気を付けてください。
その際以下のように先ほど作った可用性セットを設定します。
この際もまたいろいろとエンドポイントを構成したりしてVMを作成します。
ここでエンドポイントを構成する際に、初めのVMと同じポート番号を開けようとするとポートが競合しているという警告でVMの作成に失敗します。
どうも片方のサーバでポートを開けておけばあとは、LBがうまく振り分けをしてくれるようです。(よくわかってないので追って記事書きます)
VMが立ち上がったらVMの情報を見てみると同じ仮想IPアドレスに対して異なるプライベートIPアドレスが割り振られたVMが複数できます。
エンドポイントを確認すると、しっかり異なるポートが設定されているはずです。
SSHやRDPで接続を行いたい場合は、同一IPアドレスに対してそれぞれに設定されたポート番号を明示的に指定して接続に行くと、
LBが自動的に割り振ってそれぞれのサーバに接続できるので、サーバの設定を行う場合は、ポート番号を明示的に指定してください。
可用性セットを確認してそれぞれ同じ可用性セットが設定されていたらそれで完成です。