Cloud

vCloud Director Installation Part 1 – Database

This is part 1 of the vCD 9.0 Installation guide.

In this section we will install the database required for vCD

There are now 3 databases supported for vCD

  • Oracle
  • Microsoft SQL Server
  • PostgreSQL

This guide will focus on setting up a vCD database with PostgreSQL on CentOS 7, but if you need to use another option, refer to the official documentation: https://docs.vmware.com/en/vCloud-Director/9.0/com.vmware.vcloud.install.doc/GUID-A3CDF724-7BFA-4BD0-95C4-55AC7A9F4055.html

NOTE: Only version 9.5 of PostgreSQL is supported at the time of vCD 9.0 release: http://partnerweb.vmware.com/comp_guide2/sim/interop_matrix.php#db&224=2415&database=293

PostgreSQL vCD Database Hardware Requirements

Configure the PostgreSQL Virtual Machine with at least the following specification

This lab will only have one vCD cell:

  • OS: CentOS 7
  • 100GB Disk
  • 16GB Memory
  • 4 vCPUs

Install a supported OS.

In this example I’m using CentOS 7 but any OS that supports PostgreSQL (and vice-versa) will work.

I like to use a minimal CentOS installation to keep things clean and free from unnecessary bugs and performance issue, you don’t need a UI so CentOS minimal works well

  • Download and boot into the latest CentOS 7 installation media located here http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1708.iso

Install the operating system with defaults except:

  • On the Installation Summary page, select Installation Destination and then Done on the top right
  • Also on the Installation Summary page, scroll down to Network and Hostname. Enable each NIC & hit Configure to set the IP address. Also set the hostname at the bottom of the screen.

  • Ensure that both the Timezone & Keyboard language is correct
  • Hit “Begin Installation” once ready
  • Set the root password
  • Reboot when prompted

 

Update the OS and install required components

Connect to the VM with SSH and first update yum:

  • yum update yum

Next, update the remainder of the system:

  • yum update

  • Reboot the guest OS

Install the PostgreSQL 9.5 RPM

  • rpm -ivh http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm

Install core packages and PostgreSQL 9.5

  • yum install net-tools postgresql95 postgresql95-server postgresql95-libs postgresql95-contrib

Change default postgreSQL password

  • passwd postgres

Make PostgreSQL start on boot

  • /usr/pgsql-9.5/bin/postgresql95-setup initdb
  • systemctl start postgresql-9.5.service
  • systemctl enable postgresql-9.5.service

Change to the postgres user

  • sudo -u postgres -i

Create the vCD user and database (Change the password as required)

  • psql
  • create user vcloud;
  • alter user vcloud password ‘VMware1!’;
  • alter role vcloud with login;
  • create database vcloud;
  • grant all privileges on database vcloud to vcloud;

Source: https://docs.vmware.com/en/vCloud-Director/9.0/com.vmware.vcloud.install.doc/GUID-07148F9F-3A69-4E99-93B4-46ED300FB7D1.html

Allow PostgreSQL connections through the default firewall configuration

  • Log in as root
  • firewall-cmd –zone=public –add-service=postgresql

Allow the vcloud user to login externally

  • Add the line below to pg_hba.conf (It means, allow the cloud user to login to the vcloud database from the 10.0.0.0/24 network with encrypted password) You might need to change the username/database name/network accordingly:
  • vi /var/lib/pgsql/9.5/data/pg_hba.conf
    • host    all             all             10.0.0.0/24            md5

Set the postgreSQL listening port and ip

  • vi /var/lib/pgsql/9.5/data/postgres.conf
  • Add these details:
    • listen_address = ‘*’
    • port= 5432

Install NTP to keep the clock in sync:

  • yum install ntp

Configure ntp servers

“You must use a network time service such as NTP to synchronize the clocks of all vCloud Director servers, including the database server. The maximum allowable drift between the clocks of synchronized servers is 2 seconds.”

VMware generally recommends to use at least 4 NTP servers. Using VI, change the lines beginning with server to NTP servers. All components connecting to vCD should share the same NTP servers for accurate timekeeping:

  • vi /etc/ntp.conf

Start the ntpd service

  • systemctl start ntpd
  • systemctl enable ntpd

Ensure ntpd is running:

  • systemctl status ntpd

Check ntpd is syncing to correct ntp servers (If you are using a pool, they might not have the same IP/hostname as the pool)

  • ntpq -p

Ensure that the date is set correctly

  • date -R

Ensure that the DB VM hostname is in DNS as an A record and that you have a PTR set too

“All host names that you specify during installation and configuration must be resolvable by DNS using forward and reverse lookup of the fully qualified domain name or the unqualified hostname”

Verify the above with for example:

  • yum install bind-utils (to install nslookup)
  • nslookup vcloud
  • nslookup vcloud.example.com
  • nslookup 192.168.1.1

For this lab environment, I turn off selinux but leave the firewall enabled:

  • vi /etc/sysconfig/selinux

Change SELINUX=enforcing

to

SELINUX=disabled

NOTE: This is line 6 of the config file, not the last line

Now would be a good time to reboot the server

Next section: vCloud Director Installation Part 2 – vCD Base Operating System

2 Comments

  1. Thanks a lot for writing this down, it helped me a lot getting started with vCD.

    I actually found one small error, in the listener section it is /var/lib/pgsql/9.5/data/postgresql.conf instead of /var/lib/pgsql/9.5/data/postgres.conf. (at least for me).

    And I would suggest on going on with chrony instead of ntpd (minor detail), see here:
    https://chrony.tuxfamily.org/comparison.html

    1. Hi Dominik
      Thanks for the comments!
      Yes, you are correct, the config file is named postgres.conf (Thank you!)
      The reason I selected NTPD is that it is more commonly known and available in default repos but happy to let others know about the alternatives.

      Good luck with your vCD venture!

      Graham

Leave a Response