ごめぇぇぇん。


嘘ついてたぁぁぁあああ。


先日の記事で「Longhornにはまだクラスタ機能はないっぽい」とか書いたけど、ちゃんと [Windows機能の有効化と無効化] のトコロにあったよ(・ω・`)

VirtualServer29

(クリックで拡大)



んで、お詫びの為にLonghornでクラスタを組んでみようって思ったの。


それでね、とりあえず先日の記事みたいなハードウェア構成にしてトライしてみたワケ。


んで、管理コンソールに [構成の検証] ってあったからやってみたらね、

VirtualServer30

(クリックで拡大)


なんかエラー出たの。悲しいよボク。

VirtualServer31

(クリックで拡大)



でも悲しんでばかりもいられないからLonghornタンに理由を聞いてみたらね、「ハードウェア的にムリね。」とか言われちゃったの。

VirtualServer32

(クリックで拡大)


なんかね、SASiSCSIFCで接続されたディスクストレージがないとダメらしいのね。


Virtual Serverじゃ再現できねーだろーがよ(ToT)



んで結局断念したってワケさ。


しかもディスク領域の捻出の為に先日の2003のマシン2台とも消しちまったんだよ。



いいさ、笑ってくれ。


愚かな男だと。

Virtual ServerMSCSを試してみた。


ので、その手順を紹介することにする。



・前準備

まず、ノード間のハートビートの為に内部ネットワークのバーチャルネットワークアダプタを作成する。

VirtualServer23

(クリックで拡大)


次に、共有ディスクに接続する為に、バーチャルSCSIアダプタを作成する。

VirtualServer22
(クリックで拡大)


SCSIバスをクラスタのために共有するのを忘れないこと。


そして、共有ディスクとなるバーチャルハードディスクを作成する。

VirtualServer21

(クリックで拡大)


この時[接続]をSCSIにすることと、両ノードのディスクは同じVHDファイルを参照すること。


それから、MSCSにはDC(ドメインコントローラ)が必要になるので、あらかじめ用意しておくこと。


また、DCは両ノードに任せてもいいが、MSSQLのクラスタも実装する場合はDCを別途用意すること。
(推奨されていないし、混在にすると不安定になる恐れがある)


ちなみに、今回はDCにLonghornを利用した。



・ノードの構築

クラスタを構成するノードを構築する。


OSにはWindows Server 2003 Enterprise EditionまたはWindows 2000 Advanced Serverを使用する。

(Longhornで試そうとしたのだが、まだ用意されていないっぽかった ← [Windows機能の有効化と無効化] の中にあったよ)


初めはノードの設定を片方ずつ行なう。


間違っても2台同時に起動しないこと。
(特にディスクの設定が終わるまでは)


まず、外部および内部のネットワーク設定を行なう。


次に、追加したハードディスクを初期化し、パーティションを作成する。
(2台目ではアクティブとしてマークし、1台目と同じドライブレターを設定するだけでOK)


最後に、ノードをドメインに参加させ、ノードをシャットダウンする。


これを両ノードについて行なう。



・クラスタの構築

管理ツールのクラスタアドミニストレータを起動し、[新しいクラスタの作成]を実行する。

VirtualServer24
(クリックで拡大)

構成はウィザードで行なうので、内容に沿っていけばOK。


クラスタの作成が終了したら、そのままもう片方のノードも起動する。


同じくクラスタアドミニストレータを起動し、今度は[クラスタへのノードの追加]を実行する。

VirtualServer25
(クリックで拡大)

ウィザードを通過したら2ノードクラスタの完成という塩梅だ。

VirtualServer26

(クリックで拡大)



・クラスタ構成の確認

本当にクラスタになってるのか気になるなら、テストをしてみよう。


クラスタアドミニストレータで[グループの移動]を実行すると、リソースがもう片方のノードに移る。

VirtualServer27

(クリックで拡大)


もう1度同じことをすれば、リソースは戻ってくる。

VirtualServer28

(クリックで拡大)


これが試験的なフェイルオーバーとフェイルバックというワケだ。


また、ネットワークから仮想的なホスト名とIPアドレスを参照してみるのもいいだろう。



こんなところかな。


MSSQLのクラスタは試してない。


前VMwareでやった時は不安定になってダメだったんだよね。


Virtual Serverでは普通にできるらしいけど、なんせ評価版もないしもちろんライセンスも持ってない。


どっかでやる機会があったらそのとき載せるってことで。



それはそうと昨日からAmeba重くない?

Virtual ServerではVirtual PCと同じようにバーチャルマシン追加機能が利用できるが、それがLinux向けにも提供されている。


今回はそのインストール手順も合わせてカンタンに紹介してみよう。



まず、Microsoft ConnectVirtual Machine Additions for Linuxのプログラムに参加する。
(Windows LiveとかPassportのアカウントでサインインが必要。なければアカウント作ってね)


Microsoft Connect (Microsoft)

https://connect.microsoft.com/site/sitehome.aspx?SiteID=154


インストーラをダウンロードしたら、実行してインストールする。



次に、Virtual ServerでisoイメージをCD/DVDのバーチャルドライブとしてキャプチャする。

VirtualServer16

(クリックで拡大)


そして、CD-ROMデバイスをマウントして、rpmコマンドでパッケージをインストールする。

(RPMを扱えないディストリビューションはtarボールに変換すればいい)


vmadd-fullというパッケージには全ての機能が入っているので、面倒ならコレでいいと思う。


また、モジュールのコンパイルにgccとかkernel-develが必要になるので、あらかじめ用意しておくこと。


競合するファイルがある場合は、--forceを忘れずに。

VirtualServer17
(クリックで拡大)



インストールが終わったら、面倒なので再起動する。


と?ここで起動中に2種類ほどエラーが目に付いた。

VirtualServer18

(クリックで拡大)


とりあえずvmadd-scsiはSCSIデバイスが存在しない為にエラーになっているようなので、chkconfig vmadd-scsi offで起動しないようにしておいた。


もう1つは何か呼べないコマンドがあるようなので、とりあえず起動スクリプトを見てみることに。


するとどうやら、ディストリビューションを判別して起動の成功or失敗の表示方法を変更しているらしいことが分かった。

VirtualServer19

(クリックで拡大)


それで対応するコマンドがなかった為にエラーを吐いていたようだ。


面倒だったので、とりあえずsystem=unknownのトコロをsystem=debianに変えておいた。
(手抜きだけどechoなら間違いがない限り使えるでしょという判断)



ま、そんなこんなで起動中のメッセージも正常化されましたとさ。

VirtualServer20

(クリックで拡大)

Virtual Serverにインターネットからアクセスするなら、SSLで暗号化した方がいいだろうと考えた。


思い立ったら即実行だ。

(特にコレはセキュリティに関わる問題でもあるし)


というワケでサーバ証明書をインストールすることにした。



まずは、自己署名の証明書を作ることにした。


以前ならこれを作る為に証明機関(CA)とかOpenSSLをインストールしなければならなかったが、IIS7ではこの機能が標準で提供されているらしい。


なので、さっそく試してみた。



まず、[IISマネージャ] を起動し、ホームの [機能ビュー] から [ サーバー証明書 ] を開く。

VirtualServer06

(クリックで拡大)


[サーバー証明書] の画面に移ったら、右ペインの [操作] から [自己署名入り証明書の作成] を開く。

VirtualServer07

(クリックで拡大)


次に、証明書のフレンドリ名を入力し [OK] をクリックする。

VirtualServer08

(クリックで拡大)


・・・アレ?もうできてる。。

VirtualServer09

(クリックで拡大)


ええええええええええええええええええ


早っ!!


あっさりすぎて妙に不安になるのはオレだけですか?



と、ともかく証明書の作成が完了したのでVirtual Serverに実装することにする。


まず、Webサイトのホームに移動し、右ペインの操作から [バインド] を開く。

VirtualServer10

(クリックで拡大)


[Webサイトバインド] が開いたら、[追加] をクリックする。

VirtualServer11

(クリックで拡大)


[Webサイトバインドの追加] が開いたら、種類を [https] に設定して証明書を選択し、[OK] をクリックする。

VirtualServer12

(クリックで拡大)



この時にポート番号を変更してもいいし、使わないなら [http] の方は削除してもいいだろう。

VirtualServer13

(クリックで拡大)

ちなみに、証明書の発行先はマシンのホスト名になっているので、それ以外のアドレスでアクセスすると証明書エラーが出てしまう。

VirtualServer14

(クリックで拡大)

しかし、このエラーは単なる警告なので、続行する選択肢を選べばいい。



それにしてもIE7の警告はちょっと過剰だと思う。(もちろんいい意味で)

VirtualServer15

(クリックで拡大)

絶好調なので今日も更新するぜー。

といっても大したことやってないのでVirtual Serverに関する小ネタをひとつ。

MSCSをやろうと思って複製を作ってた時に、そのマシンデータを追加しようとしたらエラーが発生した。

それがコレ。
VirtualServer05


「バーチャル マシンを追加できませんでした。 この名前の構成は既に存在します。」とかなんとか。

それで「VMCファイル内のデータがおかしいのかな」と思い、修正してみるも効果なし。

内部的にデータ持ってるのかなー。レジストリとかにあったらヤダなー。」と思って調べていたら意外なトコロに答えがあった。

Microsoft サポートオンライン (Microsoft)

http://support.microsoft.com/kb/555618/


要するに"%systemdrive%\Documents and Settings\All Users\Application Data\Microsoft\Virtual Server\Virtual Machines"のディレクトリにショートカットを保持しているが為に不整合(?)が起こるらしい。

これを解決するには上記ディレクトリの同名のショートカットを削除するか、新しく追加する方のVMCファイルの名前を変更すればいい。

こんなことの為に10分ぐらい迷ってたよ(・ω・`)

それはそうとMicrosoftの自動翻訳は一向に改善されないなー。オリジナルの英文見た方がよっぽど早いんだけど。

最近は仮想化ソフトにMicrosoft Virtual PCを使っていたんだが、ふと興味が沸いたのでMicrosoft Virtual Server使ってみることにしたのよ。


そしたらコレがなかなかハマってしまってねぇ
(いや、問題にぶちあたったって方の意味じゃなくてね)


まずTOPがオレ好み。

VirtualServer01


仮想マシンの状態が一覧で見れるから、ホントにサーバ群を管理してる気分になれる。


また、仮想マシンの操作がブラウザでも可能なのも嬉しい。

VirtualServer02

(ちゃっかりLonghorn)


仕事中にちょっと確かめたいことがあったりすると自宅の仮想マシンにいつでもアクセスできるのがイイ。



それに、CPUリソースの割り当ても決められるから多い日も安心(?)

VirtualServer03



ちなみにVirtual PCからの移行はほとんど手間いらずだった。


もうちょっと早くから使っておくべきだったな。。


あ、もちろんLinuxだってスイスイだぜっ。

VirtualServer04


あんまり関係ないけど、仮想マシンでは概ねVineを使ってる。


CDイメージがコンパクトだし、手間がかかんなくてカワイイから。

(もちろん異論は認めるぜ)



ちなみにこのVirtual ServerではMSCSのクラスタも実現可能らしい。


それは次の機会にでも紹介するっさ。

Safari for Windows入れてみたぜ。


でも日本語未対応だったよ(・ω・`)


----------------------------------------------------------


・問題解決について
問題には、原因と結果のつながりを把握し、適切に対処することが肝要です。この原因と結果のつながりを因果関係といいます。
対処に至るには、得られた事実から仮説を立てる必要があります。この時、先入観などに影響されて間違った仮説を立ててしまい、なかなか対処できなくなってしまう場合があります。


・因果関係と相関関係について
ある技術者に「最近サーバのパフォーマンスが悪いので調査してほしい」という依頼が来ました。技術者が調査したところ、HDDの空き容量が2割ぐらいしかないことに気づきました。
そこで、対処として不要なファイルを削除したのですが、パフォーマンスが改善する気配はありませんでした。

この場合、原因は恐らくディスクの断片化であり、正しい対処としてはデフラグツールを実行することです。確かに、空き容量が減少すると断片化が発生しやすくなりますが、空き容量の減少は直接の原因ではありません。
このように、因果関係はないものの、第3の因果によって関連性が生まれてしまうことがあります。因果関係ではない関連性を相関関係といいます。
相関関係と因果関係を取り違えるとベクトルが90度違ってしまうので、注意が必要です。

lecture07

(クリックで拡大)


・因果関係の錯誤について
ある技術者に「最近DBのパフォーマンスが悪いので調査してほしい」という依頼が来ました。技術者が調査したところ、サーバ間のトラフィックが過多になっていることに気づきました。
そこで、ネットワーク機器の差し替えや負荷分散を提案したのですが、予算の都合で先延ばしになっていました。しかし、ある時を境にトラフィックの過多はなくなっていました。話によると、ちょうどDBの設定を変更した頃だったそうです。

この場合、トラフィックがDBに影響を与えていたのではなく、DBがトラフィックに影響を与えていた、というのが正しい因果関係です。
このように、因果関係の錯誤とは「原因と結果を逆に捉えてしまうこと」をいいます。
原因と結果を取り違えるとベクトルが180度違ってしまうので、注意が必要です。

lecture08

(クリックで拡大)


・相関の錯覚について
ある技術者に「最近アプリケーションのパフォーマンスが悪いので調査してほしい」という依頼が来ました。技術者が調査したところ、利用しているDBサーバのメモリがほぼ最大まで使用されていることに気づきました。
そこで、メモリを2倍に増設してみたのですが、改善する気配はありません。調べてみると、それはメモリを確保しておくというDBの仕様だったのです。結局、原因はアプリケーションの欠陥でした。

この場合、アプリケーションのパフォーマンスとメモリの使用量の間には何の関係もありません。
このように、相関の錯覚とは「実際には相関関係がないにも関わらず、相関関係があると思い込んでしまうこと」をいいます。
単なる偶然を因果と取り違えると、ベクトルが270度(あるいはそれ以上)違ってしまうので注意が必要です。

lecture09

(クリックで拡大)


本講義では分かり易い例を挙げましたが、実際の業務ではもっと複雑な問題と対峙することになるかもしれません。
しかし、問題の切り分けや証拠の裏づけをキチンとすれば、これらの間違いを避けることができます。

----------------------------------------------------------

つづく

ついになかのひと(ベータ版)の最南端が沖縄になったよ。

(やったね。何がと聞かれても困るが)


次は各県からのアクセスを目指すぜ。


技術屋日報はなかのひと.jpを応援しています。


----------------------------------------------------------


・論理的思考について
論理的思考とは、「明確な根拠に基づき、道筋を立てて考え、結論を出すこと」です。
的確な判断や問題解決には、論理的思考が不可欠です。
しかし、人間は環境や感情に流されやすい生き物なので、なかなかこのような思考方法をとることができません。


・三角ロジックについて
三角ロジックとは、論理的な思考の基礎となる考え方です。名前のとおり三角形の構造をしており、「論拠」・「証拠」・「結論」という3つの要素によって構成されています。
証拠は、客観的な事実を指します。論拠は、証拠を基に結論に至る理由を指します。
これらを合わせることで「根拠」となります。
lecture04

(クリックで拡大)


論拠と証拠から結論を導き出す例を挙げてみましょう。


論拠: 今回のシステムには、統合管理が不可欠だ。
証拠: A社製品は統合管理をサポートしている。
結論: システムはA社製品に統一するべきだ。


これが基本形ですが、この例にはお気付きのとおり「穴」があります。言い換えれば、あまり論理的とはいえないということです。
まず、統合管理をサポートしているのはA社製品だけなのでしょうか。他社製品でも統合管理をサポートしているのなら、A社製品に統一する根拠には至りません。他社の競合製品と比較した際の優位性などを別途検討する必要がありそうです。
(ハードウェアレベルの統合管理が可能、メーカーサポートの対応が迅速、など)
また、もう1つ気になるのは、統合管理がなぜ不可欠なのかが不明であるという点です。この論拠が成り立たないなら、そもそも統合管理のサポートという観点から製品を選定する必要はありません。
lecture05

(クリックで拡大)


このように論拠が不確かな場合は、さらにその根拠が必要になる場合もあります。この場合は、論拠を結論に据えたもう1つの三角ロジックを形成し、論拠を補強します。以下はその例です。


証拠1: 同様の事例があり、統合管理によりコストの低減に成功している。
証拠2: 同様の事例があり、頑なに拒んだ企業があった。このまえつぶれた。
論拠: 今回のシステムも事例に違わぬ大規模さと複雑ぶりで、個別に管理していては膨大な管理コストが必要になる。
結論: 今回のシステムには、統合管理が不可欠だ。


このように三角ロジックが連なる構造を、階層三角ロジックといいます。

lecture06

(クリックで拡大)


----------------------------------------------------------

つづく

ちょっと区切りが変だったので前回掲載した分を一部こっちに移した。


----------------------------------------------------------


・アプローチについて
もっとも、全ての人が完全なアーキテクチャを把握する必要はありません。業務上必要になるメンタルモデルは、担当する分野によって異なるからです。
例えば、ネットワーク構成を設計する際に重要なのは、各機器の役割であり、その厳密な動作ではありません。この場合はアナロジーを用いた方が良いでしょう。
(ただし、技術的に実現可能かどうか検討が必要な場合もあります。)
逆に、システムで予期せぬ動作やトラブルが発生したといった場合は、アーキテクチャを意識した対応が肝要です。これは、個人の思い違い(メンタルモデルの誤差)によって間違った対応をしてしまったり、更なる不幸を招いてしまったりする恐れがあるからです。

また、新しい技術と向かい合う場合は、自身のメンタルモデルを意識することにより、その位置づけを明確に出来ます。同じ技術でも、担当する分野によって捉え方が異なるのが自然なことであり、むしろそうあるべきなのです。極端な話をすれば、インフラ担当者にとって新しい開発言語の登場などどうでもいいのです。
(一概にそうとも言い切れませんが、あくまで極端な話なので。)


・バイアスについて
バイアスとは、偏見や先入観を指す言葉です。
バイアスは技術の正確な理解を妨げます。自身の思い込みで物事を捉えたり、古い情報にいつまでも影響されたりしてしまうのは、このバイアスの働きによるところが大きいのです。
もっとも、認知におけるバイアスの本来の役割は、脳にかかる負担を軽減することにあります。これは、ある情報の内容の一部を無視したり、特定の記憶に優先して連動させたりすることで実現しています。
また、確証バイアスという言葉もあります。これは、自己の先入観に当てはまる情報だけに着目し、先入観を補強しようとする心理です。持説に確証が乏しいほどこの働きは強くなります。(もっともこれは社会心理学に分類されますが)
これらのバイアスは、完全に回避することこそできませんが、その影響を軽減することはできます。それには、客観的に物事を捉えること、自身のバイアスに対する意識を持つこと、そして論理的に物事を捉えることが必要です。

では、論理的に物事を捉えるとはどういうことなのか、軽く触れて見ましょう。


----------------------------------------------------------

つづく

この文章は自社の研修で使用した資料の写しです。

特に問題がない限り、内容は原文のままで掲載します。

なお、図は講義中にホワイトボードに書いたものを再現したものです。


----------------------------------------------------------


・認知心理学について
認知心理学とは、知覚・理解・思考・記憶・学習といった認知活動を、情報処理の観点から研究する学問です。もっとも、これを用いたアプローチ方法を考えるのが今回の趣旨であり、この学問自体が議題というわけではありません。


・アナロジー(類推)について
アナロジーとは、物事をそれに似た性質のものに置き換えて理解することです。
この方法は、ごく一般的にOSのGUIなどにも利用されています。例えば、デスクトップ・フォルダ・ファイル・ごみ箱などは、コンピュータの実際の動作を意識させることなくその役割を把握することが出来ます。これも一つのアナロジーです。
このアナロジーを活用して技術を捉えることにより、暗記などで覚えるよりもはるかにスムーズに技術を習得することが出来ます。

lecture01

(クリックで拡大)


・メンタルモデルについて
メンタルモデルとは、物事の構造や機能に対するイメージのモデルです。学習された内容は、頭の中でメンタルモデルとして形成されます。
このメンタルモデルを意識して他の物事を学習することは、理解を早めると同時にその関連性を把握することにも繋がります。例えば、ファイルを入れる場所はフォルダ、といったような役割・関連性のモデルを頭の中に描くことができます。
しかし、ここで注意が必要なのは、「実際にハードディスク上にフォルダの領域があって、その領域内にファイルを保存したりしている訳ではない」ということです。メンタルモデルはあくまで頭の中で作られたイメージでしかないので、実際の動作との差異が見受けられた場合は都度修正する必要があります。

lecture02

(クリックで拡大)


・アーキテクチャについて
アーキテクチャとは、構造や設計思想を指す言葉です。対象が実際にどのような原理で動作しているかは、すべてこのアーキテクチャによって決められています。
先程の例に戻りましょう。
ファイルやフォルダといったデータは、ハードディスク上では管理領域とデータ領域に分けて保存されています。管理領域にはファイル・フォルダのサイズ、実際のデータ領域での位置、アクセス権などの情報が格納されています。また、データ領域には実際のデータが格納されています。OSは管理領域を元に、実際のデータを読み出す訳です。
このように、見かけの動作と実際の動作は異なる場合があるので、メンタルモデルをアーキテクチャに近づけていくことが求められます。
また、アーキテクチャの本質が変化することはそうそうない為、覚えたことが無駄になることもそうそうないといえます。

lecture03

(クリックで拡大)


----------------------------------------------------------

つづく