読者です 読者をやめる 読者になる 読者になる

インフラSE日記

OSS、仮想化、金融工学、ゲーム、ときどきラーメン

Nutanix CE構築手順

家のNutanix CEの仮想マシンが壊れたので、再構築してみました。

自分への備忘として、構築時の手順を以下に記載します。

構築してからスクリーンショットをとってないことに気づきましたが後の祭りでした。

構築所要時間は1時間くらいです。

 

■構築環境

 仮想基盤:VMware Workstation Pro

 メモリ:16G

 vCPU:4

 HDD1::200GB(Hot)

 HDD2:500GB(Cold)

 Nutanix Host IP:192.168.197.11

 CVM IP:192.168.197.21

 

1. Nutanix CEのインストール
1-1. Nutanix CE用のimgを下記URLからダウンロードする
 【URL】
  http://next.nutanix.com/t5/Discussion-Forum/Download-Nutanix-CE-Docs-and-Guides/m-p/3188#U3188
1-2. 1-1.で取得したimgファイルを解凍し、ファイル名を「ce-flat.vmdk」に変更する
1-3. Nutanix用のVMDKファイルを下記URLからダウンロードする
【URL】
  https://www.virtuallifestyle.nl/2015/06/nextconf-running-nutanix-community-edition-nested-on-fusion/
 【ファイル名】
  ce.vmdk
1-4. Nutanix用の仮想マシン(以下Nutanix01とする)を作成する
 メモリ:16GB
 プロセッサ:4
 ブート用メディア:ce.vmdk    SATA
 Hot Disk(SSD):200GB   SCSI(0:0)
 Cold Disk(HDD):500GB SCSI(0:1)
1-5. NutanixをBIOS起動する
下記をvmxファイルに追記
vhv.enable = "TRUE"
bios.forceSetupOnce = "TRUE"
1-6. [Boot]->[Hard Drive]より起動ディスクの優先順位をSATA(ce.vmdk)に変更し、再起動する
1-7. Nutanixにログインする
 ユーザ名:root
 パスワード:nutanix/4u
1-8. 下記コマンドを実行し、認識しているディスクを確認する
 【コマンド】
  fdisk -l
1-9. 下記コマンドを実行し、Hot Diskとして認識させたいデバイスを擬似的にSSDとして認識させる
 【コマンド】
  echo 0 > /sys/block/sda/queue/rotational
  cat /sys/block/sda/queue/rotational
1-10. 下記ユーザ名入力し、ログインする
 【ユーザ名】
  install
1-11. キーボードのレイアウトを指定する※1
 【レイアウト】
  jp106
1-12. ネットワーク設定を行う
・Host IP Address
・Host Subnet Mask
・Host Gateway
・CVM IP Address
・CVM Subnet Mask
・CVM Gateway
DNS Server

1ノード構成の場合、下記にチェックを入れる※2
 Create single-node clusrter?

 ※2チェックを入れインストールすると後のクラスタ構築時に失敗することがあるため、チェックを入れない

1-13. EULAを最後まで読んで、「I accept the end user license agreement.」にチェックを入れる
1-14. Nutanixのインストールが終了するまで待つ

 

2. クラスタの構成
2-1. 下記ユーザ名とパスワードを入力し、CVMにログインする
 ユーザ名:root
 パスワード:nutanix/4u
2-2. 下記コマンドを実行し、クラスタを構成する
 【コマンド】
  cluster -s <CVMのIPアドレス>
2-3. 下記コマンドを実行し、DNSサーバを設定する
 【コマンド】
  cp -p /etc/resolv.conf /etc/resolv.conf.default
  cluster add-to-name-servers servers="8.8.8.8"
  cat /etc/resolv.conf
2-4. 下記URLアクセスし、管理コンソール(PRISM)にログインする

 https://192.168.197.21:9440/

2-5. 下記を入力し、パスワードを設定する
  ユーザ名:admin
  パスワード:admin
2-6. PRISM初回ログイン時、「NEXT username」と「NEXt password」を入力し、認証する
  [NEXT username」はNutanix NEXTに登録しているメールアドレス

2-7. [admin] > [Nothing To Do?]をクリックして2048で高得点を出す

 

 Nutanixの入門書が出ていたので思わず買ってしまいました。

まだ、途中までしか読めていませんが思ったよりも詳しいことを書いています。

GW中に読了したいです。

Nutanix Hyper Converged Infrastructure入門

Nutanix Hyper Converged Infrastructure入門

 

 

 

そんな感じです。

 

 

 

Zabbixについて

家のサーバを監視するために最近Zabbixを導入してみました。

使い始めて1ヶ月位しか経ってませんが、良いと思う点と良くないと思う点について書いてみたいと思います。

 

■良いと思う点

1. オープンソースであるため、イニシャルコストが0

 僕はUbuntu 14.04の環境にインストールしたのですが、インストールもそれほど難しくなかったです。Zabbix Agentの導入は少し苦労しました。

2. テンプレート機能

 ホストが増えると楽になりますね。同じような設定をする場合だと、めんどくささ設定する時間がかなり減ります。

 

■良くないと思う点

1. 監視抑止をスケジュールで制御できない

 バックアップや、バッチ処理およびメンテンス等のためこの時間帯は監視を抑止したいという時があると思います。それがホストやトリガー単位でできないのはめんどくさいですね。正確に言うとトリガーだと、トリガー関数のtime()やdate()を使えばできるのですが、スケジュールと閾値の設定は別にしたいです。SiteScopeは監視抑止の制御をスケジュールでできるんですが。。

2. 「概要」画面でホスト名が固定表示でないため下にスクロールするとホスト名が見えなくなる

 これはただの表示の問題なので、監視に直接関係ないところです。概要画面を見ていて下にスクロールするとホスト名が流れちゃって、どのホストが障害が起きてるかわからなくなるんですよね。Zabbixって正直表示が見やすいとは思わないです…。

3. 正規表現チェッカーがない

 ログ監視するときに、ほぼ正規表現使うと思います。普通、ログ監視に限らず、監視設定を行うとテストを実施すると思います。監視したい文字列と自分が設定した正規表現がマッチするかテストしたいのに、テストツールがないから外部のツールを使うしかないですね。そもそもZabbixって設定に対するテストができないのでは、と思ってます。そもそもZabbixのログ監視ってなんか怪しいですよね、、

 

話のネタがない+幼女問題が解けてないためZabbixについて書いてみました。

ほとんどZabbixへの愚痴になってしまいましたが、オープンソースなのでもっともっとこれから向上していくでしょう。

(自分でコミッターになればいいじゃんて思うのですが、そんな実力もないので。不甲斐なさすぎる。。)

 

ログ監視について調べるため、Zabbixのソースコード読んでいます。

次は幼女問題かZabbixのソースコードリーディングについてかな。

nginxのソースコードリーディングも放置しているのでやりたいですね。

それとNutanixも。「Nutanix Hyper Converged Infrastructure入門」買いましたが早速積んじゃってます。

 

週1くらいで更新していきたいです。

そんな感じです。

 

 

 

 

200人の赤と青の幼女のお祭り

みなさん幼女問題ってご存知ですか?

幼女とは「幻の女」の略で、論理的思考にのみ従う悪魔(天使?)のことです。

ラプラスの悪魔みたいに、超越した存在のことを悪魔っていうことがありますね。

 

ブログを書く書く言っておきながら全く書いていなかったので幼女問題に挑戦してみました。

 

問題は以下の通り。

08.200人の赤と青の幼女のお祭り

ある村に住む200人の幼女は、この時期になると髪の毛の色が変わる。
赤か青になるのだが、自分では自分が何色に変わったか見ることができない。
赤も青も少なくとも一人は存在することが保証されている。

そしてこの時期になると、幼女たちは自分の色を知るためのお祭りを開催する。
お祭り期間中、幼女たちは広場に出かけて、交流をする。
このとき、髪の色について話題に出してはいけないが、他人の色を見ることは構わない。
そして、自分の色がわかったひとは次の日広場に出かけず、家にこもる。

つまり、祭り初日は200人の幼女が広場に来るが、数日後には自分の色がわかったひとが来なくなり、最終的には誰も来なくなる。
誰も来なくなったときに、祭りは終了する。

今年の幼女の髪の色は赤100人、青100人だった
このとき祭りが終了するのは何日後か?

 

 

以下、僕の回答。

100日後。

 

赤い髪の幼女がn人、青い髪の幼女がn人いると一般化して考える。
「赤も青も少なくとも一人は存在する」を☆で表す。
また、赤い髪の幼女から連番を振り、幼女1, 幼女2, ..., 幼女n+1, ... , 幼女2nとする。

(i)n=1のとき
赤い髪の幼女が「自分は青い髪である」と仮定すると
条件☆に矛盾するため、赤い髪の幼女は自分が赤い髪であるとわかる。
青い髪の幼女も同様であるため、1日後に2人とも来なくなり祭りは終了する。

(ii)n=2のとき
幼女1が「自分は青い髪である」と仮定すると、幼女2は「自分以外3人は全員髪が青い、条件☆から自分の髪は赤い」とわかるはずである。
すなわち、幼女1は翌日幼女2が来なければ自分の髪の毛は青い、翌日幼女2が来たら赤いと判断することができる。
同様に幼女2も考えるはずである。
幼女1, 2ともに髪が赤く翌日来るため、当日自分の髪は赤いとわかる。
幼女4, 5, 6も色が自分の髪の毛の色が青になっただけで考え方は同様である。
1日後全員が自分の髪の色がわかり、2日後に全員来なくなり祭りは終了する。

(iii)n=3のとき
幼女1が「自分は青い髪である」と仮定する。
さらに幼女2がこの仮定の下、「自分が青い髪である」と仮定すると、
幼女2は「自分以外3人は全員髪が青い、条件☆から自分の髪は赤い」とわかるはずである。
すなわち、幼女2は翌日幼女3が来なければ自分の髪の毛は青い、翌日幼女3が来たら赤いと判断することができるはずである。
翌日幼女3が来るため、幼女2は自分の髪の毛の色が青いとわかる。
幼女2が2日後も祭りに来た場合、幼女1の「自分は青い髪である」の仮定が間違っていたことになるため、幼女1は2日後に自分の髪の色が赤いとわかる。
同様に幼女2, 3も考えるはずである。
幼女4, 5, 6も髪の毛の色が青になっただけで考え方は同様である。
2日後に全員が自分の髪の色がわかり、3日後に全員来なくなり祭りは終了する。

(i)~(iii)からn日後に祭りが終了すると予想できる。

(iv)n=kのとき
幼女1が「自分が青い髪である」と仮定する。
さらに幼女2, ..., 幼女k-1がこの仮定の下、「自分が青い髪である」と仮定すると、
幼女kは「自分以外2k-1人は全員髪が青い、条件☆から自分の髪は赤い」とわかるはずである。
すなわち、幼女k-1は翌日幼女kが来なければ自分の髪の毛は青い、翌日幼女kが来たら赤いと判断することができるはずである。
k-1日後に幼女2, 3, ..., kが祭りに来た場合、幼女1の「自分は青い髪である」の仮定が間違っていたことになるため、
幼女1はk-1日後に自分の髪の色が赤いとわかる。
同様に幼女2, 3, ..., kも考えるはずである。
幼女k+1, ..., 幼女2kも髪の毛の色が青になっただけで考え方は同様である。
k-1日後に全員が自分の髪の色がわかり、k日後に全員来なくなり祭りは終了する。

 

以上から100日後に祭りが終了することがわかる。

 

 

 

補足

100%合っている保証はありませんので、ご了承ください。

にしても幼女だらけの村ってすごいですね。祭りといえば僕は何故か金田一少年の事件簿の「雷祭殺人事件」を思い出すんですが、僕だけですかね?

 

次は別の幼女問題に挑戦するか、ZabbixかOracleあたりのことを書きたいです。

せめて週1の更新にしよう。。

 

そんな感じです。

SIerという業界について

最近全く日記を書いていないことに気づきましたので、久々に日記を書こうと思います。

 

技術系の記事じゃなく、今回の記事は「SIer」という日本独自の発達した謎の業界について思ったことを正直に書こうと思います。

他の方も同じような内容を書いていらっしゃいますが、それでも僕は自分が思ったこととして書こうと思います。

もちろん、全てのSIerに当てはまることはないと思います。

SIerに勤めているSEの中には真のエンジニアの方もいらっしゃると思います。

 

思ったことは4つ。

1. システムエンジニアはエンジニアではない

2. 保守・運用はできるだけ自動化すべき

3. 工数という奴隷制

4. Office3種の神器(ExcelPowerPoint、Word)の害悪さ

 

一つずつ書いていきます。

 

1. システムエンジニアはエンジニアではない

 僕は、ITの分野では「技術」は以下の二種類あると思っています。

 ①既存のものを組み合わせる

 ②新しいものを生み出す

SIerは①が得意です。多くのベンダが提供している製品の「仕様」を知っているので、それらを組み合わせて顧客の望むシステムを構築します。

あくまで知っているのは「仕様」だけです。「実装」なんて多分知りませんし、知ろうともしていなんじゃないかと思います。

プロプライエタリなソフトウェアは逆アセンブルでもしないと仕様を知ることはできませんが。。

他人の褌で相撲を取っている状態ですね。

製品の仕様についてわからないことは「問い合わせ」という魔法の言葉を使ってベンダに丸投げです。

確かに、「システム」という新しいものを生み出しているという点では②も当てはまるのかもしれませんが、社内や顧客の中だけで使われるシステムにすぎず、一般のベンダやエンジニアが使う製品やシステムは生み出していないわけです。

(これは多分自分がB2BというよりB2B2Cを強く意識しているからかもしれません)

プログラミングできるSEなんてほとんどいません。

 

「ビジネスなのだから、ただプログラミングができるだけではダメで、プログラミングすることによってビジネス(ひいては利益)につながることをすべきである。だからSEはプログラミングができるできないの議論はズレている」という意見ももちろんあります。私も一部ではその通りだと思います。企業は慈善事業じゃないですから、株主のために利益を出す必要があります。ビジネスモデルの中での話ではなく、あくまでエンジニアとしての話をすると、プログラミングできないSEなんて価値がないです。

プログラミングして製品を生み出して利益を出すという話ではありません。プログラミングができないとOS、仮想化、ネットワークなどの技術を真に理解できないからだと思っているからです。これではエンジニアなどと到底呼べません。

 

ついで言うとSIerは「実績」にやたらこだわります。「実績」というのはつまり「過去にやったことがあるかどうか」です。「実績」がないものはやたら使いたがりません。

理由は単純で「わからない」からです。いつになったら新しいものを使うんでしょうか。ずっと同じものを使い続けるんでしょうか。

 

結論:システムエンジニアはエンジニアではない。(プログラミングを学ぶべき)

 

2. 保守・運用はできるだけ自動化すべき

構築・開発したら終わりというシステムはこの世に存在しません。必ずシステムを利用するユーザーがいます。そしてシステムが正常に動いているかを確認したり、ユーザーからの追加の要望やシステムの設定変更などをする必要があります。

保守・運用は人間が作業する箇所を徹底的に減らし、自動化した方が絶対いいです。

ミスも減りますし、人件費も減ります。もちろん、全てを自動化できるわけではありませんので、必ずどこかで人間が介入しなければなりません。設定変更する必要があるかどうかなどの「判断」を人間がして、設定変更などはスクリプトなどで自動で設定できるようにすればいいのです。

 

結論:保守・運用はできるだけ自動化する

 

3. 工数という奴隷制

SIerの多くは「工数」「人月」という単位で予算を作成します。

他の方も同じ表現をされていましたが、現代に蘇った奴隷制度です。

一人一ヶ月働いたら◯円で計算します。ここに効率化なんて概念はありません。

構築・開発に10ヶ月かかるシステムを新たな技術を取り入れることによって5ヶ月にすることに成功したSEは給料が半分になるのでしょうか?

さらに言えば、人月や工数が妥当かどうかどうやって判断しているのでしょうか?

効率化すればするほど利益が減る、そんな素敵なシステムなのです。

 

結論:SIer奴隷制度を容認している

 

4. Office3種の神器(ExcelPowerPoint、Word)の害悪さ

仕様書などのドキュメントはMicrosoftが提供しているOfficeで作成することが多いです。というか、SEの大半の仕事はExcelとWordとにらめっこすることです。

本来記述している内容が最も大切なはずなのに、体裁やフォーマットなどにこだわって無駄な時間をかけていると感じました。

HTMLとCSSの分離と同じで「書く内容」と「文字などの装飾」は分離する必要があると思います。(極端なことを言うとドキュメントなんてテキストエディタでもよいかもしれない)

 

更に言うとExcelをデータベース代わりに使っていることが多いです。

エンジニアとしてあるまじき行為だと思います。

もしExcelのファイルが壊れたら? 誰かが悪意を持って改ざんしたら? いつ誰が、何から何に更新したか管理できるか? バージョン管理はできるのか?(デグレが起きたらどう対応するのか?) などなど。

 

Excelデータベースは止めて、MySQLOracleなどのDBを使って管理するべきだと思います。費用面・管理のしやすさという点ではExcelのほうがいいかもしれませんけど。。

本来最も大切な内容が、体裁・フォーマットなどによって情報量が落ち、品質が低下シている気がします。

 

結論:すべてのドキュメントをOffice、PowerPoint、Wordで書くのは止めるべき

 

 

以上です。

次はずっと考えている数学の問題について書きたいと思います。

 

 

そんな感じです。

chroot/jailは仮想化技術なのか

chrootとは

chrootは実行するプロセスのルートディレクトリを変更するシステムコールである。

chrootによって実行されたプロセスは、指定されたディレクトリを"/"だと思い込んで実行するため、それ以上の階層のディレクトリにアクセスすることはできない。これは"chroot監獄"などと呼ばれる。

chroot実行

実行環境:Ubuntu 12.04 64bit

実行コマンド:chroot /myroot ls

ディレクトリ構成

/myroot

 |_bin/bash

   |_bin/ls

   |_lib/ld-2.19.so

   |_lib64/ld-linux-x86-64.so.2

 

実行できませんでした。下記のエラーメッセージが出力された。

chroot: failed to run command ‘/bin/bash’: No such file or directory

 

今回の記事の目的はchrootを実行することじゃないから原因究明については

後ほど。でもこれなんかモヤモヤする。早く解消したい。

 

chroot/jailは仮想化技術なのか

前々からchroot/jailは仮想化じゃないと思ってました。その理由を述べます。

その前に、仮想化ってなんでしょうか。みんな当たり前に使っていて、実はよくわかっていないバズワードになっているのではと感じています。

wikipediaによると、「リソースの抽象化」って書いてますが、僕は仮想化とは「物理的な実体を論理的に一つのもの、または複数に見せかける」ことだと思っています。

そうすると、ハードディスクに書き込まれた0/1列を1つのファイルに見せるファイルシステムも仮想化ってことになるけど、これはどうなるんだろう…。OSもマルチプロセスも仮想化ってことになりますね。仮想化の技術の1つとしてマルチプロセス(物理CPUのリソースを分割するタイムシェアリング)があるのか…。卵が先か鶏が先かみたいな話になってしまいました。話を戻します。

 

chroot/jailは最上位のディレクトリをホストOSのルートディレクトリ以外のディレクトリにすることによって、ファイルシステムが複数あるように見せかけています。サンドボックスの役割を果たしています。

 

僕がchroot/jailを仮想化技術じゃないと思う理由は次の通り(というより、chroot/jailが仮想化技術と呼ばれていることへの個人的な不満になりますw)

1. カーネルが共通である

2. 囚人の見せかけられたファイルシステムは看守からアクセスできる

3. 囚人のプロセスは看守から見ることができる(killも可能)

 

 つまり、リソースの観点からは本当に閉じていないのです。

だから、chroot/jailを仮想化技術と呼ぶことに対して心理的な抵抗があります。

似たようなことを他の方もおっしゃっていました。ちなみにその方は「半仮想化」って読んでいましたね。なるほど!

 

ちなみに、抽象化は「対象から詳細を捨象し、考えるべき要素・概念を減らすこと」です。端的に言えば「こまけぇことはいいんだよ!」です。

 

最後に

他にも似たような技術にLXC/Dockerがありますね。ここらへんは全く知識がないので、ぜひ勉強していきたい分野です。

なんかただの愚痴?みたいになってしまいました。まだまだ未熟なのでさらに仮想化について学んでいきたいです。

VMware Workstationの仮想アダプタのIPアドレスが勝手に変更されていた件

ある日突然、VMware WorkstationのNAT用のアダプタvmnet08のIPアドレスが勝手に変更されていました。構成ファイルも変更した記憶もないし、NATサービスを再起動した記憶もないです。(そもそも仮想アダプタの構成ファイルを変更していないからNATサービスを再起動したとしても変更されないはず)

 

構成ファイルvmnetdhcp.confとvmnetnat.confを確認すると、確かにvmnet08の設定が変更されていました。

もしかすると自分で気づかないうちに何か処理をして変更してしまっているのかもしれません。わざわざ家の環境でログ監視なんてする気になれなかったので、一個一個ログを追わないといけないからめんどくさいと思ってしまっている…

 

仮想マシンIPアドレスが変更されて、以下行ったこと。

①hostsの書き換え

 DNSサーバ構築すればいいんですけどね、よくしらないからhostsに

 頼っていました。

 これを期にDNSサーバ構築してみようかな、、

②Nutanix再構築

 僕の技術力不足であることは確実ですが、Nutanixの基盤とCVMのIPアドレスの変更

 方法がわからなかったので、最初から構築しなおしました。

 1~2時間位はかかりますね。

 

めんどくさいから、IPアドレスが変わった原因については放置かも。

DNSサーバは学習する価値ありですね。やっぱりBindですかね、、

 

 

ニセコイが終わって少し哀しいです。

そんな感じです。

エクセルの関数についての疑問

最近仕事が忙しくて全く書いていないことを思い出しました。

いやすみませんずっとゲームやってました。

魔女と百騎兵

攻略しました。

 

結構長かったですね。

でも面白かったです。

(ところどころゲームバランスとかシステムへの不満が多少あるのを除いて)

 

さて、エクセルの関数を覚えるの避けてたんですが、「仕事が遅い!」

と怒られてしまってエクセルの関数をマスターしようと思って

エクセルについて勉強中です。

 

以下、エクセルの関数の疑問。

・VLOOKUP関数は何故検索する列を指定できないのか

 というより、何故こんな仕様にしたのかっていう疑問です。

 左端だけってお前…って感じです。

 RDB的な使い方を想定しているだと思います。

 主キーは常に左端にあるとは限らないのでは…?と

 

巷では「エクセルはク◯」ってなってますが、僕は胸を張ってこれを言えるほどエクセルを触っていないと思うので、言えるかどうか判断できるようになるまでエクセルを触ってみたいと思います。

 

vCenterサーバも構築したし次はもっと仮想よりの話がしたいですね。

LVSとかHAproxyのようなLPIC3のこともやっていきたいです。

 

 

 

 

そんな感じです。