この記事は NIFTY Advent Calendar 2016の 21 日目の記事です。
昨日は@licht110さんのserverspec+ansible+vagrant-vsphereでやるテスト駆動サーバー運用という記事でした。
ハイパーコンバージドインフラストラクチャが注目されていますが、VMwareでは、x86サーバを複数台束ねて仮想的なストレージを構築できるVirtual SANという機能を提供しています。
ただし、Virtual SANを試すためには、最低3台のホストを用意する必要があり、検証環境を用意するのも敷居が高くなっています。
今回は、自宅でもVirtual SANを試せるように、VMware Workstation上にオールフラッシュのVirtual SAN 6.5を構築する方法を紹介します。
構成
- vCenter 6.5 (2vCPU、10GB MEM)
- ESXi6.5 (Nested) (2vCPU、6GB MEM) x 4
- Virtual SAN 6.5
- VMware Workstation 11.1.4 *1
- SSD (PC側)
インストール
仮想ネットワークの設定
Workstationの仮想ネットワーク エディタを開き、ホストオンリーのネットワーク(プライベートネットワーク)を2つ作成し、以下の用途とします。
名前 | 用途 |
---|---|
VMnet1 | Management Network、Virtual Machine Network、vMotion Network |
VMnet2 | VSAN Network |
DNSサーバの構築
vCenterのデプロイで必須となるため、まずは、DNSサーバを用意します。
vSphere Web Clinentでの操作が必要となるので、今回はWindows Server 2012 R2をWorkstationにデプロイし、機能と役割からDNSサーバをインストールします。
DNSサーバの構築方法は省略しますが、vCenterのホスト名が名前解決できるように、DNSサーバに前方参照ゾーンと、Aレコードを追加しておきます。
Nested ESXiの構築
ESXi 6.5 Virtual Appliance is now availableにて、Nested_ESXi6.5のアプライアンスが提供されており、Nested_ESXi6.5_Appliance_Template_v1.ova
というファイルをダウンロードします。
アプライアンスの構成は以下のようになっています。
- ESXi 6.5 OS
- GuestType: ESXi 6.5
- vHW 11
- 2 vCPU
- 6GB vMEM
- 2 x VMXNET vNIC
- 1 x 2GB HDD (ESXi Installation)
- 1 x 4GB SSD (for use w/VSAN, empty by default)(SSDとしてラベル済み)
- 1 x 8GB SSD (for use w/VSAN, empty by default)(SSDとしてラベル済み)
ダウンロードしたovaファイルをダブルクリックし、Workstationに追加します。
OSを起動する前に、VMの設定の変更を行います。VMの設定の変更は、VM>設定を開き、Intel VT-x/EPT または AMD-V/RVI を仮想化
の有効化と、ネットワークアダプターにVMnet1、ネットワークアダプター2にVMnet2を設定します。
VMの起動後に、DCUIにログインし、パスワードの追加(初期ではパスワードが空のため)と、Management NetworkのIPを追加します。
今回は、Virtual SANの検証をするため、Nested ESXiを4台用意します。
vCenter Server Appliance (VCSA)の構築
VCSAのisoファイル(VMware-VCSA-all-6.5.0-4602587.iso)をダウンロードし、isoファイルとしてマウントします。
マウントしたディスクのvcsa配下にVMware-vCenter-Server-Appliance-6.5.0.5100-4602587_OVF10.ova
というovaファイルがあるので、ovaファイルをダブルクリックし、Workstationに追加します。
OSを起動する前に、VCSAのVMのvmxファイルを開き、以下の内容を追記します。
guestinfo.cis.deployment.node.type = "embedded" guestinfo.cis.appliance.net.addr.family = "ipv4" guestinfo.cis.appliance.net.mode = "static" guestinfo.cis.appliance.net.pnid = "vcenter65-1.lab.local" guestinfo.cis.appliance.net.addr = "192.168.229.170" guestinfo.cis.appliance.net.prefix = "24" guestinfo.cis.appliance.net.gateway = "192.168.229.1" guestinfo.cis.appliance.net.dns.servers = "192.168.229.10" guestinfo.cis.appliance.root.passwd = "VMware1!" guestinfo.cis.appliance.ssh.enabled = "True" guestinfo.cis.deployment.autoconfig = "True" guestinfo.cis.appliance.ntp.servers = "pool.ntp.org" guestinfo.cis.vmdir.password = "VMware1!" guestinfo.cis.vmdir.site-name = "default-site" guestinfo.cis.vmdir.domain-name = "vsphere.local" guestinfo.cis.ceip_enabled = "False"
VCSAのVMを起動すると、上記の設定が自動的に追加されます。VCSAの初回起動には時間がかかるので、しばらく待ちます。
なお、DNSサーバを用意しない場合、VCSAの初回起動時に以下のエラーが出ることがあり、はまりました。
Encountered an internal error. Traceback (most recent call last): File "/usr/lib/vmidentity/firstboot/vmidentity-firstboot.py", line 2017, in main vmidentityFB.boot() File "/usr/lib/vmidentity/firstboot/vmidentity-firstboot.py", line 349, in boot self.configureSTS(self.__stsRetryCount, self.__stsRetryInterval) File "/usr/lib/vmidentity/firstboot/vmidentity-firstboot.py", line 1478, in configureSTS self.startSTSService() File "/usr/lib/vmidentity/firstboot/vmidentity-firstboot.py", line 1140, in startSTSService returnCode = self.startService(self.__sts_service_name, self.__stsRetryCount * self.__stsRetryInterval) File "/usr/lib/vmidentity/firstboot/vmidentity-firstboot.py", line 88, in startService return service_start(svc_name, wait_time) File "/usr/lib/vmware/site-packages/cis/utils.py", line 784, in service_start raise ServiceStartException(svc_name) ServiceStartException: { "resolution": null, "detail": [ { "args": [ "vmware-stsd" ], "id": "install.ciscommon.service.failstart", "localized": "An error occurred while starting service 'vmware-stsd'", "translatable": "An error occurred while starting service '%(0)s'" } ], "componentKey": null, "problemId": null } This is an unrecoverable error, please retry install. If you run into this error again, please collect a support bundle and opne a support request.
起動した後で、VCSAにログインし、VCSAにNested ESXiを追加します。ホストを追加するとこのようになります。vSphere 6.5では、以前のバージョンと比べてWeb Clinetのナビゲーションの構成が変わっています。
Virtual SANクラスタの構築
Virtual SANネットワークの設定
ESXiに2本NICが刺さっているので、vmnic0をvSwitch、vmnic1をVirtual SAN用のvDSとして構成します。
さらに、各ESXiにVirtual SAN用のVMkernel Adapterを作成し、Virtual SAN用のvDSに所属させます。
Virtual SANクラスタの有効化
Virtual SAN用クラスタのConfigure>Generalから、Configureをクリックし、Virtual SANの構成ウィザードを開きます。ストレージへのディスクの追加モードや、クラスタでデデュープおよび圧縮を有効にするオプション、クラスタのフォールトトレランスのモードがありますが、まずは初期設定のまま進みます。
次に、Virtual SAN用ネットワークの検証が行われます。
手動モードとしたので、クラスタごとに使用するディスクを確認します。4GB SSDはキャッシュ用、8GB SSDはキャパシティ用として利用します。
構成ウィザードが終わると、Virtual SANの構成が開始されるので、タスクが完了するまで少し待ちます。
ストレージポリシーの作成
Virtual SANの設定が完了したので、次はストレージポリシーを作成していきます。Virtual SANでは、ミラー数やストレイピング数などをストレージポリシーによって定義し、VMに適用することで、VMごとのサービスレベルを設定することができます。
Policies and Profiles>VM Storage Prolicies>Virtual SAN Default Storage Policyを選択します。Manage>Rule-set1: VSANから、Editをクリックし、ストレージポリシーの設定画面を開きます。
許容障害数(failures to tolerate = FTT)で、何台の物理ホスト障害に耐えらるか設定でき、今回は1
としておきます。また、Add-ruleから障害の許可方法を追加し、RAID-5/6 Erasure Coding
を選択します。イレージャコーディングを使用すると、ミラーリング (RAID 1) と同じレベルのデータ保護が可能であるのに加えて、使用するストレージ容量が少なくて済みます。
仮想マシンへのストレージポリシーの適用
ストレージポリシーが用意できると、仮想マシンを作成する段階で、ストレージポリシーを選択することができます。ここで先ほど作成した、ストレージポリシーを適用することで、ストレージポリシーに従ってFTTやRAIDが決定されます。
Virtual SANの稼働状態の確認
最後に、Virtual SANで実際にどのように仮想マシンのデータが管理されているか確認しておきます。
Cluster>Monitor>Virtual SAN>Capacityを見ると、データの使用量を確認できます。クラスタでデデュープおよび圧縮を有効にした場合、下のようにDeduplication and Compression Overviewに圧縮しなかった場合と圧縮した場合のデータの使用量が見え、デデュープおよび圧縮により6GB->4GBとストレージの効率が良くなっていることが分かります。
また、仮想マシン>Monitor>Policiesを見ると、仮想マシンのvmdkファイルがRAID-5で各ホストに分散されて管理されていることが分かります。
最後に
WorkstationにvSphere 6.5 & Virtual SAN 6.5を構築してみましたが、一通りVirtual SANの設定ができ、VCSAの操作ももたつくことなく等の問題はありませんでした。Virtual SANの操作感や設定を試してみる方法として良いのではと思います。(ただ、メモリがとても必要なので潤沢にメモリを用意しましょう。)
今後は、障害時の動作など、色々試してみようと思います。
明日は@tsubasaogawaさんの記事です。お楽しみに。
参考
- VMware Virtual SAN のドキュメント
- ESXi 6.5 Virtual Appliance is now available | virtuallyGhetto
- vGhetto Automated vSphere Lab Deployment for vSphere 6.0u2 & vSphere 6.5 | virtuallyGhetto
- VSAN Setup in VMware Workstation Part 1 - Initial Lab preparation
- How to deploy the vCenter Server Appliance (VCSA) 6.5 running on VMware Fusion & Workstation? | virtuallyGhetto
*1:ただし、メモリは32GB程度必要になります。