Installing and Configuring the a9s PostgreSQL for PCF

This topic describes how to install and configure a9s PostgreSQL for Pivotal Cloud Foundry (PCF).

Prerequisites

Before installing a9s PostgreSQL for PCF, ensure that you have installed and configured the products and tiles listed in Requirements.

This comprises the a9s Consul DNS for PCF tile and the a9s BOSH for PCF tile.

The a9s Consul DNS for PCF tile is required because it is responsible for providing an internal DNS system to the other a9s service tiles, the a9s PostgreSQL for PCF included. For more information about this tile, see The Purpose of the a9s Consul DNS for PCF Tile.

The a9s BOSH for PCF tile is required because it is used by the a9s service tiles, for the provisioning and lifecycle management of their VM. For more information about this tile, see a9s BOSH for PCF Use Case.

Install a9s PostgreSQL for PCF

To install a9s PostgreSQL for PCF, perform the following steps:

  1. Download the product file from the Pivotal Network.

  2. Navigate to the Ops Manager Installation Dashboard and click Import a Product to upload the product file.

  3. Click Add or + (depending on the PCF version) next to the uploaded a9s PostgreSQL for PCF tile in the Ops Manager Available Products view to add it to your staging area.

  4. Click the new tile, then click Settings to review the configuration settings for each tab. For more information on how to configure the properties on each side-tab, see the following:

  5. Click Apply Changes to deploy the service.

After you install the a9s PostgreSQL for PCF, it is available in the list of Marketplace services. For more information, see Using a9s MongoDB for PCF.

Assign AZs and Networks

Use Assign AZs and Networks to configure the location of service instance jobs. Configure your network to balance cluster jobs between as many AZs as possible.

Az and networks

Configure Errands

Use Errands to configure the lifecycle errands that run when you install or uninstall a9s PostgreSQL for PCF. The list below describes each errand. For more information, see Understanding Lifecycle Errands.

A9s postgresql errands

Post-Deploy Errands

  • Run BOSH Configurator: This errand configures a9s BOSH for PCF so that it can provision PostgreSQL service instances. When enabled, this errand uploads the required releases in the a9s BOSH Director. Disabling this errand may speed up the deployment of all tiles.

    Note: To ensure your configuration remains up-to-date, disable this errand only when necessary.

  • Run Template Uploader: This errand is required to configure generic components that are included in a9s PostgreSQL for PCF with MPostgreSQLongoDB configurations. Disabling this errand may speed up the deployment of all tiles.

    Note: To ensure your configuration remains up-to-date, disable this errand only when necessary.

  • Run Broker Registrar: This errand registers the a9s PostgreSQL for PCF service broker at the Elastic Runtime. This makes the service available in the Marketplace.

  • Run Smoke Tests: This errand runs a series of basic tests against your a9s PostgreSQL for PCF installation to ensure that it is configured properly. Those tests may take a while, probably over 30 minutes.

Pre-Delete Errands

  • Delete all a9s PostgreSQL instances: This errand deletes all a9s PostgreSQL instances which were created with cf create-service by PCF end users.

    WARNING: This is an absolutly destructive task and can’t be undone. All VMs of the service instances will be deleted irrecoverably. In the case a service instance is bound to an app or service keys are existing, the errand will fail.

  • Run Broker Deregistrar: This will deregister the a9s PostgreSQL for PCF service broker in Elastic Runtime. This errand removes the a9s PostgreSQL service from the Marketplace.

Configure Resources

You can configure the dimensions of the VMs that host the a9s PostgreSQL for PCF components. This configuration does not cover the dedicated PostgreSQL instances that run on VMs provided by the a9s BOSH tile for PCF. For more information, see Configure Service Plan VMs.

Note: anynines recommends using a VM type of large or greater to support the tile compilation.

A9s postgresql resource config

Configure Stemcells

If you want to use a stemcell other than the default, click Stemcell, and then click Import Stemcell to upload the stemcell.

A9s postgresql stemcells

Configure Service Plans

The sizes and types of VMs used to provision service instances of a given service plan are specified in the Cloud Config pane of the a9s BOSH for PCF tile. See the Cloud Config section of the a9s BOSH for PCF installation documentation that corresponds to your IaaS.

Each service plan is defined in the following fields:

This plan… Uses these a9s BOSH for PCF settings to determine VM and disk size
postgresql-single-small Cloud properties for the VM Type Small
Cloud properties for the Disk Type Small
postgresql-cluster-small Cloud properties for the VM Type Small
Cloud properties for the Disk Type Small
postgresql-single-big Cloud properties for the VM Type Large
Cloud properties for the Disk Type Big
postgresql-cluster-big Cloud properties for the VM Type Large
Cloud properties for the Disk Type Big

Update Existing Service Instances

After updating the a9s PostgreSQL for PCF tile, run the Deployment Updater errand to update all provisioned service instances to the new service and stemcell versions.

Note: anynines recommends running the smoke tests before running this errand.

Note: To run the errand, you must know how to use the Ops Manager Director. For more information, see Advanced Troubleshooting with the BOSH CLI.

  1. SSH into the Ops Manager VM:

    $ ssh ubuntu@OPS-MANAGER-FQDN
    Password: ***********
    

  2. Target the BOSH Director:

    $ bosh --ca-cert /var/tempest/workspaces/default/root_ca_certificate target OPS-MANAGER-DIRECTOR-IP
    Target set to DIRECTOR_UUID
    

  3. Log in to the BOSH Director:

    $ bosh login
    Your username: director
    Enter password: DIRECTOR_CREDENTIAL
    Logged in as 'director'
    

  4. Run bosh deployments and record the name of the a9s PostgreSQL for PCF deployment from the Name column:

    $ bosh deployments
    Acting as user 'director' on 'p-bosh'
    +---------------------------------------------+---------------------------------+-------------
    | Name                                        | Release(s)                      | Stemcell(s)
    +---------------------------------------------+---------------------------------+-------------
    | a9s-bosh-a40c3b10d101faca4fbc               | bosh-aws-cpi/53                 | bosh-vsphere
    | ...
    +---------------------------------------------+---------------------------------+-------------
    | a9s-consul-dns-3f3a49fb941f8c0874cb         | consul/9                        | bosh-vsphere
    | ...
    +---------------------------------------------+---------------------------------+-------------
    | a9s-postgresql-service-94443f82b52dcf333bbd | bosh-configurator-postgresql/3  | bosh-vsphere
    | ...
    +---------------------------------------------+---------------------------------+-------------
    

  5. Switch the CLI to operate on the a9s PostgreSQL for PCF deployment by running bosh deployment /var/tempest/workspaces/default/deployments/DEPLOYMENT-NAME.yml with the a9s-postgresql-service-... name from the previous step:

    $ bosh deployment /var/tempest/workspaces/default/deployments/a9s-postgresql-service-94443f82b52dcf333bbd.yml
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                               Dload  Upload   Total   Spent    Left  Speed
    100   352  100   352    0     0  12014      0 --:--:-- --:--:-- --:--:-- 12137
    Deployment set to '/var/tempest/workspaces/default/deployments/a9s-postgresql-service-94443f82b52dcf333bbd.yml'

  6. Run bosh run errand deployment-updater to force the update for all existing a9s PostgreSQL for PCF instances:

    $ bosh run errand deployment-updater
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                               Dload  Upload   Total   Spent    Left  Speed
    100   352  100   352    0     0  26378      0 --:--:-- --:--:-- --:--:-- 27076
    Acting as user 'director' on deployment 'a9s-postgresql-service-94443f82b52dcf333bbd' on 'p-bosh'
     
    Director task 6533
    Started preparing deployment > Preparing deployment. Done (00:00:01)
     
    ...
     
    Errand 'deployment-updater' completed successfully (exit code 0)
    

    Note: Depending on the number of service instances, the Deployment Updater may take significant time to finish running. BOSH shows no logging output while the errand runs.

Trigger Backups and Restores on Demand

Only PCF administrators can interact with the Backup Manager endpoints to trigger immediate backups and restore backups.

To backup, perform the following steps:

  1. Navigate to the Status tab of the tile and record the IP address of one of the Backup Manager instances.

    Backup manager status tab

  2. On the Credentials tab, find the credentials of the service under backup-manager > Backup Manager Credentials.

    Backup manager credentials

  3. Trigger a backup on all instances by calling the /backup_agent/backup_all endpoint:

    $ curl backup:53cr3t@172.28.7.64:3000/backup_agent/backup_all -d {}
    
    or on a given instance with its GUID by calling the /backup_agent/backup endpoint:
    $ curl backup:53cr3t@172.28.7.64:3000/backup_agent/backup -d "instance_guid=1c16933a-892f-4fe0-b968-ea0bf90246c9"
    

To restore, perform the following steps:

  1. Find the ID of the Backup and the ID of the instance by listing the instances:

    $ curl backup:53cr3t@172.28.7.64:3000/instances
    
    This command outputs an array composed of objects like this one:
    {
    "restores": [],
    "backups": [
    {
      "backup_agent_task": {
        "updated_at": "2017-05-19T09:01:31.389Z",
        "created_at": "2017-05-19T09:01:16.064Z",
        "status": "done",
        "task_id": 5,
        "id": 5
      },
      "instance_id": 1,
      "id": 5
    }
    ],
    "instance_id": "1c16933a-892f-4fe0-b968-ea0bf90246c9",
    "id": 1
    }
    
    In the example above, backups and restores that have been performed for the instance with the instance_id 1c16933a-892f-4fe0-b968-ea0bf90246c9. This ID corresponds to the instance GUID from PCF.

  2. Restore the backup by calling the /backup_agent/restores endpoint with the backup_id and instance_id as data:

    $ curl backup:53cr3t@172.28.7.64:3000/backup_agent/restores -d "backup_id=5" -d "instance_id=1"
    

Create a pull request or raise an issue on the source for this page in GitHub