Nutanixのベストプラクティスをまとめてみた[NW関連]

Linux
Nutanix logo
スポンサーリンク
スポンサーリンク

はじめに

NutanixのNWのベストプラクティスについて日本語で整理されている記事がないので、個人で整理していたメモをブログにしました。

お役に立てば幸いです。

前提

Nutanixのアーキテクチャについて理解していること

bridge、virtual-switchについて知っていれば最低限は理解できると思われます。

NICに関する推奨事項

  • NICは10Gbps以上のものを使用します。
  • NICチーミングを使用します。
  • 必ず同じ速度のNICでチーミングします。
  • NICチーミングの帯域をFullに使用可能なbalance-tcpを使用します。
Nutanix Support & Insights

balance-tcpの注意事項

  • ノード(サーバのこと)と接続する物理NW機器のI/FではLACPを使用すること。staticでポートチャネルを形成することは不可です。
  • LACP Fast-timer機能を有効化(※1)する。1秒毎にHelloを送り3秒でタイムアウトとなります。
  • ポートチャネルの形成失敗時に束ねているケーブルが独立して動作することができるよう、fall-back機能を有効化(※2)する。Active-backupとして機能することを保証します。

※1について
コマンド(AHV):sudo ovs-vsctl set port br0-up other_config:lacp-time=fast
コマンド(CVM):acli net.update_virtual_switch “vs0 or UUID”  lacp_timeout=kFast

lacp fast-timerの設定はAHVホストのノードが接続する物理NW機器のI/Fにも設定が必要となりますので注意してください。

※2について
コマンド(AHV):sudo ovs-vsctl set port br0-up other_config:lacp-fallback-ab=true
コマンド(CVM):acli net.update_virtual_switch “vs0 or UUID” lacp_fallback=true

suspend-individualに関する設定は、AHVホストのノードが接続する物理NW機器のI/Fにも設定が必要となりますので注意してください。

物理NW機器における推奨事項

  • AHVホストのノードと接続する物理NW機器のインタフェースでPort-fast機能を有効化します。これは、Spanning-treeの状態遷移による通信断時間を最小限に抑えるために使用します。ただし、物理NW機器の設定や構成次第ではSpanning-treeを一律無効化している場合もあると思います。その場合は設定不要となります。

Virtual-Switch、Bridge、VLANにおける推奨事項

  • Virtual-Switchのupllinkポートの名称はデフォルトのまま(brx-up)を使用します(brxのxはVirtual-Switchの番号を指します)。作成したブリッジ(デフォルトはbr0のみ)と表記を揃えることが推奨されています。
  • CVMとゲストVMでは、Virtual-Switchを分けることが推奨されます。つまり、CVM用にbr0(br1)、ゲストVM用にbr1(br0)を使用します。クラスター全体でみると、VS0とVS1が存在することになります。
  • CVMとAHV用のVLANはデフォルトのVLAN、つまりuntagged vlanを使用してください。特別な要件がある場合はCVMとAHVにVLANタグを付与可能です。
  • アドレスの重複を防ぐためにも、VLAN作成時にIPAM機能を有効化しておきます。そうすることで、事前に設定したセグメントの範囲からのみIPアドレスの設定が可能となり、IPアドレスの設定ミスを防ぐことにつながります。作成したVLANを使用したNICを全てのVMから削除しない限り、IPAMの設定変更ができないため、初期構築時に対応することをお勧めします。
    以下のコマンドでVLANの情報を確認することが可能です。
nutanix@cvm:acli net.list

非常に負荷の大きい処理を行うVMがいる場合の推奨事項

  • Oracle DBなどのデータベースのように非常にI/Oが多く、非常に高いスループットが求められる処理を行う仮想マシンが存在する場合は、25GBのNICインタフェースを使用することが推奨されます。もちろん、物理NW機器のラインカードも25Gbpsに対応している必要があるため注意してください。

ジャンボフレームを使用する場合の注意事項

  • CVMはジャンボフレームの設定は可能ではあるものの、サポート対象外となります。また、MTU1500で最適化されているため設定変更は非推奨です。
  • AHVとゲストVMでは設定可能です。ゲストVMのOSやミドルウェアなどがジャンボフレームに対応している場合は、設定変更することも可能です。

Volume GroupのNW観点における推奨事項

Windowsの場合
  • NICのドライバの詳細設定でreceive-side scaling(RSS)を有効化していること。これを有効化することで、networkをマルチコアで処理することが可能となります。
    ただし、OSで設定を行うだけでは意味がありません。実はvNIC側でも設定が必要となります。RSS Virtio-Net Multi-Queueはデフォルトでは1となっております。このキューの個数を、vCPUコア数より下回る範囲で増やす必要があります。
    詳しくは下記のドキュメントをご覧ください。
    ざっくり述べると、vNICのMACアドレスを指定してキューの数を増やすだけです。
    管理人の検証結果では、パフォーマンスの向上はそれなりに見られました。

  • TcpAckFrequencyのレジストリの値を1にします。Delayed ackを無効化することで、データを送信したら直ちにACKが返ってくるようにします。
  • Storage Spaces I/O timeout valueを60秒にします。
  • iSCSIデータサービスIPを使用してVolume Groupと接続している場合で、MPIOを使用している場合、windows iSCSI LinkDownTimeの設定は60秒とします。
  • iSCSIデータサービスIPを使用してVolume Groupと接続している場合は、デフォルト(60秒)のiSCSI client timerの値を使用します。
  • シーケンシャル I/Oサイズが1MB以上の場合、iSCSI MaxTransferLengthを256KBから1MBへ変更します。
  • ストレージ用のキューの深さが求められる処理の場合は、iSCSIイニシエーターとデバイスのiSCSIクライアントのキューの深さを増やします。
Linuxの場合

※iSCSIに関する設定は/etc/iscsi/iscsid.confを編集することで可能です。

AHV Turbo Technologyに関する推奨事項

windowsの場合
  • windowsの場合はvirtIOをインストールしているならば、特に何もする必要はありません。
Linuxの場合
  • 仮想マシンでマルチキューによる処理を行うことが出来るようにします。
    下記のどちらかをカーネルコマンドラインで投入することで実現可能です。
scsi_mod.use_blk_mq=y
scsi_mod.use_blk_mq=1

しかし、これだけ書いてあってもどのように設定すればわからないです。

実は調べてもすぐにわかりません。

RHELの場合は、cat /boot/grub2/grubenvを投入してください。これが対象のファイルです。次のようにkerneloptsに追加します。設定ファイルの修正が完了したら再起動します。

# GRUB Environment Block
saved_entry=194f7c2febaa43a8823be447fe95afe6-4.18.0-513.24.1.el8_9.x86_64
kernelopts=root=UUID=45d2b248-5a06-41d7-9b16-f48efdafad6b ro console=ttyS0,9600 console=tty0 panic=1 numa=off noht biosdevname=0 net.ifnames=0
boot_success=0 scsi_mod.use_blk_mq=y
################################################################################################################################################

 

 

コメント