40
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS7.3とoVirtとGlusterFSによるOSS版ハイパーコンバージドインフラ(構築編)

Last updated at Posted at 2017-04-07

はじめに

oVirtはRHEV(Red Hat Enterprise Virtualization)のアップストリームにあたるOSSで、商用の仮想化製品と同等の機能が無償で利用できるKVM仮想化基盤ソフトです(単なるKVMの管理ソフトを探している人は手を出さないことをお勧めします)。開発速度が早く日本語の最新情報は少ないですが、コミュニティーMLの投稿は活発で、Red Hatの開発者を中心に現在も開発が精力的に進められているようです。

昨年末にHyperconverged Infrastructure using oVirt and Glusterのblogを発見して、oVirtがGlusterFSと組み合わせたハイパーコンバージド構成を推進していることを知り使ってみたところ、共有ディスクを用意することなく仮想化基盤が作れるため小規模構成に向いていると感じました。しかしながら実際に構築しようとすると、oVirt4.1系で構築方法がCLIベースからWebベースになるという大きな変更があったこともあり、正規の手順が見当たりませんでしたのでノウハウを共有したいと思います。

3台のホストのローカルディスクをGlusterFSのreplicatedを使って冗長化します。ディスク容量が1/3しか使えないというデメリットと(後述のArbiter機能である程度改善可能)、oVirtが動作することによるオーバーヘッドというデメリットがありますが、その代わりに商用仮想化製品の持つメリットを享受できます。oVirt+GlusterFSの最小構成は以下の図のようになります。
pic01.PNG

本記事ではまずoVirtとGlusterFSを使用した仮想インフラ基盤の構築手順について紹介します。そして次の記事CentOS7.3とoVirtとGlusterFSによるOSS版ハイパーコンバージドインフラ(運用編)ではゲストOSの作成手順と、作成したゲストOSのスナップショット作成、クローン作成、ライブマイグレーション、ゲストHA、ホストHAといった運用に役立つ機能を紹介します。

環境

ハードウェア構成

本環境ではローエンドなNUCを使用していますがoVirtのオーバーヘッドを考慮するとよりハイスペックなマシンを使用することをお勧めします(下記性能の場合、各ホストのCPU使用率が常時30%程度あり、Hosted-Engineが稼動するホストはメモリー使用率も75%程度ありました。)

ホスト名 機種 CPU Memory HDD
host1 DN2820FYKH Celeron 2core 8GB SSD 120GB
host2 DN2820FYKH Celeron 2core 8GB SSD 120GB
host3 NUC5CPYH Celeron 2core 8GB SSD 120GB

IPアドレスは分かりやすいように以下の通りシンプルな構成にしています。本記事では下記を前提に説明していきます。

pic02.PNG

ソフトウェアバージョン

2017/4/7時点の最新のoVirtを使用しています。oVirtは開発サイクルが早いのですぐに新しいバージョンが出ると思われますが、インストール方法が大幅に変わったばかりなのでしばらくは本記事の手順が生かせると思います。

OS oVirt GlusterFS
CentOS 7.3.1611 4.1.1.6 3.8.10

構築手順

CentOS7 インストール(host1,host2,host3共通手順)

細かい手順は省略します。本環境ではソフトウェアの選択は「最小限のインストール」を選択しています。ディスクサイズが120GBしかないためルートパーティションに15GBだけ割り当て、oVirt用のパーティションはOSインストール後に作成します。

マウントポイント サイズ
/boot/efi 0.5GiB
/boot 0.5GiB
swap 4GiB
/ 15GiB

インストールが完了したらyumアップデートします。

# yum -y update
# shutdown -r now
# uname -a
Linux host1 3.10.0-514.10.2.el7.x86_64 #1 SMP Fri Mar 3 00:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

名前解決

各ホスト同士はホスト名でSSHログインできる必要があります。DNS環境がない場合はhostsを設定して下さい。

/etc/hosts
192.168.12.101 host1 host1.jitaku.test
192.168.12.102 host2 host2.jitaku.test
192.168.12.103 host3 host3.jitaku.test
192.168.12.111 ovirt-engine ovirt-engine.jitaku.test

クライアント端末からもホスト名でアクセスできるように設定します。Windowsの場合は以下のように設定して下さい。

\Windows\System32\drivers\etc\hosts
 192.168.12.101 host1 host1.jitaku.test
 192.168.12.102 host2 host2.jitaku.test
 192.168.12.103 host3 host3.jitaku.test
 192.168.12.111 ovirt-engine ovirt-engine.jitaku.test

パーティション作成

oVirt用のパーティション(本環境では/dev/sda4)を作成します。本環境では/dev/sda4に全空き容量の90GB程度を割り当てました。

# ls /dev/sda*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3
# gdisk /dev/sda
# shutdown -r now
# ls /dev/sda*
 /dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sda4

公開鍵の登録

各サーバ間はSSHでパスワードレスのrootログインをできるようにします。各サーバでそれぞれ下記を実行して下さい。

# ssh-keygen -N "" -t rsa
# ssh-copy-id root@host1
# ssh-copy-id root@host2
# ssh-copy-id root@host3

その他、各自の環境に応じたOS設定を行って下さい。

なおfirewalldやSELINUXは後ほど実施するデプロイ時に自動設定されるため癖で(?)止めないようにして下さい。

Hosted Engineのデプロイ

oVirt hosted engine と vdsm package、cockpit UIのインストール(host1,host2,host3共通手順)

oVirtのリポジトリーパッケージをインストールして必要なパッケージをyumで一括ダウンロードします。

# yum install http://resources.ovirt.org/pub/yum-repo/ovirt-release41.rpm
# yum -y install screen ovirt-hosted-engine-setup vdsm-gluster ovirt-engine-appliance gdeploy cockpit cockpit-ovirt-dashboard cockpit-ovirt-uiplugin
# systemctl start cockpit
# systemctl enable cockpit.socket
# firewall-cmd --zone=public --add-port=9090/tcp --permanent
# firewall-cmd --reload

以降はhost1のみで実施します。

基本設定(Logical Volume、GlusterFS Volume、SELINUX、Firewalld等)のデプロイ(host1のみで実施)

Cockpit UIをインストールするとホストに直接ブラウザアクセスすることができるようになりますので、以下のURLにアクセスしてストレージ設定やHosted Engine(VMwareのvCenterにあたる管理用VM)のインストールを行います。

https://host1:9090/ovirt/ovirt

ログイン画面が表示されたらhost1のOSのログインIDとPWを入力してログインします。
01.PNG

Virtualization -> Hosted Engine をクリックして「Hosted Engine with Gluster」を選択しStartをクリックします。
02.PNG

クラスタを構成するホスト名を入力します。ここで入力するホスト名にはhost1からパスワードレスでSSHできる必要があります。
03.PNG

リポジトリ名は空で構いません。
04.PNG

GlusterFSの詳細パラメータの設定を行います。ここでは、Hosted Engine用の「engine」、仮想マシン保存用の「data」、仮想マシンインストールに使用するISOイメージ保存用の「iso」の3つのボリューム用にブリックを指定しています(ディレクトリは自動的に作成されるため前もって作成しておく必要はありません)。「iso」のブリック(本環境では/gluster/iso/brick1)は仮想マシン作成用にISOイメージをアップロードする際に必要になりますので覚えておいて下さい。
ちなみにArbiterはスプリットブレインを回避しつつディスク使用量を削減できるGlusterFSの機能です(詳しくはoVirtの公式Blogを参照して下さい。)。本記事ではArbiterを使わずに進めますが、ファイル数が少ない場合にはArbiterを有効にすると3台目のディスク使用量を大きく減らすことができますので、例えば複数ブリックを作成してArbiterノードを分散させることで全体のディスク使用効率を上げることが可能です。また、ブリックを1つしか作らない場合でも、Arbiterノードにバックアップファイルを保存する等で使用効率を高めることもできます。
05.PNG

ディスク周りの詳細設定です。上部にRAID設定がありますが、本環境では各サーバはディスクを1つしか搭載していないためRaid TypeにはJBODを選択しています。
次に下部にある各ボリュームのサイズを設定します。Hosted Engineの要件として20GB以上が必要なため、engineボリュームは少し余裕を見て21GBにしています。isoボリュームはISOイメージを2つは置けるように10GBにしています。dataには残りの領域を割り当てています。ちなみにここでThinpにチェックを入れることでLogical Volume自体をThin provisioningにすることも可能ですが、後ほど仮想マシンを作成する際に仮想マシン単位で設定することが可能なためチェックを入れていません。
06.PNG

最後に確認画面が表示されます。ここで細かい修正が可能なようですが特に修正する必要はありませんのでそのままDeployをクリックします。
07.PNG

各ホストに対してLVMやGlusterFS、Firewalld、SELINUXの設定などが自動的に行われるのでしばらく待ちます(Ansibleを使っているようです。)
08.PNG

以下のような画面になれば正常にデプロイ完了です。そのまま「Continue to Hosted Engine Deployment」をクリックしてHosted Engineのデプロイに進みます。
09.PNG

Hosted Engineのデプロイ(host1のみから実施)

ここまでの作業でHosted Engine用のディスクが作成されていますので、問いに答えて行くことでインストールまで完了します。

以降はページ容量削減のためテキストベースで内容を記載していきます(太字が本環境での回答内容です)。
10.PNG

Continuing will configure this host for serving as hypervisor and create a VM where you have to install the engine afterwards.
Are you sure you want to continue? Yes


Do you want to configure this host and its cluster for gluster? (Yes, No) [No]:Yes


Please indicate a pingable gateway IP address [192.168.12.1]: 192.168.12.1

完了にあわせてデフォルトルートを設定します。

Please indicate a nic to set ovirtmgmt bridge on: (enp3s0, enp0s20u1) [enp3s0]: enp3s0


Please select an appliance (1, 2) [1]: 1


Would you like to use cloud-init to customize the appliance on the first boot (Yes, No)[Yes]?
Yes


Would you like to generate on-fly a cloud-init ISO image (of no-cloud type)
or do you have an existing one (Generate, Existing)[Generate]?
Generate


Please provide the FQDN you would like to use for the engine appliance.
Note: This will be the FQDN of the engine VM you are now going to launch,
it should not point to the base host or to any other existing machine.
Engine VM FQDN: (leave it empty to skip): []:
ovirt-engine.jitaku.test


Please provide the domain name you would like to use for the engine appliance.
Engine VM domain: [jitaku.test]
jitaku.test


Automatically execute engine-setup on the engine appliance on first boot (Yes, No)[Yes]?
Yes


Enter root password that will be used for the engine appliance (leave it empty to skip):
[パスワードを入力]


Confirm appliance root password:
[パスワードを入力]


Enter ssh public key for the root user that will be used for the engine appliance (leave it empty to skip):
未入力(空白のまま)


Do you want to enable ssh access for the root user (yes, no, without-password) [yes]:
Yes


Please specify the memory size of the VM in MB (Defaults to maximum available): [6704]:
6704

メモリー搭載量に応じてデフォルト値が変わりますのでHosted Engineに割り当てる量を修正して下さい(4GBでは厳しいと思います。)

Please specify the CPU type to be used by the VM [model_Nehalem]:
model_Nehalem


Please specify the number of virtual CPUs for the VM (Defaults to appliance OVF value): [4]:
2


You may specify a unicast MAC address for the VM or accept a randomly generated default [00:16:3e:XX:XX:XX]:
00:16:3e:XX:XX:XX


How should the engine VM network be configured (DHCP, Static)[DHCP]?
Static


Please enter the IP address to be used for the engine VM [192.168.12.2]:
192.168.12.111

任意のHosted EngineのIPアドレスを入力します。

Please provide a comma-separated list (max 3) of IP addresses of domain name servers for the engine VM
Engine VM DNS (leave it empty to skip) [AAA.AAA.AAA.AAA,BBB.BBB.BBB.BBB]:
AAA.AAA.AAA.AAA,BBB.BBB.BBB.BBB

OSに設定しているDNSサーバのアドレスが自動設定されます(各自の環境に読み替えて下さい。)


Add lines for the appliance itself and for this host to /etc/hosts on the engine VM?
Note: ensuring that this host could resolve the engine VM hostname is still up to you
(Yes, No)[No]
Yes


Enter engine admin password:
[パスワードを入力]


Confirm engine admin password:
[パスワードを入力]


Please provide the name of the SMTP server through which we will send notifications [localhost]:
localhost


Please provide the TCP port number of the SMTP server [25]:
25


Please provide the email address from which notifications will be sent [root@localhost]:
root@localhost


Please provide a comma-separated list of email addresses which will get notifications [root@localhost]:
root@localhost


Please confirm installation settings (Yes, No)[Yes]:
Yes


ここまで設定が終わったらデプロイが始まりますので完了するのを待ちます。
39.PNG


「Hosted Engine Setup successfully completed!」が表示されたら完了です。
40.PNG


Hosted Engineデプロイ後の確認

以下のようにCockpit UIで設定した内容で自動設定が行われていることが確認できます。

# lvs
   LV                VG              Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
   root              cl_host1        -wi-ao---- 15.00g
   swap              cl_host1        -wi-ao----  4.00g
   gluster_lv_data   gluster_vg_sda4 -wi-ao---- 60.00g
   gluster_lv_engine gluster_vg_sda4 -wi-ao---- 21.00g
   gluster_lv_iso    gluster_vg_sda4 -wi-ao---- 10.00g

# gluster peer status
 Number of Peers: 2

 Hostname: host2
 Uuid: 7d40a7a9-0ffa-4231-9cc8-9bba873d980c
 State: Peer in Cluster (Connected)

 Hostname: host3
 Uuid: 9b77feb3-d150-4003-94ea-ba0c7362c08f
 State: Peer in Cluster (Connected)

Hosted Engineの基本設定

Hosted Engineへのログイン

ブラウザから以下のURLにアクセスするとoVirt Managerが開きますので、「管理ポータル」リンクをクリックします。

https://ovirt-engine.jitaku.test

41.PNG

IDは「admin」、PWは先ほどHosted Engineのdeployで指定したものを入力します。
42.PNG

ログインに成功するとダッシュボードが開きます。
43.PNG

dataドメインとengineドメインの追加

上部のストレージタブを選択して「新規ドメイン」をクリックし、以下のように入力することでdataドメインを追加します。
45.PNG

OKをクリックすると、dataドメインとともにengineドメインも追加されて最終的に以下のような状態になります。
46.PNG

ホストの追加

上部メニューのホストタブを選択して「新規作成」をクリックし、host2を追加します。host2のIPアドレスとOSにログインする際のパスワードを入力します。
49.PNG

次に左側にあるセルフホストエンジンタブをクリックして「デプロイ」を選択することでHosted Engineをhost2にデプロイします。本設定によりhost2でもHosted Engineを起動できるようになります。複数のHosted Engineを同時に起動することはできませんが、障害時にHosted Engineがhost2へフェイルオーバーできるようになります。
50.PNG

以上で設定完了です。NUCには電源管理機能がないことから電源管理設定をしていないためワーニングが出ましたがOKで問題ありません。
51.PNG

同じ要領でhost3も追加します。
52.PNG
53.PNG

追加後、まず、host2とhost3のステータスがInstallingになります。
54.PNG

ステータスがUpになってしばらくすると左の方にエクスクラメーションマークのアイコンが表示されますが、これはHosted Engineのインストール中を表しています。
55.PNG

エクスクラメーションが取れて最終的にシルバーの冠のようなアイコンがhost2とhost3に表示されればHosted Engineのデプロイまで完了しています。
56.PNG

※実際には以下のコマンドを実行してログが定期的に出力されている場合はまだ完全には完了していませんので障害試験等は安定するまでやらない方が無難です。ちなみに本環境の非力なNUCでは安定するまで1~2時間程度を要しました。

[root@host1 ~]# tail -f /var/log/vdsm/vdsm.log

ISOドメインの追加

dataドメインを追加した要領でisoドメインも追加します。上部のストレージタブを選択して「新規ドメイン」をクリックし、以下のように入力することでisoドメインを追加します。
57.PNG

以下のようにISOドメインのステータスがActiveになったら完了です。
58.PNG

最後に

以上でホストのセットアップは完了です。このまま続けたいところですが長くなってきましたので記事を分割します。

次の記事CentOS7.3とoVirtとGlusterFSによるOSS版ハイパーコンバージドインフラ(運用編)では、まずゲストOSの作成手順について説明します。

その後、作成したゲストOSのスナップショット作成、クローン作成、ライブマイグレーション、ゲストOS障害時のHA動作、ホストOS障害時のHA動作といった基本的なオペレーション手順について紹介します。

参考文献

Hyperconverged Infrastructure using oVirt and Gluster
CentOS7.1にKVMハイパーバイザーを構築してoVirtで管理してみる Part.1
oVirt Blog
oVirt Users Archive
oVirt and Gluster hyper-converged!

40
43
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?