DataCore ™ Hyperconverged Virtual SAN （のInstallation Manager for vSphere）と vSphere6.7 で2ノードHCIを作る

今月（2018年10月）リリースされた最新版のvSphere用インストレーションマネージャーを使って手間をかけずに手っ取り早く最小限の2ノードHA仮想化基盤を作ってみます。ウィットネスとか3ノード目のサーバがいらないのが良いです。

##サーバ前提条件
1. ESXiの起動ディスク以外に未初期化（未使用）のディスク1つ以上があること*（このディスクをストレージ仮想化します）*
2. 100GB以上の空きがあるローカルデータストアがあること*（ストレージコントローラVMがのります）*
3. インターネット接続があるNICが1つ以上（VMと管理用）、サーバ間直結のNICが2つ（ストレージ用）あること*（ここでは業務LANやvMotionの帯域や可用性は考慮しない）*
4. データコアサーバー（ストレージコントローラVMの固有名詞）に使用するOSはWindows2016であること


##サーバに最低限の設定をする
####サーバ（のBIOS）の時刻をUTCで設定しましょう！！！
[このあたり](https://go-journey.club/archives/3887)で詳しく解説されています。
これを日本時間にしたままで、仮想マシンがESXiホストと時刻同期をしていると仮想マシンの時刻が数分ごとに9時間行ったり来たりして、のちのち悲惨なことが待ってます。
##ESXiをインストール
2台にESXi6.7をインストールしましょう。
自分の場合は、転がっているUSBメモリに**[rufus](https://forest.watch.impress.co.jp/library/software/rufus/)**でインストーラーのISOイメージを入れてインストールしてます。BMC（iLOとかiDRAC)の仮想DVDより早いので愛用してます。
繰り返し構築するのであれば**[スクリプト](https://docs.vmware.com/jp/VMware-vSphere/6.7/com.vmware.esxi.install.doc/GUID-870A07BC-F8B4-47AF-9476-D542BA53F1F5.html)**も活用したいけど、そんなに機会が多くないので後回し。

![1.jpg.jpeg](https://qiita-image-store.s3.amazonaws.com/0/115778/54df5ba9-a91c-0d3d-6089-ec751379e3d4.jpeg)
（途中省略）
![2.jpeg](https://qiita-image-store.s3.amazonaws.com/0/115778/3c9304da-0d60-05e6-7a2a-a59aa8afcfbd.jpeg)
最近のバージョンはあっという間に終わりますね。

##vCenter Server Applianceをインストール
自分のPC（自分の場合はWindows10)でインストーラーのISOをマウントして、
D:\vcsa-ui-installer\win32\installer.exe（ドライブレターは自分の環境で置き換えて）
を実行してInstallを選択して、流れに沿ってすすめるだけ。

<img width="514" alt="3.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/b5b27352-7e4e-7fe2-0bf0-c4a07bf58a26.jpeg">
そんなに迷うところもなくかなり簡単になってますね。

##vCenter Server Applianceの設定
https://vcsaのIPアドレス:5480/ を開いて、タイムゾーンとNTPだけ設定しておきましょう。
ESXiのログと時刻が揃っていたほうがいいのでUTCにしちゃいましょう。
NTPも設定しておきましょう。
<img width="252" alt="14.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/b76ad814-d69f-acbb-c7cf-82da5c1d96f2.jpeg">

##vCenter Serverまわりの設定
1. データセンターを作る
2. クラスター（とHA）は共有ディスクができるまで後回しでもいいと思います。
3. ESXi2台を登録する
4. おまけ：ESXi2号機のデフォルトデータストア名をDatastore2に変更する**（個人的趣味）**

あっという間ですね。

##Installation Manager for vSphereでHVSAN（Hyperconverged Virtual SAN の略）を構築
+ さていよいよここからが本番です。
+ 初めてさわる人は**[ここ](https://www.datacore.com/products/hyper-converged-infrastructure/download/)**からインストーラーをダウンロードしましょう。
    + フォームを入力して、送られてくるメールのリンク先からファイルをダウンロードします。
    + "Free DataCore™ Hyperconverged Virtual SAN (PSP8) for vSphere"を選びましょう。

+ ダウンロードしてきたZIPファイルを解凍します。
<img width="345" alt="15.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/156f544f-acc1-0ae7-0910-19459135fa31.jpeg">
    + このバージョンからクライアントOS（Windows7とか10とか）からのインストールに対応しました！！
    + が、ファイルサイズが馬鹿でかくなってしまいました。。。
+ DataCoreInstallationManagervSphere.exeを実行すると、まずは自分のPCにインストレーションマネージャーがインストールされます。紛らわしい。
 <img width="346" alt="4.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/4f4465c5-7927-a362-45b5-85c504f9526b.jpeg">
 （途中省略）
 <img width="346" alt="6.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/40f6c10f-7ced-e72d-62aa-f93a5d552cb2.jpeg">


+ スタートメニュー or デスクトップにあるInstallation Manager for vSphereをダブルクリック。
<img width="393" alt="7.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/aca46453-d94a-8f23-1c61-7e3d8907aa39.jpeg">
vCenter Serverのログイン情報を入力しましょう。こんな画面が出てきます。
<img width="393" alt="17.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/8bdf40fa-98f5-581c-0078-0771b66d89ef.jpeg">

+ 少しだけ設定を修正する必要があります。
    + ネットワーク
        + DHCPのチェックを外してスタティックIPを設定しましょう。
        + 上の方にあるESXi hostを切り替えて2台目も同じように設定します。
        + <img width="418" alt="16.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/164aa030-c420-f339-c640-e79cdd5bfcd2.jpeg">

    + 仮想マシン設定
        + Administratorのパスワードを入力します。
        + <img width="193" alt="18.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/d8eec189-7760-1a1f-a16a-23f537247b60.jpeg">
    + Deployボタンを押す！
   
2台同時にESXiの設定、仮想マシンの作成、ゲストOSのインストール、ソフトウェアのインストールと設定が走り始めます。
#####正常に完了することを祈りながら待ちましょう。

<img width="397" alt="19.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/ae7b9413-8112-ff3b-9c8d-3485860986f5.jpeg">

Finishをクリックして無事に完了。
SATA SSDに対してインストールを実行してDeployボタンから15分くらいでした。

###デプロイ直後の状態
####データコアサーバー
ここまでの手順でどのような状態で終了しているか順番に見ていきましょう。
データコアサーバにリモートデスクトップ（既に有効になっています）でつないで、デスクトップにあるショートカットからGUIを開いてみます。

+ ディスクプールまで作成されています。
+ vCenter Serverが登録されています。
<img width="118" alt="20.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/7c8cf47d-7643-cac3-b0be-31cd7f019aa5.jpeg">

+ まだ評価版の状態です。
<img width="187" alt="21.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/991671b8-85bd-67c5-10cb-1bc0a9a4222b.jpeg">
####ESXi
+ vSwitch1と2はこんな風になっています。iSCSI接続なのでチーミングではなくマルチパスで冗長化するので明示的に分かれています。
+ <img width="275" alt="23.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/aca9ef9e-4d35-5181-f765-ecb09c3aca95.jpeg">
<img width="278" alt="24.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/e0d1aaab-0561-8118-8ed5-d28ff2dd7627.jpeg">
    + Mirror Networkを使って書き込みの同期をしています。
    + Target NetworkのvmkernelからTarget Networkの仮想NICに2経路でiSCSI接続されています（対向にも接続するので合計4パス）
+ iSCSI Software Adapterを見ても4つのIPアドレスが入っていますね。
 <img width="208" alt="25.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/ed48172d-68c0-faf4-5ced-3b896c7c25f7.jpeg">

+ 細かいパラメータ変更もされていますね。（ここ以外にもBest Practiceではたくさん変更すべき箇所があります。）
<img width="509" alt="35.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/b336fa89-9485-2560-40cf-9f10cee50cd6.png">


##インストレーションマネージャー後にやること
1. Windowsのアクティベーション
2. HVSANのアクティベーション
3. vDiskの作成とサーブ
4. VMFSデータストアの作成
5. もしまだ作ってなかったらクラスターの作成（とHAの設定）

###Windowsのアクティベーション

省略

###HVSANのアクティベーション
Server Groupを選択し、Licenseタブを開きます。
一番下にあるActivate Product Keysをクリックしてウィザードに従います。
インターネット接続が必要です。
<img width="340" alt="22.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/b7ef7866-b7fa-7f05-e978-e49dcc7b3036.jpeg">

###vDiskの作成とサーブ その1パワーシェル
せっかくここはQiitaなのでパワーシェルでやってみましょう。
データコアサーバのデスクトップにあるショートカットからパワーシェルを開きます。

実行する前にデータコアサーバにPowerCLIを予めインストールしてください。
最新版は基本的にはこれを打って指示に従うだけです。

```
Install-Module -Name VMware.PowerCLI
```

事前準備はこのあたり？

```
Set-PowerCLIConfiguration -InvalidCertificateAction ignore
```


データコア側でvDiskを作って、vCenter Server側でデータストアの作成まで一気にやっちゃいます。

```
#データコアに接続　自身にログインするから引数なしでOK
Connect-DcsServer
#サーバーグループ内のディスクプールの（本来は同じはずだけど）最小の空き容量でvDisk作成
$FREE = ((Get-DcsPool |Get-DcsPerformanceCounter).BytesAvailable | Measure-Object -Minimum).minimum
$SERVER = Get-DcsServer
$VD = Add-DcsVirtualDisk -Name "DataCore Datastore 1" -Size $FREE -FirstServer $SERVER[0].HostName -FirstPool (Get-DcsPool -Server $SERVER[0]) -SecondServer $SERVER[1].HostName -SecondPool (Get-DcsPool -Server $SERVER[1]) -EnableRedundancy
#サーブ（提供）
Get-DcsClient|where-object { $_.Type -eq "ESX" }|%{Serve-DcsVirtualDisk -Machine $_ -Virtualdisk $VD -EnableRedundancy}

#vCenterServerに接続（引数は自分の環境で置き換えて）
Connect-VIServer -Server x.x.x.x -User administrator@vsphere.local -Password xxxxxxxx
#全てリスキャン
Get-VMHost | Get-VMHostStorage -RescanAllHBA

$NAA ="naa." + $VD.ScsiDeviceIdString
#エラーにしたくないので電源ONだけ
$VMHOST = get-vmhost|Where-Object{$_.PowerState -like "PoweredOn"}
$DISK = get-view $VMHOST.ExtensionData.ConfigManager.StorageSystem
#ホストの台数分で行列になります
$SCSILUN = Get-ScsiLun -VMhost $VMHOST -CanonicalName $NAA

#ストレージデバイスの名前をvdisk名に変更
#iSCSIは1台で実行すればみんな変わるで[0]で1つだけ実行
$SCSILUN[0] | %{$DISK.UpdateScsiLunDisplayName($_.ExtensionData.Uuid, $VD.alias)}

#vdisk名でデータストアの作成、同じく1台だけでOK
New-Datastore -VMHost $VMHOST[0] -name $VD.alias -path $SCSILUN[0] -Vmfs -FileSystemVersion 6

#全ホストでラウンドロビンiopsを10に
foreach ($i in $SCSILUN) {$i | Set-ScsiLun -CommandsToSwitchPath 10}

#切断
Disconnect-DcsServer
Disconnect-VIServer -Confirm:$False
```


###vDiskの作成とサーブ その2 GUI
1.Virtual Disksを右クリックしてCreate Virtual Disks
![32.png](https://qiita-image-store.s3.amazonaws.com/0/115778/f6134185-972d-50a3-6b24-602fd9f0ae51.png)
2.名前とサイズを指定して、Mirroredを選択してNext
3.そのままもう1回Next、最後にFinish 
4.作ったvDiskを右クリックしてServe to Hosts

![27.png](https://qiita-image-store.s3.amazonaws.com/0/115778/d6f83f4c-92b7-36b9-2b3c-71be004214ef.png)
5.ESXi2台を選んでNextをクリック
6.Reduntant pathを選んでNextをクリック
7.Round robinを選択、Create a VMFS datastore on the discovered disk(s).にチェックを入れてFinish

![28.png](https://qiita-image-store.s3.amazonaws.com/0/115778/964e4605-3b32-f782-a0fa-39d35efac2b1.png)
8.vCenter Serverの方から見ると既に**VMFS6で**2台共有のiSCSIデータストアが作成されています。
<img width="745" alt="29.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/01e0eee3-061d-062c-8def-2d49a68270f9.png">
9.マルチパスを確認すると合計4パス、その内、自分の中にいるのコントローラへの2パスがアクティブです。***データローカリティもバッチリ***ってことですね。通常時は物理ネットワークを超えるコントローラとはI/Oをしません。 
<img width="462" alt="30.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/8de8c519-0760-cc84-ec6c-5d3b28087a72.png">
<img width="464" alt="31.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/dcd3a673-59c4-0862-65a0-7381e3acd14b.png">



##必須じゃないけどやったほうがいいこと
1. Windowsを日本語化　[（このあたりを参考にすると簡単。）](https://qiita.com/akiyoshi-t/items/76eb446cc8f8ec360e00)
2. Windows Update(絶対やろう 理由→ https://www.datacore.com/products/software-defined-storage/tech/prerequisites/ ）
3. VCSAのアップデート（2018/10/25現在　6.7.0.14000 → 6.7.0.20000）
4. VCSAを共有データストアにStorage vMotionしてHAとvMotionできるようにする
5. Update Managerを使ってESXiにパッチ適用（ESXiの再起動を伴うため4のあとがいいです）
6. 階層化を使うなら必要なディスクをTier1に移動させる（デフォルトはTier2）

###VCSAをStorage vMotion
1. 対象の仮想マシンを右クリックして移行を選択
2. ストレージのみ変更しますを選択して次へ
 <img width="470" alt="33.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/bb6bed7c-4457-f5ef-81b1-fdac69d6d391.png">

3. さっき作ったDataCoreの共有データストアを選択して次へ、そして完了
<img width="423" alt="34.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/115778/d69df27a-4a91-9518-23ca-3a9277b95be1.png">

###まとめ
これがあれば[ベストプラクティスガイド](https://datacore.custhelp.com/app/answers/list/kw/best%20practice/search/1)とか読み漁らなくても適切に設定された高可用性の仮想化基盤が簡単に作れますね。

####（メモ）このインストレーションマネージャーがけてないと感じたところ。アップデートに期待。
+ RDMを使わないからローカルストレージの数だけ使えないデータストアが出来てしまう。
+ NVMeもSCSIコントローラのディスクとしてアタッチされてしまう（これでは高い性能が使い切れない）