私の会社はネットワーク パフォーマンスの問題に直面しており、協力しているすべての「専門家」 (VMWare サポート、RHEL サポート、マネージド サービス ホスティング プロバイダー) が困っているようです。
問題は、VM 間のネットワーク レイテンシが (同じ物理ホスト上に存在する VM であっても)、ネットワーク スループットで最大 100 倍以上増加することです。たとえば、ネットワーク負荷がない場合、待ち時間 (ping で測定) は約 0.1 ミリ秒になる可能性があります。100MB のファイルを数個転送し始めると、遅延が 1ms に増加します。2 つの VM 間で多数 (最大 20 程度) の同時データ転送を開始すると、VM 間の待機時間が 10 ミリ秒以上に増加する可能性があります。
これは私たちにとって大きな問題です。アプリケーション サーバー VM がプロセスをホストしており、データベース サーバー (別の VM) に対して 1 時間あたり 100 万件程度のクエリを発行する可能性があるからです。したがって、各クエリに 1 ~ 2 ミリ秒を追加すると、ランタイムが大幅に増加し、予想される所要時間が 2 倍または 3 倍になることもあります。
かなり標準的な環境だと思います。
- ESXi 6.0u2
- 2x Xeon E5-2650v2 プロセッサーと 128GB RAM を搭載した 4 つの Dell M620 ブレード
- SolidFire SAN
そして、基本 VM 構成は次のもので構成されます。
- RHEL7、最小インストール
- /boot、/、/var/log、/var/log/audit、/home、/tmp、および swap のマウント ポイント用に構成された複数の LUN
- LUKS で暗号化された /bootを除くすべてのパーティション(LVM 上)
データベース サーバー VM は Postgres 9.4 を実行しています。
すでに次のことを試しました。
- 仮想 NIC を VMNETx3 から e1000 に変更し、元に戻す
- RHEL イーサネット スタック設定を調整する
- VM に ESXi の「低遅延」オプションを使用する
- ホストと vCenter を ESX 5.5 から 6.0u2 にアップグレードする
- テスト用のベアボーン VM の作成 (上記のように LUKS などを使用してセットアップしますが、本番サービスは使用しません)
- SSD SolidFire SAN からローカル (ブレード上の) 回転ストレージへのデータストアの移動
これらのどれも、ネットワーク レイテンシを改善しませんでした。予想される (劣化しない) レイテンシーを示した唯一のテストは、 LUKS 暗号化なしでベアボーン VM の 2 番目のペアをセットアップしたときです。残念ながら、規制された機密データを扱っているため、完全に暗号化されたパーティション (キーを管理する) が必要です。
ここで、LUKS 自体がどのように責任を負うのかわかりません。むしろ、ESX、ホスティング ハードウェア、および/または VM ハードウェア構成の組み合わせで実行されている LUKS が原因であると思われます。
私ははるかに脆弱な環境 (MacBook Pro、i5、8GB RAM、VMWare Fusion 6.0、LVM 上の LUKS と同じテスト スクリプトで同様に構成された Centos7 VM) でテストを実行しましたが、遅延の問題を再現できませんでした。VM 間で送信したネットワーク トラフィックの量に関係なく、レイテンシは約 0.4 ミリ秒で安定していました。そして、これはラップトップ上で、大量のことが起こっていました!
ポインタ/ヒント/解決策は大歓迎です!