前回、HCIBench の設定を Ansible で自動化してみる話を投稿しました。
HCIBench の設定を Ansible で自動化してみる。
今回は、設定後のテスト実行にコマンドライン / Ansible を利用してみます。
HCIBench のコマンドラインでのテスト実行。
HCIBench をコマンドラインで実行する方法については、
下記のブログで紹介されています。
Use HCIBench Like a Pro – Part 2 - Virtual Blocks
まず、
[gowatana@client01 ~]$ ssh -l root hci-bench02.go-lab.jp
############################################
# #
# Welcome to HCIBench 1.6.6 #
# #
############################################
root@photon-HCIBench [ ~ ]#
root@photon-HCIBench [ ~ ]# cat /opt/automation/conf/perf-conf.yaml
vc: 'vc-sv01.go-lab.jp'
vc_username: 'hci-bench-connect'
vc_password: 'パスワード'
datacenter_name: 'dc01'
cluster_name: 'vsan-cluster-01'
network_name: 'dvpg-vds01-vlan-1012'
static_enabled: false
reuse_vm: false
datastore_name:
- 'vsanDatastore-01'
deploy_on_hosts: false
hosts:
host_username:
host_password:
vm_prefix: 'vdbench'
easy_run: false
clear_cache: false
number_vm: 2
number_data_disk: 2
size_data_disk: 1
self_defined_param_file_path: '/opt/tmp/tmp20180315144339'
output_path: 'TEST_vsan-cluster-01_case-101'
warm_up_disk_before_testing: 'NONE'
testing_duration:
cleanup_vm: false
root@photon-HCIBench [ ~ ]# file /opt/automation/vdbench-param-files/*
/opt/automation/vdbench-param-files/vdb-case-101: ASCII text
root@photon-HCIBench [ ~ ]#
Web UI にある「Varidate」ボタンにかわるスクリプトの実行してみます。
ちなみに出力結果をみると、テスト対象が 6 ノード vSAN クラスタだということもわかります。
※ここでのタイムスタンプは JST ではないので読みかえることになります。
root@photon-HCIBench [ ~ ]# /opt/automation/pre-validate-config.sh
2018-03-15 15:01:07 -0700: Validating VC IP and Crendetial...
2018-03-15 15:01:10 -0700: VC IP and Credential Validated
2018-03-15 15:01:10 -0700: Validating Datacenter dc01...
2018-03-15 15:01:11 -0700: Datacenter dc01 Validated
2018-03-15 15:01:11 -0700: Validating Cluster vsan-cluster-01...
2018-03-15 15:01:12 -0700: Cluster vsan-cluster-01 Validated
2018-03-15 15:01:12 -0700: Cluster vsan-cluster-01 has DRS mode: fullyAutomated
2018-03-15 15:01:12 -0700: Validating If Hosts in Cluster vsan-cluster-01 Could be Connected...
2018-03-15 15:01:25 -0700: All Hosts could be Connected
2018-03-15 15:01:25 -0700: Validating If Any Hosts in Cluster vsan-cluster-01 is in Maintainance Mode...
2018-03-15 15:01:26 -0700: All the Hosts in Cluster vsan-cluster-01 are not in Maitainance Mode
2018-03-15 15:01:26 -0700: Validating Network dvpg-vds01-vlan-1012...
2018-03-15 15:01:28 -0700: Network dvpg-vds01-vlan-1012 Validated
2018-03-15 15:01:28 -0700: Checking If Network dvpg-vds01-vlan-1012 is accessible from all the hosts of vsan-cluster-01...
2018-03-15 15:01:29 -0700: Network dvpg-vds01-vlan-1012 is accessible from host hv-i22.go-lab.jp
2018-03-15 15:01:30 -0700: Network dvpg-vds01-vlan-1012 is accessible from host hv-i25.go-lab.jp
2018-03-15 15:01:31 -0700: Network dvpg-vds01-vlan-1012 is accessible from host hv-i21.go-lab.jp
2018-03-15 15:01:31 -0700: Network dvpg-vds01-vlan-1012 is accessible from host hv-i24.go-lab.jp
2018-03-15 15:01:32 -0700: Network dvpg-vds01-vlan-1012 is accessible from host hv-i26.go-lab.jp
2018-03-15 15:01:33 -0700: Network dvpg-vds01-vlan-1012 is accessible from host hv-i23.go-lab.jp
2018-03-15 15:01:33 -0700: Network dvpg-vds01-vlan-1012 is accessible from all the hosts of vsan-cluster-01
2018-03-15 15:01:33 -0700: Validating Type of Network dvpg-vds01-vlan-1012...
2018-03-15 15:01:34 -0700: Network dvpg-vds01-vlan-1012 Type is DistributedVirtualPortgroup
2018-03-15 15:01:34 -0700: Validating cluster inter-connectivity...
2018-03-15 15:03:20 -0700: Cluster inter-connectivity validated
2018-03-15 15:03:23 -0700: Validating Datastore vsanDatastore-01...
2018-03-15 15:03:24 -0700: Datastore vsanDatastore-01 Validated
2018-03-15 15:03:24 -0700: Checking Datastore vsanDatastore-01 type...
2018-03-15 15:03:24 -0700: Datastore vsanDatastore-01 type is vsan
2018-03-15 15:03:24 -0700: Checking If Datastore vsanDatastore-01 is accessible from all the hosts of vsan-cluster-01...
2018-03-15 15:03:25 -0700: Datastore vsanDatastore-01 is accessible from host hv-i22.go-lab.jp
2018-03-15 15:03:25 -0700: Datastore vsanDatastore-01 is accessible from host hv-i25.go-lab.jp
2018-03-15 15:03:25 -0700: Datastore vsanDatastore-01 is accessible from host hv-i21.go-lab.jp
2018-03-15 15:03:25 -0700: Datastore vsanDatastore-01 is accessible from host hv-i24.go-lab.jp
2018-03-15 15:03:25 -0700: Datastore vsanDatastore-01 is accessible from host hv-i26.go-lab.jp
2018-03-15 15:03:25 -0700: Datastore vsanDatastore-01 is accessible from host hv-i23.go-lab.jp
2018-03-15 15:03:25 -0700: Datastore vsanDatastore-01 is accessible from all the hosts of vsan-cluster-01
2018-03-15 15:03:25 -0700: Validating If VSAN Enabled in Cluster vsan-cluster-01...
2018-03-15 15:03:30 -0700: VSAN is Enabled in Cluster vsan-cluster-01, the VSAN Datastore name is vsanDatastore-01, capacity is 5589 GB and freespace is 4238 GB, the default policy is vsan-policy-raid5
2018-03-15 15:03:31 -0700: Deploy on hosts: False. Skip validating hosts...
2018-03-15 15:03:31 -0700: Validating Vdbench binary and the workload profiles...
------------------------------------------------------------------------------
2018-03-15 15:03:32 -0700: All the config has been validated, please go ahead to kick off testing
------------------------------------------------------------------------------
Caution:
You have 2 VM Have the Same Prefix as vdbench, Please Make Sure the VMs are OK to be Deleted Otherwise Please Change the VM Name Prefix.
------------------------------------------------------------------------------
root@photon-HCIBench [ ~ ]#
ちょうどテスト VM がすでにあるという注意メッセージがあるので、
VM のクリーンアップをしてみます。
root@photon-HCIBench [ ~ ]# /opt/automation/cleanup-vm.sh
Starting Cleaning VDBench Guest VMs...
VDBench Guest VMs Deleted
root@photon-HCIBench [ ~ ]#
ベンチマーク テストを実行します。
コマンドラインを実行すると、プロンプトがすくに戻されます。
root@photon-HCIBench [ ~ ]# /opt/automation/start-testing.sh
root@photon-HCIBench [ ~ ]#
実行の様子は、下記のようにログファイルから確認できます。
root@photon-HCIBench [ ~ ]# tail -f /opt/automation/logs/test-status.log
Deployment Started.
Verifying If VMs are Accessible
Deployment Successfully Finished.
I/O Test Started.
Started Testing vdb-case-101
Done Testing vdb-case-101
I/O Test Finished.
Testing Finished
テストが終了すると、下記のようなログファイルが出力されています。
root@photon-HCIBench [ ~ ]# ls -ltr /opt/automation/logs/
total 44
drwxrwxr-x 2 root root 4096 Mar 15 15:01 prevalidation
-rw-rw-r-- 1 root root 390 Mar 15 15:20 vm-cleanup.log
-rw-rw-r-- 1 root root 16321 Mar 15 15:24 vc-vc-sv01.go-lab.jp-vs-vm-deploy-0.log
-rw-rw-r-- 1 root root 696 Mar 15 15:24 deploy.log
-rw-rw-r-- 1 root root 6379 Mar 15 15:31 io-test-vdb-case-101.log
-rw-rw-r-- 1 root root 1184 Mar 15 15:31 vdbench-testing.log
-rw-rw-r-- 1 root root 195 Mar 15 15:31 test-status.log
root@photon-HCIBench [ /opt/automation/logs ]#
テストの進行は Web ブラウザからでも確認できます。
URL は下記のようになっています。
http:// HCIBench のアドレス /hcibench_logs/test-status.log
「Testing Finished」があると、ベンチマークが終了しています。
通常の Web UI からの実行時と同様に、レポートが生成されています。
レポートは、下記のようにまとめて採取することもできます。
[gowatana@client01 work]$ scp -pr root@hci-bench02.go-lab.jp:/opt/output/results/TEST_vsan-cluster-01_case-101 .
[gowatana@client01 work]$ ls TEST_vsan-cluster-01_case-101/
vdb-case-101-1521152685 vdb-case-101-1521152685-res.txt
HCIBench の Ansible でのテスト実行。
Ansible でテストを実行する場合は、shell モジュールなどが利用できます。
ここでは、例として Ansible の Playbook に記載したコマンド ラインを実行してみます。
まず、HCIBench の ホスト(ホスト名か、アドレスか)を記載した
Ansible のインベントリファイルを用意しておきます。
[gowatana@client01 hci-bench-config]$ cat hosts
hci-bench01.go-lab.jp
そして、下記のような YAML ファイルを用意しています。
Playbook の内容はただ 1行のコマンドラインを実行するだけなので
これだけだと Ansible を利用する意義はありません。
しかし、すでに Ansible を活用していたり、HCIBench の設定にも Ansible を利用するような場合は
環境の構成管理からベンチマーク テストの実行までツールを一貫させることができると思います。
[gowatana@client01 hci-bench-config]$ cat start-testing.yml
---
- name: HCI Bench start testing
hosts: all
remote_user: root
tasks:
- name: start testing
shell: /opt/automation/start-testing.sh
ansible-playbook コマンドを実行します。
[gowatana@client01 hci-bench-config]$ ansible-playbook -i hosts start-testing.yml
PLAY [HCI Bench start testing] *************************************************
TASK [Gathering Facts] *********************************************************
ok: [hci-bench01.go-lab.jp]
TASK [start testing] ***********************************************************
changed: [hci-bench01.go-lab.jp]
PLAY RECAP *********************************************************************
hci-bench01.go-lab.jp : ok=2 changed=1 unreachable=0 failed=0
[gowatana@client01 hci-bench-config]$
今回の Playbook にはテストの進行確認は含めていないため、curl で確認してしまいます。
[gowatana@client01 hci-bench-config]$ curl -s http://hci-bench01.go-lab.jp/hcibench_logs/test-status.log
Deployment Started.
ベンチマークテストの進行状況はログ出力され・・・
[gowatana@client01 hci-bench-config]$ curl -s http://hci-bench01.go-lab.jp/hcibench_logs/test-status.log
Deployment Started.
Verifying If VMs are Accessible
Deployment Successfully Finished.
I/O Test Started.
「Testing Finished」が出力されれば終了です。
[gowatana@client01 hci-bench-config]$ curl -s http://hci-bench01.go-lab.jp/hcibench_logs/test-status.log
Deployment Started.
Verifying If VMs are Accessible
Deployment Successfully Finished.
I/O Test Started.
I/O Test Finished.
Testing Finished
HCIBench 自体は vSAN に限らず、vSphere(vCenter / ESXi)環境であれば利用できるので、
できるだけベンチマーク 環境を自動化しておくと便利ではないかなと思います。
また、このような仕組みを利用すれば、構築作業後の確認や
他のベンチマークツールとの連携などにも利用できそうかなと思います。
これまでの HCIBench 利用の工夫については、下記もどうぞ。
HCIBench の OVA を PowerCLI でデプロイする。
HCIBench の設定を Ansible で自動化してみる。
以上、HCIBench のベンチマーク テストの実行を工夫してみる話でした。