Hyper-Vで作る!最強のPROXMOX検証環境とクラスターHA構築ガイド(その3)

Proxmox

ここまでで、準備編・ネットワーク準備編と通ってきましたが、次に仮想マシンの準備を進めていきます。

必要な道具

・CAT8 LANケーブル

・Windows OS PRO

・HUB

・そこそこのスペックPC

・QNAPサーバー

<用語の結び付け>

仮想マシン:Hyper-V上に作る仮想上のPCのことを指しています。
仮想サーバー:Proxmox上で作る仮想上のPCのことを指しています。

論理ネットワーク図(おさらい)

HAクラスター構成にするには最低でも3台のProxmoxサーバーが必要です。
そのため、最低でも3台以上を用意します。
※後ほど記載しますが、Hyper-V上で構築しますので、ホスト側のリソースが許す限りのProxmoxサーバーを用意してもOKです。

また、仮想マシンから参照するデーター領域の保存先として、QNAPサーバー上にiSCSIでデータ領域を作成して参照できるようにします。

ネットワークアドレス

Host NameServiceHeartbeatData
proxmox01192.168.3.101192.168.2.101192.168.1.101
proxmox02192.168.3.102192.168.2.102192.168.1.102
proxmox03192.168.3.103192.168.1.103192.168.1.103
qnap192.168.3.18192.168.1.104

論理構成図(おさらい)

今回の構成は次の通り。

ハイパーバイザー(Hyper-V)上に、ハイパーバイザー(Proxmox)を載せる、普通では絶対にやらない構成で作ります。
※開発環境なので気にしないでください。

Proxmox01~03 の仮想マシンを構築して、さらに上に仮想のTestマシンを1台作ります。

Proxmox01~03はクラスターとしてグループ化しておきつつ、どちらか1台が停止したとしても、
Testマシンが停止しないようにすることを目的とした構成にします。

物理構成(おさらい)

実際に環境を構築するPCの構成を簡単に説明します。

サービスLANに当たる、LANケーブルはPCのマザーボードに元々ついているものを使用します。
※このサービスLANはインターネットにつながるルーターなどにつながっているネットワークのことになりますね。(他のPCからもProxmoxの管理画面につながるようなネットワークでもある。)

dateNWに当たる、ケーブルはUSB-LAN変換アダプターを使って増設しています。
そこから、別途用意したスイッチ または HUBに接続してあげます。
※もちろんのことですが、その先にいはiSCSIがあるQNAPもつながっています。

Heartbeatは仮想スイッチ上で通信を行いますので、物理的なLANケーブルは不要です。

VLANを切れる環境にあるのであれば、設定を入れたほうが、無駄な設備を用意しなくてもよくはなりますが、新たにVLANの知識を仕入れる必要があるので勉強コストは爆上がりになります。

仮想マシン作成(Hyper-V作業)

Hyper-Vマネージャーを起動したら、左メニューから「新規」-「仮想マシン」を選択します。

「次へ」をクリックします。

名前:proxmox01
として、「次へ」をクリックします。

「●第1世代」を選択して、「次へ」をクリックします。

起動メモリ:8192 MB
として、「次へ」をクリックします。
※最小メモリは1GBとなっていますが、ホスト側の物理メモリを超えない良であればいくらでもOKです。安定を考えて今回は8GB当てています。

接続:Default Switch

名前:proxmox01.xhdx になっていることを確認。
場所:保存先は任意(デフォルトでOK)
サイズ:64GB (お好きな量でOK)
として、「次へ」をクリックします。

●ブート CD/DVD-ROM*********
  ●イメージ ファイル(iso)
を選択して、「参照」でProxmox のISOファイルを選択しておきましょう。

設定を以上として、「次へ」をクリックします。

設定を確認して「完了」をクリックします。

Hyper-Vマネージャーで仮想マシンができていることを確認します。

※この設定をProxmox01~03分作成してあげてください。

仮想マシンへのOSインストール(Proxmoxインストール)

作成した、仮想マシンを右クリックして「起動」をクリックします。

「実行中」となっていることを確認します。

もう一度、右クリックして「接続」をクリックします。

※すでにISOをマウントしているので、コンソール画面が開かれるとインストール画面が表示されます。

「Install Proxmox VE(Graphical)」が選択されていることを確認して「Enter」キーを押下します。

この時点では、BIOSのVT-Xなどの仮想機能を許可されていないので、注意文が出ますが「OK」をクリックします。
※Hyper-Vを通さずに物理マシン直にProxmox をインストールしていれば、このメッセージは出ることはあまりありません。(物理マシンでBIOSの設定を変えていないとでるよ。)

使用ライセンスの説明文がでますが、無視して「I aguree」をクリックします。

インストール先のHDDを選択する画面ではありますが、
仮想HDDは1つしか設定していないので、このまま無視して「Next」をクリックします。

Country:japan
Time zone:Asia/Tokyo
Keyboard Kayout:japanese

となっていることを確認して「Next」をクリックします。

Password:好きなやつ
Confirm:好きなやつ
Email:好きなやつ

を入力して「Next」をクリックします。

Management Interface: eth0 ***
Hostname(FQDN): proxmox0x.local
IP Address(CIDR): 192.168.3.10x /24
Gataway: 192.168.3.1
DNS Server: 192.168.3.1

※各サーバーに合わせてホスト名やIPアドレスを入力してください。


設定を確認して「Next」をクリックします。

全ての設定を確認して「Install」をクリックします。

・・・・インストール中

インストールが完了すると、自動的に再起動されますが、ISOがマウントされた状態ですので、
そのままほっておくと再度OSのインストールが始まってしまいます。

そこで、以下の操作を行います。
[メディア]-[DVDドライブ]-[取り出し]をして、[操作]-[Ctrl+Alt+Del]をクリックしてOSを再起動します。

OS再起動中・・・・

Proxmox VE GNU/Linuxが選択されていることを確認して「Enter」キーをクリックします。
※基本的には自動で立ち上がりますが、稀に起動してこないので。。

起動が完了すると以下の画面になります。

htpps://<IP>:8006 と表示されますので、次の動作確認で使用してください。

・動作確認

ブラウザを開いて「htpps://<IP>:8006」を入力して開きます。

開くと注意されますが。。。「詳細設定」をクリックします。

「<IPアドレス>にアクセスする(安全ではありません)」をクリックします。

Proxmox VE ログイン画面が表示されます。

ユーザ名:root
パスワード:先ほど入力してやつ

としたうえで、ログインをクリックします。

ログインをすると、注意文が出ますが「OK」をクリックします。

正常にログインできることを確認します。

※この設定をProxmox01~03分作成してあげてください。

物理CPUと仮想CPUの結び付け

この設定を行わないと、物理CPUのVirtualization Technology (VTX)などの機能が仮想マシン側に連携されません。

作成された仮想マシンが何があるかを確認する

PowerShellを管理者権限で開く:

  • Windowsのスタートメニューから「PowerShell」を検索し、右クリックして「管理者として実行」を選択します。

PowerShellで以下を実行します。

Get-VM

Name:に仮想マシン名を控えておきます。
次のコマンドで使用します。
※仮想マシンがシャットダウン状態でやってください。

ネストされた仮想化を有効にするコマンド

仮想マシンの名前を確認したら、以下のコマンドを実行してネストされた仮想化を有効にします。

Set-VMProcessor -VMName <仮想マシン名> -ExposeVirtualizationExtensions $true

MACアドレススプーフィングを有効にするコマンド

ネストされた仮想化が機能するためには、MACアドレススプーフィングを有効にする必要があります。

Get-VMNetworkAdapter -VMName <仮想マシン名> | Set-VMNetworkAdapter -MacAddressSpoofing On

仮想マシンの再起動

仮想マシンの起動:

  • 再起動後、仮想マシンが正しく起動するか確認します。

Proxmoxネットワーク設定(ServiceLAN)

・Proxmoxからネットワークを設定

proxmoxの管理画面に入ったら、ノード(ここではproxmox01)を選択して、「ネットワーク」を選択します。

「vmbr0」をダブルクリックしたら、以下の設定画面が表示されますので。
設定が間違っていないことを確認してください。
※「vmbr0」では特段の設定を変更することはありません。

コメント:「Service」とでも入力しておいてあげてください。
ネットワークの種類がぱっと見わかるだけのメモです。

最後に「設定の適用」を必ずクリックしてください。

※この設定をProxmox01~03分作成してあげてください。

・動作確認

動作確認方法としては、同一ネットワーク内のPCからCMDを開いて、Pingなどで疎通の確認をしてあげてください。ネットワークの間にFWなどがなければ簡単に通信が通るかと思います。
そもそも管理画面が開けている時点で動作確認も不要なのは無視です。

Proxmoxネットワーク設定(Heartbeat)

・Hyper-Vからネットワークをマウント

いったん、Hyper-vに戻ります。

仮想マシンを一度、シャットダウンします。

仮想マシンの「設定」を開き、「ハードウェアの追加」を選択して、「ネットワークアダプター」を選択して、「追加」をクリックします。

すると、新しいネットワークアダプターが表示されますので次の通りに設定します。

仮想スイッチ箇所を「Heartbeat」として「適用」をクリックして下さい。

設定が完了したら。。再度仮想マシンを起動します。

・Proxmoxからネットワークを設定

仮想マシンが起動したら、管理画面のネットワークに戻ります。

すると、「eth1」が増えていることが確認できると思います。
この「eth1」をダブルクリックで設定画面を開きます。

IP:192.168.2.10x/24
自動起動:チェック
コメント:Heartbeat
と入力して、「OK」をクリックします。

「設定を適用」を必ずクリックしてください。

なぜ、1つづつネットワークアダプターを増やしているかというと、一気にネットワークアダプターを追加すると、Proxmox上でどのネットワークアダプターがどのネットワークになっているかの判断が、ややこしいからです。

シェルを開いて、MACアドレス何かを調べればわかりますが、逆に面倒なので1つづつ追加しています。また、イメージもしやすいので。

※この設定をProxmox01~03分作成してあげてください。

・動作確認

ここでの動作確認方法は、Proxmox01~03が構築できたら、シェルから同一ネットワークのIPに対してPingを撃ってあげれば確認がとれます。

Proxmoxネットワーク設定(Data)

・Hyper-Vからネットワークをマウント

先ほどと同じように、仮想マシンをシャットダウンし、設定画面を開きます。

新しい、ネットワークアダプターを追加したら「dataNW」を選択しまして「適用」をクリックします。
※設定が完了したら、仮想マシンの起動をお忘れなく。

・Proxmoxからネットワークを設定

「eth2」が追加されていることを確認したら、ダブルクリックで設定画面を開いてください。

IP:192.168.1.10x/24
自動起動:チェック
コメント:datanw
と入力して、「OK」をクリックします。

「設定を適用」を必ずクリックしてください。

※この設定をProxmox01~03分作成してあげてください。

・動作確認

シェルからQNAPのIPに向けてPingを飛ばして通ればOKです。
ここで通らなければiSCSIの設定ができません。

クラスタ設定

この設定をおこなうことで、手動でのマイグレーションを実行することができるようになります。
※この設定をしただけでは、片方のProxmoxサーバーで障害が発生した場合でも仮想サーバーのマイグレーションは発生しません。

ここまで、設定が完了していれば、Hyper-vでは以下のようになっているかと思います。
※proxmox01~03ができているかなぁと思います。

proxmox01(192.168.3.101:8006)の管理画面にログインします。

「データーセンター」ー「クラスタ」を選択して、「クラスタを作成」をクリックします。

クラスタ名:適当でOK
クラスタネットワーク:Link 0 : 192.168.2.101

として、「作成」をクリックします。

「TASK OK」と出ていることを確認します。

クラスタ情報が表示されていること。
※この段階ではproxmox01だけが表示されていることを確認します。

「Join情報」をクリックします。

クラスタJoin情報が表示されたら、「情報をコピー」をクリックします。
※ここではJoin情報をコピーしています。

次に、Proxmox02とProxmox03の管理画面にログインします。

※ここからは共通手順です。

「データーセンター」ー「クラスタ」を選択して、「クラスタに参加」をクリックします。

以下の「クラスタJoin」画面が表示されると思いますので、Proxmox01でコピーしたJoin情報を張り付けます。

張り付けると、行が増えるかと思います。
※情報が正しいとちゃんと表示されます。正しくないとNGです。

パスワード: 管理画面のログインパスワード
クラスタネットワークに:192.168.2.10x のheartbeatのネットワークを選びます。

入力したら、「Join ’proxmoxcluster’」をクリックします。

しばらく待ちます。待ちます。待ちます。待ちます。待ちます。待ちます。
ここで、待てど暮らせど完了までいきません。

いったん、×閉じで画面を閉じると、以下の状態になっているかと思います。
※「接続エラー」が2個表示されている状態

そこで、ブラウザをリフレッシュします。
すると、強制ログアウトされていますので、再度ログインをすると。

なぜだか、クラスタに参加できています。
※この段階でproxmox01と02が表示されていることを確認してください。

少し古い情報では、少し前の古いバージョンではproxmoxのローカル証明書が悪さをしているとの記事がありました。

ただ、今のバージョンのローカル証明書をみると、有効期限もきちんとありますので、証明書そのものが原因ではないようです。

経験則で語りますが、通信を行うときには通常、「アカウント」と「

パスワード」が必要になります。
クラスタを組んでるにも関わらず、いちいちアカウントとパスワードを入力してやり取りはしないですよね。

そこで、アカウントとパスワードの代わりに、子供関係にあたらうサーバーから親に当たるサーバーに対して証明書のカギを渡して、パスワードを不要でツウカアなやり取りができるようにします。(サーバを運用しているよくある方法)

その、鍵の交換時に一瞬通信断が発生しているのではないかという推測になります。
※公式回答見つからず。

最後に、proxmox03もクラスタに参加させてあげると、以下のような画面になっているかとおもいます。

ここまでくれば、クラスタとしての設定は以上です。

iSCSIドライブのマウント

次に、共有ディスクの設定を行います。

proxmox01の管理画面にはいりまして。

「データーセンター」ー「ストレージ」を選択して、「追加」をクリックします。

「iSCI」を選択して。

設定画面が表示されますので。。。

ID:好きな名前
Portal:192.168.1.104 QNAP側のIPアドレス
ターゲット:自動で表示されます。※複数ターゲットがある場合はQNAP側にもどって番号を確認してからえらんでくださいね。

最後に「追加」をクリックします。

すると、一行増えていることがわかります。
この後で作成する、仮想サーバーはこの領域にOSをインストールしていきます。

仮想サーバー作成

次に、仮想サーバーを作成していきたいと思います。

・準備編

「proxmox03」ー「local」を選択して、「ISOイメージ」を選択します。

「アップロード」をクリックします。

「ファイルを選択」をしたら、DLしておいたCentOSを選択して「アップロード」しておきます。

・仮想サーバー作成編

まずは、proxmox01の管理画面にログインしておきます。
※正直なところ02、03側にログインしてもいいのですが、、、理由は最後に記載します。

「proxmox03」を選択して、「VMを作成」をクリックします。

以下のような設定画面が表示されます。

名前:TEST (適当)

を入力して「次へ」

ISOイメージ:アップロードしたCentOSを選択

「次へ」をクリックします。

そのまま、「次へ」

バス/デバイス:SCSI 0
ストレージ:proxmoxstorage
ディスクイメージ: proxmoxstorage で設定したLUNを入れる。

「次へ」をクリックします。

CPUの設定はいろいろと考え方がありますが、ここは何も考えず以下の設定で遊んでください。

ソケット:1
コア:2
種別:host

「次へ」をクリックします。

「次へ」をクリックします。

「次へ」をクリックします。

「完了」をクリックします。

正常に完了すると、ID100番の仮想サーバーが作成されているかと思います。

あとは開始をして、OSを起動させますが。。この先のCentOSのインストール手順は省きます。
OSのインストールまで完了させてあげてください。

CENOSがインストール完了すると、付きで再生しているかと思います。

なぜ、proxmox01側の管理画面で操作をしていくのか?

これについて私の答えを書いていきます。

クラスタを組む際にproxmox01側を親としています。
親となったproxmoxは通常よりリソース(MEM,CPU)を消費します。
そのため、仮想サーバーを01側に作ると、ただでさえ、クラスタ配下のproxmoxをかんrに重い処理をしているのに、さらに仮想サーバーの面倒見なくてはいけなくなります。

この検証環境ではproxmox01-03で平等にマイグレーションしてしまうような順番付けをしていますが、本番で実装する場合は、proxmox01にあたるサーバーは最後の砦てきに、仮想マシンが勝手に移動しないようにすることがほとんどです。

ライブマイグレーション動作確認

仮想マシン 100を選択して、右クリック。「マイグレーション」を選択します。

この時、「Can’t Migrate VM with local CD/DVD」と怒られます。
これは、ハードウェアのCD/DVDがマウントされていると出ます。

「ハードウェア」ー「CD/DVD」を選択して、「削除」をします。
※仮想サーバー100を再起動してあげてください。
必要になったら、また追加してあげれば使えます。

もう一度、マイグレートを実行すると

「TASK OK」と表示されていることを確認します。

proxmox02側で仮想サーバー100が起動状態で移動していることがわかりますね。

<マイグレーションの種類の説明>

手動でマイグレーションを実行するときはライブマイグレーションとして、サーバーを停止せずに移動することが可能です。

障害などでサーバーが移動するときはクイックマイグレーションが実行されます。
クイックマイグレーションとは仮想サーバーがOSが一度停止して、移動先で自動で立ち上がることを言います。
※障害時はホスト側のメモリーのコピーが不可能になりますのでか、どうしても仮想サーバーが一度、再起動する形になってしまいます。(こればかりはどうしようもない。)

HA設定

この設定を行うことで、仮想サーバーが乗っている、Proxmoxが障害などで停止した場合に、稼働中のProxmoxサーバーへとマイグレーションしてくれるようになります。

「データセンター」ー「HA」を選択し、「追加」をクリックします。

VMでID:100の仮想サーバーを選択し、「追加」をクリックします。

リソースにノードが追加されていることが確認します。

設定としては以上になります。

次に、HAの動作確認をします。

動作確認(手動で障害を発生させる)※マイグレーションの確認

実際にProxmoxを停止して、マイグレーションがするかを確認します。

現在どの位置に仮想サーバーがあるかを確認します。※proxmox02にあることがわかります。

Hyper-vに移りまして、proxmox02を「停止」させます。
※ここでは「シャットダウン」ではなく「停止」をおこないます。

右クリックして「停止」を選択します。

「オフ」状態になっていることを確認します。

Proxmoxの管理画面に戻りまして、proxmox02が状態であることを確認します。

1分~2分ほど待つと、proxmox01かproxmox03のどちらかに移動することを確認します。
※今回は01側に移動しましたね。

ここで重要なのは、仮想サーバーがで起動していますが。
裏では一度再起動しています。

全然停止せずに、マイグレーションするってことはありません。
※手動でマイグレーションする場合は停止せずに移動されます。

まとめ

基本的な設定は以上となります。

今回の構成は仕事なので利用できる、最低限の構成にしています。

本格的なHAを考慮するのであれば、NWの設定周りをもっとしっかりやりたいかなと思います。

例えば。。。

・ネットワークの冗長化
・クラスターネットワークとハートビートのネットワークを別にする。
・クラスターネットワークを10Gbps、ハートビートのネットワークを10mbps & セグメントの制限 など
・HDDの冗長化
・メモリ、CPUの冗長化
・HDDではなくSSDにする。
などなど。。。

いっぱい考えなければいけないことがありますね。。。

コメント

タイトルとURLをコピーしました