XCP-ng の管理ツール Xen Orchestra を、公式のアプライアンス(XOA)としてホスト上に展開し、3 台のホストをプール(クラスタ)にまとめる手順です。あわせて、ストレージ・ライブ マイグレーション用の NIC のボンド(冗長化)、iSCSI 用の IP アドレス、マルチパスを設定します。
この記事の前提
参照した公式ドキュメント
- Installation(Xen Orchestra Documentation)
- Networking(XCP-ng Documentation)
- Multipathing(XCP-ng Documentation)
構成
| 項目 | 内容 |
|---|---|
| ホスト | doc-xcp1(192.168.1.131、プールのマスター)、doc-xcp2(.132)、doc-xcp3(.133)。インストール手順でインストール済み |
| XOA | 192.168.1.134(doc-xcp1 のローカル SR に展開) |
| プール | doc-pool |
| ネットワーク | 下の表のとおり |
| NIC | ネットワーク名 | 用途 | IP アドレス(doc-xcp1 の例) |
|---|---|---|---|
| eth0 | Management | 管理・仮想マシンの通信 | 192.168.1.131 |
| eth1 | iSCSI-A | iSCSI の経路 A | 10.20.81.131 |
| eth2 | iSCSI-B | iSCSI の経路 B | 10.20.82.131 |
| eth3+eth4(bond0) | Storage-Migration | XOSTOR(HCI)とライブ マイグレーション。active-backup のボンドで冗長化 | 10.20.83.131 |
XOA の展開
XOA は、Xen Orchestra を動かす仮想マシン(アプライアンス)です。ホストの 1 台に SSH でログインし、公式の展開スクリプトを実行します。ホストからインターネット(xoa.io)に接続できる必要があります。
(1) doc-xcp1 に root でログインし、次のコマンドを実行します。
bash -c "$(wget -qO- https://xoa.io/deploy)"
(2) 質問に答えます。XOA の IP アドレスを固定にする場合は、IP アドレス・ネットマスク・ゲートウェイ・DNS を入力します。
| 質問 | 説明 | 入力した値 |
|---|---|---|
| IP address? [dhcp] | XOA の IP アドレス。空のまま [Enter] で DHCP | 192.168.1.134 |
| Netmask? [255.255.255.0] | ネットマスク | 空のまま(255.255.255.0) |
| Gateway? | ゲートウェイ | 192.168.1.1 |
| dns? [8.8.8.8] | DNS サーバー | 空のまま(8.8.8.8) |
| Custom NTP servers | NTP サーバー(空なら既定) | 空のまま |
| xoa SSH account: Password? | XOA の仮想マシンに SSH でログインするアカウント(xoa)のパスワード。空なら無効 | 任意のパスワード |
(3) XOA の仮想マシンのイメージ(約 1.9 GB)がダウンロード・インポートされ、起動します。「Your XOA is ready at https://192.168.1.134/」と表示されたら完了です。この環境では約 5 分 30 秒かかりました。
🟢 Your XOA is ready at https://192.168.1.134/
Default UI credentials: [email protected]/admin
Xen Orchestra へのログインとホストの登録
(1) ブラウザーで https://192.168.1.134/ を開きます(自己署名の証明書の警告が出るので、例外として許可します)。既定のアカウント([email protected]/admin)でサインインします。

既定のパスワードは、画面左下のユーザーのアイコン(プロフィール)から変更してください。画面上部の「You are not registered」は XOA の登録(無償のアカウント)の案内です。登録しなくても、この記事の操作はできます(XOA 自体の更新には登録が必要です)。
(2) 初回は [Add server] と表示されます。クリックすると [Settings] → [Servers] の画面が開きます。

(3) ホストの情報を入力して [Connect] をクリックします。ホストの証明書は自己署名なので、[Unauthorized Certificates] をオンにします。

| 項目 | 説明 | 設定値 |
|---|---|---|
| Label | XO 上の表示名 | doc-xcp1 |
| Host | ホストの IP アドレス | 192.168.1.131 |
| Username/Password | ホストの root のアカウント | root/(インストール時のパスワード) |
| Unauthorized Certificates | 自己署名の証明書を許可する | オン |
(4) 同じように doc-xcp2・doc-xcp3 も登録します。[Status] が [Enabled] になれば接続できています。この時点では、ホストごとに別のプール(ホスト名と同じ名前)になっています。

プールの作成
XCP-ng では、ホストは必ずどれかのプールに属します。doc-xcp1 のプールに、doc-xcp2・doc-xcp3 を参加させて 1 つのプールにします。プールのホストは、同じバージョンの XCP-ng にそろえます(CPU もできるだけ同じ世代にそろえるのが基本です)。
(1) [Settings] → [Servers] の [Pool] 列の doc-xcp1 をクリックしてプールの画面を開きます。プール名の部分をクリックすると編集できるので、「doc-pool」に変更して [Enter] キーを押します。

(2) 右上のアイコンのうち [Add hosts] をクリックします。

(3) [Hosts] で参加させるホスト(doc-xcp3)を選んで [OK] をクリックします。ホストの XAPI が再起動し、プールに参加します。

この検証環境の XO では、[Hosts] の選択欄で 1 台しか選べなかったため、1 台ずつ追加しました。doc-xcp2 は、ホストの CLI(公式ドキュメントの手順)で参加させました。参加させるホストで実行します。
xe pool-join master-address=192.168.1.131 master-username=root master-password=<パスワード>
(4) プールの [General] タブで、ホストが 3 台になったことを確認します。

ネットワークの設定
(1) プールの [Network] タブを開くと、各 NIC のネットワーク(Pool-wide network 0〜4)が表示されます。名前は [Name] をクリックして変更できます。ここでは CLI で、eth0〜eth2 のネットワークに用途の名前を付けました。
for d in 0:Management 1:iSCSI-A 2:iSCSI-B; do
N=$(xe pif-list device=eth${d%%:*} host-name-label=doc-xcp1 params=network-uuid --minimal)
xe network-param-set uuid=$N name-label=${d#*:}
done

(2) [Add a network] をクリックし、eth3 と eth4 をまとめたボンドのネットワークを作ります。プールのすべてのホストに、同じボンド(bond0)が作られます。

| 項目 | 説明 | 設定値 |
|---|---|---|
| Bonded network | ボンドにする | オン |
| Interface | ボンドにする NIC(マスターのホストの NIC を選ぶ) | eth3、eth4 |
| Name | ネットワーク名 | Storage-Migration |
| Description | 説明 | XOSTOR and live migration (bond eth3+eth4) |
| MTU | 空なら 1500 | 空 |
| Bond mode | ボンドの方式 | active-backup |
| Bond mode | 動作 |
|---|---|
| balance-slb | 仮想マシンの通信を NIC に振り分けます(既定)。スイッチの設定は不要 |
| active-backup | 1 本だけを使い、故障時にもう 1 本に切り替えます。スイッチの設定は不要 |
| lacp | LACP(802.3ad)。スイッチ側にも LACP の設定が必要 |
(3) 作成すると、ネットワークの一覧に Storage-Migration(PIF:bond0)が追加されます。

(4) 各ホストの bond0(ストレージ・移行)と eth1・eth2(iSCSI)に IP アドレスを設定します。XO ではホストの [Network] タブの各 PIF の [IP configuration] から設定できます。ここではホスト 3 台分を CLI でまとめて設定しました(doc-xcp1 の例)。
H=$(xe host-list name-label=doc-xcp1 --minimal)
for d in bond0:83:Storage eth1:81:iSCSI-A eth2:82:iSCSI-B; do
dev=${d%%:*}; r=${d#*:}; net=${r%%:*}; pur=${r#*:}
P=$(xe pif-list host-uuid=$H device=$dev --minimal)
xe pif-reconfigure-ip uuid=$P mode=static IP=10.20.$net.131 netmask=255.255.255.0
xe pif-param-set uuid=$P disallow-unplug=true other-config:management_purpose=$pur
done
管理用ではない NIC に IP アドレスを付けた場合は、
disallow-unplug=trueにして、ストレージの接続中に NIC が切り離されないようにします(management_purposeは用途のメモです)。
マルチパスとマイグレーション用ネットワーク
(1) プールの [Advanced] タブの [Multipathing] で [Enable multipathing for all hosts] をクリックし、確認画面で [OK] をクリックします。

実行中の仮想マシンがあるホストでは、マルチパスを有効にできません。この検証では、XOA が動いている doc-xcp1 だけ有効にならなかったので、doc-xcp1 で次のコマンドを実行しました(共有ストレージをまだ接続していない状態なので、ホストを無効にして設定を変えるだけで済みます)。
H=$(xe host-list name-label=doc-xcp1 --minimal)
xe host-disable uuid=$H
xe host-param-set uuid=$H multipathing=true
xe host-enable uuid=$H
(2) すべてのホストで有効になると、[Enable multipathing for all hosts] は押せない状態になります。

(3) 同じ画面の [Misc] → [Default migration network] をクリックし、[Storage-Migration] を選びます。ライブ マイグレーションの通信が、管理用のネットワークではなくボンドのネットワークを通るようになります。

