【Harvester 1.8】 ストレージ ネットワーク(ボンディング・VLAN)と VM ネットワークの設定

Harvester の HCI ストレージ(Longhorn)のレプリカ通信を、管理ネットワークとは別の NIC 2 本のボンド(active-backup)に分ける手順です。あわせて、仮想マシンを LAN に直接つなぐ VM ネットワークを作ります。

目次

この記事の前提

作るネットワーク

名前種類使う NIC用途
mgmtクラスタ ネットワーク(既定)ens18・ens19(mgmt-bo)管理、VM の通信、クラスタ内の通信
storageクラスタ ネットワーク(追加)ens20・ens21(storage-bo)Longhorn のレプリカ通信(VLAN 100、10.10.100.0/24)
vmnetVM ネットワークmgmt の上(タグなし)仮想マシンを 192.168.1.0/24 につなぐ

クラスタ ネットワークの作成

(1) [Networks] → [Cluster Network Configuration] で [Create a Cluster Network] をクリックします。

クラスタ ネットワーク

(2) 名前(storage)と説明を入力し、[Create] をクリックします。

クラスタ ネットワークの作成

(3) 作った storage の行で [Create Network Configuration] をクリックします。ネットワーク構成(Network Configuration)は、クラスタ ネットワークに各ノードのどの NIC を使うかを決める設定です。

ネットワーク構成

(4) 名前(storage-all)を入力し、[Node Selector] で [Select all nodes] を選びます(3 台すべてが対象になります)。

ノードの選択

(5) [Uplink] で NIC を 2 本(ens20・ens21)選び、ボンドのモードと監視間隔を指定して [Create] をクリックします。

アップリンク
項目説明設定値
NICsボンドにする NIC。全ノードにある NIC だけが選べるens20・ens21
Modeボンドのモード。スイッチ側の設定が不要な active-backup を選んだ。LACP を使えるスイッチなら 802.3ad も選べるactive-backup
Miimonリンク監視の間隔(ミリ秒)。-1 は既定値100
MTU空欄は 1500。ジャンボ フレームを使うときはスイッチと合わせる(空欄)

(6) storage-all が Active になれば、各ノードにボンド storage-bo とブリッジ storage-br ができています。

ネットワーク構成の完了

ストレージ ネットワークの設定

ストレージ ネットワークを変えるときは、すべての仮想マシンを止めておく必要があります。仮想マシンを作る前に設定するのがおすすめです。

(1) [Advanced] → [Settings] で「storage-network」を検索し、storage-network の︙から [Edit Setting] をクリックします。

設定の検索

(2) [Enabled] を選び、VLAN・クラスタ ネットワーク・IP アドレスの範囲を入力して [Save] をクリックします。

ストレージ ネットワーク
項目説明設定値
TypeL2VlanNetwork(VLAN タグを付ける)/UntaggedNetworkL2VlanNetwork
VLAN IDストレージ通信の VLAN。スイッチのポートでこの VLAN を通しておく100
Cluster Network使うクラスタ ネットワークstorage
IP RangeLonghorn のポッドに配る IP の範囲。必要な数は「ノード数×2+ディスク数×2+同時にダウンロード・アップロードするイメージの数」10.10.100.0/24
Exclude IPs範囲のうち使わない IP(なし)

(3) 数分で Longhorn のポッドが作り直され、storage-network に Modified と設定値が表示されます。

設定の完了

確認

Longhorn のインスタンス マネージャーに、ストレージ ネットワークの IP が付いたことを確認します。

実行する場所:いずれかのノード(rancher ユーザー。kubectl は sudo /var/lib/rancher/rke2/bin/kubectl --kubeconfig /etc/rancher/rke2/rke2.yaml)

$ kubectl get settings.harvesterhci.io storage-network -o jsonpath='{.value}{"\n"}{.status.conditions[0].reason}{"\n"}'
$ kubectl -n longhorn-system get pod -l longhorn.io/component=instance-manager -o jsonpath='{range .items[*]}{.metadata.annotations.k8s\.v1\.cni\.cncf\.io/network-status}{end}' | tr -d ' \n' | grep -o '"ips":\["10\.10\.100\.[0-9]*"\]'
$ cat /proc/net/bonding/storage-bo

期待する出力(抜粋):

{"vlan":100,"clusterNetwork":"storage","range":"10.10.100.0/24"}
Completed
"ips":["10.10.100.2"]
"ips":["10.10.100.1"]
"ips":["10.10.100.3"]
Bonding Mode: fault-tolerance (active-backup)
Currently Active Slave: ens20
MII Polling Interval (ms): 100
Slave Interface: ens20
Slave Interface: ens21

VM ネットワークの作成

(1) [Networks] → [Virtual Machine Networks] で [Create] をクリックし、名前(vmnet)、Type、クラスタ ネットワークを指定して [Create] をクリックします。

VM ネットワークの作成
項目説明設定値
TypeL2VlanNetwork(VLAN を指定)/UntaggedNetwork(タグなし)/OverlayNetworkUntaggedNetwork
Cluster Network仮想マシンの通信に使うクラスタ ネットワーク。mgmt を選ぶと管理ボンド(ens18・ens19)を通るmgmt

(2) vmnet が Active になります。

VM ネットワークの完了

仮想マシンの通信を管理と分けたいときは、別の NIC でクラスタ ネットワークを作り、L2VlanNetwork の VM ネットワークを作ります。この検証では NIC の数の都合で mgmt に載せています。

次の手順

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次