FJCT Tech blog

富士通クラウドテクノロジーズ公式エンジニアブログです

富士通クラウドテクノロジーズ

FJCT/Tech blog

SeleniumでNSX-T Managerに同時アクセスしてみた!

こんにちは!富士通クラウドテクノロジーズ、vExpertの蓮沼です。 この記事はvExperts Advent Calendar 2023の11日目の記事です。

タイトルにある通り、WebブラウザのテストフレームワークであるSeleniumを使って、NSX-T Managerに同時アクセスを行い、Configuration Maximumsを超えた場合にどのような挙動になるのか試してみました。

背景と「vExpertが語る」の紹介

なぜ今回NSX-T Managerに同時アクセスを行う記事を書いているのかというと、先月の11/21にJapan VMUG vExpert が語る #31に登壇し、その中でNSX-T Managerの Concurrent Graphical User Interface Users per Manager の上限値が5である事を知ったと話してきました。

登壇の中では6ユーザでログインセッションに問題はない事を確認したと紹介しましたが、実際に同時アクセスを行った場合にNSX-T Managerがどのような挙動になるのか気になり、Seleniumを使って試してみました。
ちなみに Japan VMUG vExpert が語る は次回 #32 が12/20に予定されています。vExpertに興味がある!という方やVMware製品、サービスに関心があるVMwareユーザの方は気軽に参加出来るのでぜひ😆

vmug-jp.connpass.com

Youtubeチャンネルで動画も公開されていますが、当日参加すると質疑や裏話なども聞けます🤣 ちなみに先月私が登壇した際に、「おススメのVMware ExploreのSessionがあればコメントお願いします!」と話したところ、45 Minutes of NUMA – A CPU Is Not a CPU Anymoreを紹介して頂きました。

という事でSeleniumを使ってNSX-Tに同時アクセスをしていきます。

Seleniumとは

冒頭記載した通り、SeleniumとはWebブラウザのテストフレームワークで、Webアプリケーションなどのテストやスクレイピングで利用されています。
実際にブラウザを開いて、どの要素のinputに値を入力したり、ボタンやリンクをクリックするといったことをJavaPythonなどでコード化し、操作を自動化出来ます。

www.selenium.dev

今回NSX-T Managerへの同時GUIアクセスを行った場合にどのような動作をするのか確認したいので、まさにSeleniumの出番という事になります😆

実際のScript内容

NSX-T Managerに同時アクセスするSeleniumのScriptを以下で公開しました。

github.com

いくつか前提条件、注意点やポイントがあるのでこの記事で解説したいと思います。

前提条件

  • Seleniumの実行環境は後述のデモ動画の通り、Windows環境で行っているため、その他OSだと動作しない場合があります。
  • user.yaml で定義しているユーザはあらかじめNSX-T Managerにローカルユーザとして存在している事を前提にしています。
  • デモ動画ではSeleniumを実行するWindowsのノードの様子を表示していますが、Windowsのノードとは別にPythonSeleniumのScriptを実行するホストが存在しています。このホストがWindowsのノードに対して操作を行っている形になります。(Windowsのローカル内でSeleniumのScriptを実行する事も可能です。)
  • Selenium GridのデフォルトのMax sessionはCPUコア数で決まるため、環境によってはSelenium Gridのオプションで --max-sessions 10 --override-max-sessions true と上限設定を変更する必要があります。今回私は12 core環境で実行しました。

注意点やポイント

  • NSX-T Managerに同時アクセスするため、 --profile-directory でdriver毎にprofileを分離しています。同じprofileで複数のdriverを実行すると、別のdriverでログインした情報を参照したり、profileをロックして操作が失敗します。
  • NSX-T ManagerにログインするとGoogle 翻訳のバーが出てきてログイン後のユーザ名と被ってしまうので、 --disable-featuresGoogle翻訳を無効化しています。
  • NSX-T Managerなど自己証明書の場合には acceptInsecureCerts をTrueにする事で証明書エラーを無視する事が出来ます。

デモ動画

実際にSeleniumを使ってNSX-T Managerにアクセスする様子をデモ動画にしました。
(Seleniumって見てるだけでもなんか楽しい)

youtu.be

デモ動画ではSeleniumからブラウザを起動しNSX-Tに10ユーザ分ログインし、その後10ユーザで同時アクセスを行い、ログアウトとログインを繰り返し行っています。
NSX-Tの動作としては、GUIを5ユーザ以上でほぼ同時アクセスを行っても問題なさそうでした。
加えてログイン後の画面遷移などもいくつかパターンを用意してテストしてみましたが、ほぼ動作に問題はなかったです。
ただ、稀にクラッシュしたようなエラーが発生する事が数回は確認出来たものの、高い再現性はなく5ユーザを超えたGUIアクセスでも、特に問題はなさそうでした。

まとめ

今回Seleniumを使ってNSX-T Managerにほぼ同時アクセスを10ユーザで自動的に行ってみましたが、参照系操作でもあったので画面がクラッシュ、エラーが表示されるなどの動作はありませんでした。設定の更新などPOST/PUT系の操作を行うともしかするとエラーが発生するかもしれません。🤔
vCenterの Web Client UIは最大100接続までなので、NSXGUIも強化されると良いなと思います。
通常VMware製品の操作はAPIが提供されているため、あまりGUI操作を行うという事は無いと思いますが、今回Seleniumを使ってNSX-T Managerを操作してみたので少し新鮮でした😆Seleniumでブラウザ操作を自動化したScriptは公開しているので、参考になれば幸いです。
明日は@Sanjushi003 さんがVMware Cloud on AWSについて投稿されるそうです。お楽しみに!

それではまた来年~!