Horizon では、一般的にイベント情報を管理するためのデータベースを構築します。今回は、ラボむけに Bitnami の PostgreSQL 仮想マシンでイベント データベースを用意してみます。
今回の内容です。
今回の環境
Horizon 8 は、今回も下記の投稿で用意した Horizon ラボ環境を利用しています。
Horizon のバージョンは 2203 を利用していますが、このバージョンでの Connection Server は 2111 のままになっています。
Horizon のイベント データベースは、Horizon とは別にデータベース ソフトウェアが必要です。これまでは Microsoft SQL Server、Oracle Databaes が利用されていました。
VMware のドキュメントでは、下記のあたりに説明があります。
PostgreSQL によるイベント データベースは、Horizon 8 のバージョン 2103 からサポートされています。
- VMware Product Interoperability Matrix の確認結果はこちら。
https://interopmatrix.vmware.com/Solution?key=%7B%22rows%22:%5B%7B%22productId%22:569,%22releases%22:%5B7829,5927,5588,5372,5080,4094%5D%7D%5D,%22columns%22:%5B%7B%22categoryId%22:1,%22extProdIds%22:%5B%5D%7D%5D%7D
今回の PostgreSQL は、ラボむけにできるだけ簡単に構築すべく、Bitnami で提供されている仮想マシン イメージを利用します。
- PostgreSQL packaged by Bitnami
https://bitnami.com/stack/postgresql/virtual-machine
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 のイベント データベースを構築してみる話でした。