2016年10月12日水曜日

クラウドサービスの基本特性

米国国立標準技術研究所(NIST)の定義によれば、クラウドサービスは以下の5つの基本特性によって構成される。

1. オンデマンドのセルフサービス
 利用者自身が必要なときに必要なだけ、サーバーやストレージなどのリソース(資源)を自由に利用できる。サービスの提供者側の人手を介することなくリソースを増減できるかどうかが重要であり、サービス提供者に電話して「2営業日後には何とか」と言われるようなサービスはこの定義に該当しない。

2. 幅広いネットワークアクセス
 ネットワークを介して世界中のどこからでもアクセスが可能で、ラップトップや携帯電話、PDAなど、様々なクライアント環境から利用できる。

3. リソースの共有
 サーバーやストレージは共有資源として提供され、複数の利用者の要望に応じて割当や解放を行うことが出来る。また利用者は、それらサーバーやストレージがどこにあるかを意識しない。クラウドのリソースはマルチテナントモデルで提供され、一般的にはサーバーやストレージがどこにあるか分からない。実際にはアジアや北米にあったとしても、利用者はその設置場所を意識することは無い。

4. スピーディーに対応できる弾力性
 利用した分だけ使用料を払う従量課金であり、必要に応じた処理能力のスケールアウト/スケールインを素早く行うことが出来る。

5. 計測可能なサービス
 サーバーやストレージなどの使用料は、自動的に計測・最適化され、サービスの透明性が担保されている。実際のサーバー稼働台数を把握できないなどは論外で、透明性の高い価格形成がなされていなければならない。

2016年9月19日月曜日

Hyper-V上へWindows 10をゲストオペレーティングシステムとしてインストール

 Windows Server 2008 R2上で動作するHyper-V上にWindows 10をゲストオペレーティングシステムとしてインストールしようとしたがエラーが発生してインストール出来なかった。

 原因は、Windows 10は、Windows 8.1とWindows Server 2012 R2 Hyper-Vホスト上でゲストオペレーティングシステムとして実行出来るとから。

 知らなかったぜ。

2016年8月31日水曜日

RTX1200のGUIが表示されない。原因はハングアウトだった。

 ある日、気付いたらRTX1200のGUIが表示されなくなっていた。Chromeで見ようとしたら「192.168.0.1 からの応答時間が長すぎます。」と表示されてしまう。つい、先日までは普通に使えていたのに。

 最後に設定したのはDHCP予約アドレスの設定だ。それが悪かったのかな思い、その設定を削除してみたが駄目。追加したNASが悪さをしているのかと思い、それをLANから外しても駄目。

 RTX1200の電源を切断し再投入するとGUIで繋がるのだが、数秒経過するとまた応答無しになってしまう。しかし、telnetでは接続が可能で問題なく設定が出来る。その他、思いつくことは色々とやってみたが復旧せず。

 困ってヤマハのサポートに電話連絡し、電話とメールのやり取りを何度か繰り返してどうやらRTX1200には問題が無く、原因はその他にあるとの事になった。そこから先は自力で原因を調査することになる。

 弊社に於はRTX1200はデフォルトゲートウェイでもあり、ファイアーウォールでもあり、DHCPサーバーでもある。ネットワークの要衝である。GUIが表示されなくてもそんなに運用上影響はないが、原因が判明しない事には気持ちが悪い。ひょっとするとウィルスが社内LANに潜んでいて悪さをしている可能性もゼロではない。

 RTX1200の配下には数十台のOA機器が複数台のL2 SW経由で接続されている。それらのOA機器の電源を全て切断し、ブロック毎に電源を投入して原因の絞り込みをする事にした。すると、思いも寄らぬ事が判明した。事務所ブロックのOA機器の電源を投入しても再現せず、工場側ブロックで電源を投入すると障害が再現した。てっきり、事務所のOA機器が怪しいと踏んでいたのに意外な結果だった。納得がいかない結果ではあったが現実にそうなのだから受け入れざるを得ない。

 今度は工場側のOA機器を1台毎にLANに接続して再現するかを確認した。そして発見した原因と思われる1台目はWindows7のPCだった。フリーソフトのPortViewerでポートの状態を確認してみた。すると、プロセス名称がchromeで、相手のアドレスは192.168.0.1、相手のポートは80、ポートの状態はCLOSE_WAITというのが表示された。何故、chromeが192.168.0.1のポート80に接続するんだ?そもそも、chromeのウインドウは表示されていないのに。タスクバーの通知領域を見るとハングアウトがログオフの状態になっていた。

 このPCは現場の共有PCで特定の個人が利用している訳ではないので、ChromeはインストールしてあるがGoogleにログオンはしていない。また、現場のPCに対しては、RTX1200のURLフィルターを設定して、業務に関係あるサイトのみを閲覧可(ホワイトリスト)としている。Googleは閲覧不可だ。

 ここで思いついた。ひょっとしてハングアウトのログオンとログオフ、それからRTX1200のURLフィルターの組み合わせで障害が発生しているとすると納得がいく。事務所ブロックは全員がハングアウトにログオンしているし、インターネットへの接続には制限をかけていない。逆に、現場のPCは先程記述した通りだ。

 その後、ハングアウトのログオンとログオフ、またRTX1200のURLフィルターの有無の組み合わせで障害の再現を確認すると、以下のことが判明した。

 ハングアウトがログオフ状態でインターネットの216.58.197.195:80と216.58.200.174:80への接続に制限がかかっていると192.168.0.1:80に対してchromeが接続を要求する。関係しているipアドレスはこの2つだけではないと思うけど。因みに、このipアドレスのドメイン名は1e100.net。Google所有!

 これは私の想像でしかないけれど、ハングアウトはログオフ状態の時にこの1e100.netへ接続に行く。RTX1200はURLフィルターでブロックした場合は「YAMAHA RTX1200 によってこのページはブロックされました。」を返信する。それが何かしらの影響をPCまたはRTX1200に与え、GUIが表示されないのだと思う。

 対策は色々と考えたが、私はRTX1200のHTTPサーバー機能のlistenポートの設定でポート番号を別なポート番号に変更した。他の対策を講じてもまた同様の障害が発生しないとも限らないから。これにより、GUIは正常に表示されるようになった。また、現場のPCをPortViewerで確認したときに192.168.0.1:80は表示されなくなった。

 原因がウィルスではなくて本当に良かった。これを解決するまでに5日間かかった。

2016年1月22日金曜日

VB.NET 印刷プレビュー後に印刷するとプリンターから白紙が出力されてしまう

VB.NETのブログラムで印刷プレビューをしてからプリンターボタンをクリックして印刷を開始すると、プリンターから白紙が出力されてしまう。印刷プレビューには正しく表示されるのに、何故なのか悩んでしまった。


ネットで検索すると、力業的な解決方法をしている人も見受けられた。しかし、もっとスマートな解決方法をと思って検索していると、そもそも印刷プレビューと印刷の関係を知らないことに気付かされた。

そこでイベントの発生順序を確認するため、Visual Studioでデバッグすると、
先ず、印刷プレビューを実行すると、PrintDocument1.PrintPageイベントハンドラーが実行される。

続いて、印刷ボタンをクリックすると、何と再びPrintDocument1.PrintPageイベントハンドラーが実行されていた。

そうか。2回PrintDocument1.PrintPageイベントハンドラーが実行されるので、2回目の印刷の際は該当データが無くて空白が印刷されるのか。

原因が分かってしまえば対処は簡単。

単一ページを印刷する場合は、PrintDocument1.PrintPageイベントハンドラー内の最後に静的変数の値を最初の値に戻してあげれば良い。

複数ページを印刷する場合は、PrintDocument1.PrintPageイベントハンドラー内でe.HasMorePages = Trueを代入して、PrintDocument1.PrintPageイベントハンドラーの再帰をするが、最後のページを印刷した後は、e.HasMorePages = Trueを代入しない。そのタイミングで静的変数の値を最初の値に戻してあげれば良い。

ネット上にはこの事が分からずに、白紙が出力されるのでプリンターボタンをクリックしても印刷できなくしたいという質問があった。それではあまりにもユーザーが可哀相だ。