vm.gowatana.jp

NEOにほんごVMware(仮)

Horizon 8 のイベント データベースを構築してみる。(PostgreSQL)

Horizon では、一般的にイベント情報を管理するためのデータベースを構築します。今回は、ラボむけに Bitnami の PostgreSQL 仮想マシンでイベント データベースを用意してみます。

 

今回の内容です。

 

今回の環境

Horizon 8 は、今回も下記の投稿で用意した Horizon ラボ環境を利用しています。

Horizon のバージョンは 2203 を利用していますが、このバージョンでの Connection Server は 2111 のままになっています。

 

Horizon のイベント データベースは、Horizon とは別にデータベース ソフトウェアが必要です。これまでは Microsoft SQL Server、Oracle Databaes が利用されていました。

VMware のドキュメントでは、下記のあたりに説明があります。

 

PostgreSQL によるイベント データベースは、Horizon 8 のバージョン 2103 からサポートされています。

 

今回の PostgreSQL は、ラボむけにできるだけ簡単に構築すべく、Bitnami で提供されている仮想マシン イメージを利用します。

 

Bitnami のサイトには、VMware Product Interoperability Matrix と完全一致するバージョンが見当たらなかったので、マトリックスにある最新版に近いものを利用します。

今回利用した OVA バージョンは下記です。

  • PostgreSQL packaged by Bitnami 13.7.0-3

 

そして、今回のデータベース サーバは下記のように設定します。

  • 仮想マシン名: lab-db-81
  • IP アドレス: 192.168.80.51
  • OS ユーザ / パスワード: bitnami / VMware1!

 

1. PostgreSQL データベース サーバの構築

PostgreSQL の OVAを ファイルをデプロイして、OS と PostgreSQL の設定をラボ環境に合わせます。

 

1-1. OVA デプロイ

vSphere Client から、ESXi に OVA ファイルをデプロイします。

今回は、下記の OVA ファイルをデプロイしました。

  • bitnami-postgresql-13.7.0-2-r02-linux-debian-10-x86_64-nami.ova

 

デプロイでは、一般的な OVA のパラメータのみです。ネットワーク アドレスや、PostgreSQL ならではの設定は、仮想マシンをパワーオンしてから手作業で変更します。

 

デプロイが完了したら、仮想マシンをパワーオンします。

 

1-2. OS 設定変更

まずは、vSphere Client の VM コンソールを開いて作業を進めます。

 

最初に、デフォルトの ユーザ / パスワードでログインします。すぐにパスワード変更要求があるので、今回は VMware1! に変更しておきます。

  • ユーザ: bitnami
  • 初期パスワード: bitnami 

 

ネットワーク アドレスを設定します。これは、あとで SSH 接続してから、あらためてファイルに設定します。

$ sudo ip a add dev ens192 192.168.80.51/24
$ sudo ip r add default via 192.168.80.1

 

SSH のパスワード認証を有効化するため、/etc/ssh/sshd_config ファイルで下記を設定しておきます。

  • PasswordAuthentication yes
$ sudo vi /etc/ssh/sshd_config

 

SSH を有効化し、サービスを起動します。

$ sudo rm -f /etc/ssh/sshd_not_to_be_run
$ sudo systemctl enable ssh
$ sudo systemctl start ssh

 

ここからは、SSH 接続経由で作業します。

データベース サーバ(192.168.80.51)に、bitnami ユーザでログインします。パスワードは OS 初回ログイン時に設定した VMware1! です。

$ ssh bitnami@192.168.80.51

 

実際には、下記のようにログインできるはずです。(赤線部分がキー入力箇所です)

 

さきほど一時的に設定したネットワーク アドレスを、ファイルに記載して永続化します。

$ sudo mv /etc/systemd/network/99-dhcp.network /etc/systemd/network/25-static.network
$ sudo vi /etc/systemd/network/25-static.network

 

ファイルは、下記のように編集します。

[Match]
Name=e*

[Network]
DHCP=no
Address=192.168.80.51/24
Gateway=192.168.80.1

 

ネットワーク サービスを再起動して、ファイルに記載した内容をネットワーク設定に反映します。

$ sudo systemctl restart systemd-networkd

 

DNS サーバの設定を変更します。これは即時反映されます。

$ echo 'nameserver 192.168.80.11' | sudo tee /etc/resolv.conf

 

OS のファイアウォールで、PostgreSQL データベース サーバのポート(5432/tcp)を開放しておきます。「192.168.80.0/24」は、今回のラボ ネットワークです。

$ sudo ufw allow proto tcp from 192.168.80.0/24 to any port 5432
Rule added
$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
5432/tcp                   ALLOW       192.168.80.0/24
22/tcp (v6)                ALLOW       Anywhere (v6)

 

1-3. PostgreSQL のデータベース サーバ設定変更

ひきつづき SSH 接続経由で、Horizon Connection Server から PostgreSQL のデータベースに接続するための設定をしておきます。

VMware のドキュメントでは、下記のあたりに少しだけ説明があります。

 

postgresql.conf ファイルに、データベース サービスがリスニングするアドレスを設定しておきます。

$ echo "listen_addresses = '192.168.80.51'" | sudo tee --append /opt/bitnami/postgresql/conf/postgresql.conf

 

下記のように、設定が追記されたことを確認しておきます。「#」開始の行はコメントです。

$ grep listen_addresses /opt/bitnami/postgresql/conf/postgresql.conf
#listen_addresses = 'localhost'         # what IP address(es) to listen on;
listen_addresses = '192.168.80.51'

 

pg_hba.conf ファイルに、データベースへの接続許可を設定します。

$ echo 'host all all 192.168.80.0/24 md5' | sudo tee --append /opt/bitnami/postgresql/conf/pg_hba.conf

 

下記のように、設定が追記されたことを確認しておきます。

$ cat /opt/bitnami/postgresql/conf/pg_hba.conf
local    all             all                                     md5
host     all             all        127.0.0.1/32                 md5
host     all             all        ::1/128                      md5
host all all 192.168.80.0/24 md5

 

PostgreSQL のサービスを再起動しておきます。

$ sudo /opt/bitnami/ctlscript.sh restart
Restarting services..

 

そして、サービスが起動されたことを確認しておきます。

$ sudo /opt/bitnami/ctlscript.sh status
postgresql already running

 

1-4. PostgreSQL 接続ユーザのパスワード変更

PostgreSQL データベースへの接続には、今回はデフォルトで作成されている「postgres」ユーザを利用します。ラボで扱いやすいように、パスワードを変更しておきます。

 

自動生成された初期パスワードを確認しておきます。今回は、「YesMsgVFegC9」でした。これは OVA をデプロイするたびに異なります。

$ cat $HOME/bitnami_credentials | grep postgres
The default username and password is 'postgres' and 'YesMsgVFegC9'.

 

psql コマンドを使用して、postgres ユーザで PostgreSQL に接続します。パスワードは、確認した初期パスワードを入力します。

$ psql -U postgres

 

postgres ユーザのパスワードを、VMware1! に変更します。

# alter user postgres with password 'VMware1!';

 

そして、psql を終了します。

# \q

 

実際にここまでのコマンドラインを実行すると、下記のようになります。赤下線が入力箇所です。

 

2. Horizon Console でのイベント データベース構成

Horizon Console でイベント データベースを設定して、イベント情報が表示されるようになることを確認します。

 

2-1. イベント データベースの構成

VMware のドキュメントでは、下記のあたりに説明があります。 

 

イベント データベースが未構成の Horizon Console では、当然ながらイベント情報が表示されません。

 

イベント データベースを構成します。

Horizon Console の「設定」→「イベント構成」を開いて、イベント データベースの「編集」をクリックします。

 

「イベント データベースを編集」画面が表示されるので、下記のように入力してから「OK」をクリックします。

  • データベース サーバ: 192.168.80.51
  • データベース タイプ: PostgreSQL
  • ポート: 5432
  • データベース名: postgres
  • ユーザー名: postgres
  • パスワード: VMware1!
  • テーブルのプリフィックス: evt81_(データベースに自動作成されるテーブル名などのプリフィックスになる)

 

これで、イベント データベースが構成されました。

 

2-2. イベント情報の確認

「監視」→「イベント」を開くと、イベント情報が表示されるようになります。

イベント データベース構成以降の、Horizon Console のログインやプールの操作などが表示されるはずです。

 

ちなみに、PostgreSQL の postgres データベースには、自動的にテーブルなどが作成されます。テーブル名などには、さきほど指定したプリフィックスが付与されます。

bitnami@debian:~$ psql -U postgres
Password for user postgres:
psql (13.7)
Type "help" for help.

postgres=# \c postgres
You are now connected to database "postgres" as user "postgres".
postgres=# \dt
                    List of relations
 Schema |            Name             | Type  |  Owner
--------+-----------------------------+-------+----------
 public | evt81_event                 | table | postgres
 public | evt81_event_data            | table | postgres
 public | evt81_event_data_historical | table | postgres
 public | evt81_event_historical      | table | postgres
 public | evt81_props                 | table | postgres
 public | evt81_timing_profiler       | table | postgres
(6 rows)

postgres=#
postgres=# \q
bitnami@debian:~$

 

3. イベント データベース設定のクリア

イベント データベースの構成は、「設定」→「イベント構成」→「クリア」から解除できます。

 

確認画面が表示されるので、「OK」をクリックするとクリアされます。

 

イベント データベースの構成をクリアしても、データベースに格納されたイベント情報は残ります。そのため、再度イベント データベースの構成をすれば、過去のイベント情報が表示されます。

以上、PostgreSQL で Horizon のイベント データベースを構築してみる話でした。