VMwareのSDS(Software Defined Storage)ソリューションであるvSANで構成されたvSphereクラスタを、Equinix MetalのBMaaS(Baremetal as a Service)上に構築してみました。
Terraformを利用する事で、約1時間でvSAN構成のvSphereクラスタを一撃デプロイできます。
vSAN、Equinix Metalについては以下リンクを参照ください。
・VMware Virtual SAN 入門: 〜 従来のストレージと VSAN の違い〜
・Equinix Metal
====
====
今回は、デプロイされる環境/デプロイ仕様の解説と事前準備を行います。
環境構成図
環境仕様・デプロイの流れ
構成図の赤点線範囲がTerraformにより構築される部分です。
事前にMinIO用サーバをEquinix Metal環境に構築し、Edge-gateway(ゲートウェイノード)と通信できる状態にしておきます。
MinIOにはバケットを作成し、vCenterのISOファイルとvSAN管理用PythonSDKを配置します。
※MinIOサーバはデプロイ用資材置き場になっているだけなので、デプロイ完了後は削除しても構いません。
Terraformのデプロイ処理を開始すると、各サーバのデプロイに加えてゲートウェイノードに流し込まれたインストールスクリプトにより、ESXiノードのプロビジョニング、vCenterアプライアンスのデプロイとvSphereクラスタ構成、vSAN構成まで一貫して構築してくれます。
デプロイ後は、ゲートウェイノード経由でパブリックNWに公開されたvCenter(vSphereクライアント)の操作が可能です。
vCenter/ESXiノードのメンテナンスについては、ゲートウェイノードを踏み台にする or L2TP/IPsecVPNを利用して各ホストへSSH接続する必要があります。
なお、今回作成するvSphere/vSAN環境は動作確認用の環境です。
高度な冗長性・セキュリティ面の考慮・調整は特に行っていません。予めご了承ください
vSphereクラスタのスペック
デプロイ後に作成されるクラスタのスペックは以下の通りです。
ESXiホストの台数はTerraform変数ファイルを変更することで増減できますが、vSAN最小構成要件である[ESXiホスト3台]とした場合の数値になります。
EsXiホストの数 | 物理CPU | 物理メモリ | データストア |
---|---|---|---|
3台 | 72コア | 192GB | 各ホスト:95GB×3、vSAN:キャパシティ2620GB,キャッシュ670GB |
作業環境、Ver、必要なもの等
- 作業用PC
- terraform:0.14.8
- metal(provider):1.1.0
- terraform-metal-vsphere(module):2.3.0
- git:2.30.0
- L2TP/IPSec VPNクライアント(VPN経由で接続する場合に必要)
- terraform:0.14.8
- vCenter/vSAN構成用の資材 ※MyVMwareからDL
- vCenterインストール用ISOファイル、Ver 7.0 U1 build17491101
- vSAN管理用PythonSDK
- Equinix Metalアカウント
- APIトークン ※ポータルで発行してください。
また、本記事の作業で作成されるMetalサーバは以下の通りです。
サーバクラス | 台数 | 物理CPU | 物理メモリ | ストレージ | 用途 |
---|---|---|---|---|---|
c3.small.x86 | 2 | 8コア | 32GB | 480GB×2 | MinIO用×1,ゲートウェイノード用×1 |
c3.medium.x86 | 3 | 24コア | 64GB | (boot用)240GB×2,480GB×2 | ESXiノード用×3 |
Metalサーバクラスの詳細スペックについては、公式ページをご確認ください。
Bare Metal Servers - Equinix Metal
参考資料
Equinix MetalがメンテしているGithubリポジトリのガイダンスに沿って作業を進めます。
事前準備
0. terraform インストール
公式手順は↓のリンク参照。 筆者はWindows10+WSL(ubuntu)にインストールして使っています。
Install Terraform
1. terraformモジュール一式を作業用端末へDL(git clone)する
作業用端末に、GithubリポジトリのTerraformモジュール一式をDLします。
フォルダのファイル構成は以下の通りです。各ファイルは次回編集していきます。
$ git clone -b v2.2.0 https://github.com/equinix/terraform-metal-vsphere.git
$ cd terraform-metal-vsphere
$ tree
.
├── LICENSE
├── README.md
├── crash.log
├── main.tf
├── outputs.tf
├── scripts
│ └── get_vcenter_ip.py
├── templates
│ ├── deploy_vcva.py
│ ├── download_vcenter.sh
│ ├── esx_host_networking.py
│ ├── extend_datastore.sh
│ ├── l2tp_vpn.sh
│ ├── pre_reqs.py
│ ├── update_uplinks.py
│ ├── vcva_template.json
│ └── vsan_claim.py
├── variables.tf
└── versions.tf
2. Metal環境に、MinIO用サーバデプロイ+MinIOインストール
デプロイ先と同じDCに、MinIO用サーバをデプロイします。
デプロイ後、以下ドキュメントを参考にインストールします。
忙しい人のためにMinIOインストール用のUserDataを用意していますので、こちらをご利用ください。
Ubuntu18.04サーバデプロイ時のUserDataに入力すると、"http://[サーバのグローバルIP::9000"でアクセス可能な状態でMinIOがインストールされます。
#cloud-config
timezone: Asia/Tokyo
locale: ja_JP.utf8
package_upgrade: true
write_files:
- content: |
MINIO_ACCESS_KEY="minio"
MINIO_VOLUMES="/usr/local/share/minio/"
MINIO_OPTS="-C /etc/minio --address MinIO_GIP:9000"
MINIO_SECRET_KEY="miniostorage"
path: /etc/default/minio
owner: minio-user:minio-user
permissions: '0644'
runcmd:
- curl -O https://dl.minio.io/server/minio/release/linux-amd64/minio
- sleep 5
- chmod +x minio
- useradd -r minio-user -s /sbin/nologin
- chown minio-user:minio-user minio
- mkdir /usr/local/share/minio
- mkdir /etc/minio
- sleep 1
- chown minio-user:minio-user /usr/local/share/minio
- chown minio-user:minio-user /etc/minio
- mv minio /usr/local/bin/.
- mkdir /opt/minio-data
- sleep 1
- chown minio-user:minio-user /opt/minio-data
- curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
- sleep 5
- mv minio.service /etc/systemd/system/.
- SV_GIP=`curl inet-ip.info`
- sed -i -e "s/MinIO_GIP/$SV_GIP/" /etc/default/minio
- systemctl daemon-reload
- systemctl enable minio
- systemctl start minio
2. MinIOへバケット作成
MinIOサーバへログイン後、MinIO用クライアントのmcコマンドをDLしてバケットを作成します。
※ブラウザ経由でMinIOへアクセスしてバケット作成してもOKです。
[mcコマンドDL、設定]
$ wget https://dl.min.io/client/mc/release/linux-amd64/mc
$ chmod +x mc
$ ./mc alias set localhost http://[serverのGIP]:9000
Enter Access Key: minio
Enter Secret Key: miniostorage
Added `localhost` successfully.
[mcコマンドでバケット作成]
$ ./mc mb localhost/vmware
Bucket created successfully `localhost/vmware`.
作業後、vmware という名称のバケットと、サーバ上のディレクトリが作成されたことを確認します。
$ ./mc ls localhost |grep vmware
[2021-03-12 00:42:36 JST] 0B vmware/
3. vCenter,vSAN構成用のファイルをバケットに配置する
参考サイトに記載があるように、MyVMwareからvCenterISOファイル、vSAN管理用SDKファイルを入手します。
取得後、前の手順で構成したバケット内に、以下構成でファイルを配置します。
オブジェクトストア ルート:
|
| __ vmware
|
| __ VMware-VCSA-all-7.0.1-17491101.iso
|
| __ vsanapiutils.py
|
| __ vsanmgmtObjects.py
ブラウザ経由でGUIから配置したい場合は、 http://[serverのGIP]:9000 にアクセスしてください。
※デプロイ時に設定したアクセスキー/シークレットキーを利用してログインする必要があります。
事前準備は以上になります。
次回はterraform実行前の変数ファイル等を編集していきます。