Update Apigee Edge 4.16.01/4.16.05 to 4.18.01

Edge for Private Cloud v4.18.01

Which Edge versions can you update to 4.18.01

You can update Apigee Edge version 4.16.01.0x and 4.16.05.x to 4.18.01 using this procedure.

If you have a version of Edge previous to version 4.16.01, then you must first migrate to version 4.16.01 and then update to version 4.18.01.

  • You can migrate Apigee Edge version 4.15.07 to 4.16.01.
  • If you have a version of Edge previous to version 4.15.07, then you must first migrate to version 4.15.07 and then to version 4.16.01.
    • If you are migrating from Edge version 4.14.04 or later: Directly migrate to version 4.15.07.
    • If you are migrating from Edge version 4.14.01: You must first migrate to version 4.14.04, and then migrate to version 4.15.07.

Who can perform the update

The user running the update should be the same as the user who originally installed Edge, or a user running as root.

After you install the Edge RPMs, any user can configure them.

Which components must you update

You must update all Edge components. Edge does not support a setup that contains components from multiple versions.

Downgrading Zookeeper if updating from 4.16.01

The version of the Zookeeper RPM in Edge for Private Cloud 4.16.01 is apigee-zookeeper-3.4.5-1.0.905.noarch.rpm. In subsequent versions of Edge, the Zookeeper version was changed back to apigee-zookeeper-3.4.5-0.0.94x. This prevents yum from upgrading Zookeeper to a later versions from 4.16.01. The way to correct this situation is to run yum downgrade apigee-zookeeper before updating Zookeeper.

You can check your Zookeeper version by using the following command:

> rpm -qa |grep apigee-zookeeper

If this command returns Zookeeper version:

apigee-zookeeper-3.4.5-1.0.905

Then you must do the downgrade.

Automatic propagation of property settings

If you have set any properties by editing .properties files in /opt/apigee/customer/application then these values are retained by the update.

Update prerequisites

Take care of following prerequisites before upgrading Apigee Edge:

  • Backup all nodes
    Before you update, it is recommended to perform a complete backup of all nodes for safety reasons. Use the procedure for your current version of Edge to perform the backup.

    This allows you to have a backup plan, in case the update to a new version doesn’t function properly. For more information on backup, see Backup and Restore.
  • Ensure Edge is running
    Ensure that Edge is up and running during update process by using the command:

    > /opt/apigee/apigee-service/bin/apigee-all status

Handling a failed update

In the case of an update failure, you can try to correct the issue, and then run update.sh again. You can run the update multiple times and it continues the update from where it last left off.

If the failure requires that you roll back the update to your previous version, see 4.18.01 Rollback Process for more.

Logging update information

By default, the update.sh utility writes log information to:

/opt/apigee/var/log/apigee-setup/update.log

If the user running the update.sh utility does not have access to that directory, it writes the log to the /tmp directory as a file named update_username.log.

If the user does not have access to /tmp, the update.sh utility fails.

Required upgrade to Java JDK Version 8

This release of Edge requires that you have installed Java JDK version 8 on all Edge processing nodes. You can install the Oracle JDK 8 or OpenJDK 8. If Java JDK 8 is not installed already, the update script can install it for you.

As part of the update to Java 8, some TLS ciphers are no longer available in Oracle JDK 8. For the complete list, see the section "Default Disabled Cipher Suites" at http://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html.

Required to enable EPEL repo

You must enable Extra Packages for Enterprise Linux (or EPEL) to install or update Edge. The command you use depends on your version of RedHat/CentOS:

  • For RedHat/CentOS 7.x:
    > wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm; rpm -ivh epel-release-latest-7.noarch.rpm
  • For RedHat/CentOS 6.x:
    wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm; rpm -ivh epel-release-latest-6.noarch.rpm

Required addition of SMTPMAILFROM configuration parameter

Edge 4.17.05 added a new required parameter to the configuration file used when you enable an SMTP server. If you are updating from 4.17.01, then you must set SMTPMAILFROM in the configuration file when enabling the SMTP server.

API BaaS version 4.17.09 also added support for the SMTPMAILFROM property. When updating API BaaS, you must set SMTPMAILFROM in the configuration file.

This parameter has the form:

SMTPMAILFROM="My Company <myco@company.com>"

Required if updating when using external authentication

You can integrate an external directory service into an existing Apigee Edge Private Cloud installation. This feature is designed to work with any directory service that supports LDAP, such as Active Directory, OpenLDAP, and others. An external LDAP solution allows system administrators to manage user credentials from a centralized directory management service, external to systems like Apigee Edge that use them.

See External Authentication Configuration for more.

When external authentication is enabled, most customers use the Active Directory SAM account name field as the username for authentication, instead of an email address which is used by the Edge OpenLDAP server.

If you have integrated with an external directory service, then add the following line to your config file when updating Edge to 4.18.01:

IS_EXTERNAL_AUTH="true"

This line configures Edge to support an account name, rather than an email address, as the username.

Required upgrade to Qpid 1.35

This release contains a required update to Qpid 1.35. As part of updating a Qpid node, you have to:

  • Temporarily prevent Routers and Message Processors from writing to the Qpid node by blocking port 5672 on the Qpid node. You can use the following command to block this port on the Qpid node:
    > sudo iptables -A INPUT -p tcp --destination-port 5672 ! -s `hostname` -i eth0 -j DROP
  • Wait for the Qpid queue to empty of messages to ensure that the Qpid node has processed all messages before the update. Use the following command to ensure that the Qpid message queue is empty:
    > qpid-stat -q
  • Update the Qpid node.
  • Unblock port 5672 on the Qpid node to allows access from Routers and Message Processors. You can use the following command to unblock this port:
    > sudo iptables -F

    Note that if you are using iptables for other rules, you can use the -D option to reverse the specific change:
    > sudo iptables -D INPUT -p tcp --destination-port 5672 ! -s `hostname` -i eth0 -j DROP

This process is described in detail below for each Edge topology.

Required upgrade to Postgres 9.6

This release of Edge includes an upgrade to Postgres 9.6. As part of that upgrade, all Postgres data is migrated to the Postgres 9.6.

During the update process, while the Postgres nodes are down for update, analytics data is still written to the Qpid nodes. After the Postgres nodes are updated and back online, analytics data is then pushed to the Postgres nodes.

The additional Postgres standby node is required if you have to roll back the update for any reason. If you have to roll back the update, the new Postgres standby node becomes the master Postgres node after the rollback. Therefore, when you install the new Postgres standby node, it should be on a node that meets all the hardware requirements of a Postgres server, as defined in the Edge Installation Requirements.

Installing a new Postgres standby node

This procedure creates a Postgres standby server on a new node. Ensure that you install a new Postgres standby server for your existing version of Edge (4.16.01 or 4.16.05), not for version 4.18.01.

To perform the install, use the same config file that you used to install your current version of Edge.

To create a new Postgres standby node:

  1. On the current Postgres master, edit the /opt/apigee/customer/application/postgresql.properties file to set the following token. If that file does not exist, create it:

    conf_pg_hba_replication.connection=host replication apigee existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trust

    where existing_slave_ip is the IP address of the current Postgres standby server and new_slave_ip is the IP address of the new standby node.
  2. Restart apigee-postgresql on the Postgres master:
    > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
  3. Verify that the new standby node was added by viewing the /opt/apigee/apigee-postgresql/conf/pg_hba.conf file on the master. You should see the following lines in that file:
    host replication apigee existing_slave_ip/32 trust
    host replication apigee new_slave_ip/32 trust
  4. Install the new Postgres standby server:
    1. Edit the config file that you used to install your current version of Edge to specify the following:

      # IP address of the current master:
      PG_MASTER=192.168.56.103
      # IP address of the new standby node
      PG_STANDBY=192.168.56.102
    2. Disable SELinux as described at Install the Edge apigee-setup utility.
    3. Download the Edge bootstrap_4.16.05.sh file to /tmp/bootstrap_4.16.05.sh:
      > curl https://software.apigee.com/bootstrap_4.16.05.sh -o /tmp/bootstrap_4.16.05.sh

      Note: If you are updating from 4.16.01, download the Edge bootstrap.sh file.
    4. Install the Edge apigee-service utility and dependencies:
      > sudo bash /tmp/bootstrap_4.16.05.sh apigeeuser=uName apigeepassword=pWord
    5. Use apigee-service to install the apigee-setup utility:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup install
    6. Install Postgres:
      > /opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile
    7. On the new standby node run the following command:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby

      Validate that it says it is the standby.

Decommissioning a Postgres node

After the update completes, decommission the new standby node:

  1. Make sure Postgres is running:
    > /opt/apigee/apigee-service/bin/apigee-all status

    If Postgres is not running, start it:
    > /opt/apigee/apigee-service/bin/apigee-all start
  2. Get the UUID of the new standby node by running the following cURL command on the new standby node:
    > curl -u sysAdminEmail:password http://<node_IP>:8084/v1/servers/self

    You should see the UUID of the node at the end of the output, in the form:
    "type" : [ "postgres-server" ],
    "uUID" : "599e8ebf-5d69-4ae4-aa71-154970a8ec75"
  3. Stop the new standby node by running the following command on the new standby node:
    > /opt/apigee/apigee-service/bin/apigee-all stop
  4. On the Postgres master node, edit /opt/apigee/customer/application/postgresql.properties to remove the new standby node from conf_pg_hba_replication.connection:
    conf_pg_hba_replication.connection=host replication apigee existing_slave_ip/32 trust
  5. Restart apigee-postgresql on the Postgres master:
    > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
  6. Verify that the new standby node was removed by viewing the /opt/apigee/apigee-postgresql/conf/pg_hba.conf file on the master. You should see only the following line in that file:
    host replication apigee existing_slave_ip/32 trust
  7. Delete the UUID of the standby node from ZooKeeper by making the following Edge management API call on the Management Server node:
    > curl -u sysAdminEmail:password -X DELETE http://<ms_IP>:8080/v1/servers/<new_slave_uuid>

Zero-downtime update

A zero-downtime update, or rolling update, lets you update your Edge installation without bringing down Edge.

Zero-downtime update is only possible with a 5-node configuration and larger.

The key to zero-downtime upgrading is to remove each Router, one at a time, from the load balancer. You then update the Router and any other components on the same machine as the Router, and then add the Router back to the load balancer.

  1. Update the machines in the correct order for your installation as described below in "Order of machine update".
  2. When it is time to update the Routers, select any one Router and make it unreachable, as described in Enabling/Disabling Server (Message Processor/Router) Reachability.
  3. Update the selected Router and all other Edge components on the same machine as the Router. All Edge configurations show a Router and Message Processor on the same node.
  4. Make the Router reachable again.
  5. Repeat steps 2 through 4 for the remaining Routers.
  6. Continue the update for any remaining machines in your installation.

Take care of the following before/after update:

  • On combined Router and Message Processor node:
    • Before update – perform the following:
      1. Make the Router unreachable.
      2. Make the Message Processor unreachable.
    • After update - perform the following:
      1. Make the Message Processor reachable.
      2. Make the Router reachable.
  • On single Router node:
    • Before update, make the Router unreachable.
    • After update, make the Router reachable.
  • On single Message Processor node:
    • Before update, make the Message Processor unreachable.
    • After update, make the Message Processor reachable.

Using a silent configuration file

You must pass a silent configuration file to the update command. The silent configuration file should be the same one you used to install Edge 4.16.01 or 4.16.05.

Procedure for updating to 4.18.01 on a node with an external internet connection

Use the following procedure to update the Edge components on a node:

  1. If you are currently using Postgres master-standby replication, install a new Postgres standby node as described above in Installing a new Postgres standby node.
  2. If present, disable any CRON jobs configured to perform a repair operation on Cassandra until after the update completes.
  3. Log in to your node as root to install the Edge RPMs.
    Note: While RPM installation requires root access, you can perform Edge configuration without root access.
  4. Install yum-utils and yum-plugin-priorities:
    > sudo yum install yum-utils
    > sudo yum install yum-plugin-priorities
  5. Disable SELinux as described in Install the Edge apigee-setup utility.
  6. Enable EPEL repo as described above.
  7. If you are installing on Oracle 7.x, run the following command:
    > sudo yum-config-manager --enable ol7_optional_latest
  8. If you are installing on AWS, run the following yum-configure-manager commands:
    > yum update rh-amazon-rhui-client.noarch
    > sudo yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
  9. Download the Edge 4.18.01 bootstrap_4.18.01.sh file to /tmp/bootstrap_4.18.01.sh:
    > curl https://software.apigee.com/bootstrap_4.18.01.sh -o /tmp/bootstrap_4.18.01.sh
  10. Install the Edge 4.18.01 apigee-service utility and dependencies:
    > sudo bash /tmp/bootstrap_4.18.01.sh apigeeuser=uName apigeepassword=pWord

    where uName:pWord are the username and password you received from Apigee. If you omit pWord, you will be prompted to enter it.

    By default, the installer checks to see that you have Java 1.8 installed. If you do not, it installs it for you. Use the JAVA_FIX option to specify how to handle Java installation. JAVA_FIX takes the following values:

    I = Install OpenJDK 1.8 (default)
    C = Continue without installing Java
    Q = Quit. For this option, you have to install Java yourself.
  11. Use apigee-service to update the apigee-setup utility:
    1. If you installed 4.16.01 by upgrading Edge version 4.15.07.0x, you must install the apigee-setup utility:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup install

      This command installs the update.sh utility in /opt/apigee/apigee-setup/bin.

      If you already installed the apigee-setup utility, then update it:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup update
    2. If you installed 4.16.01 directly, meaning you did not perform an upgrade from 4.15.07.0x, you must update the apigee-setup utility:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup update

      This update to apigee-service installs the update.sh utility in /opt/apigee/apigee-setup/bin.
    3. If you installed 4.16.05 directly or by update, you must update the apigee-setup utility:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup update

      This update to apigee-service installs the update.sh utility in /opt/apigee/apigee-setup/bin.
  12. Depending on your current version of Edge, you must either install or update the apigee-validate utility on the Management Server.
    1. If you are currently using Edge 4.16.05: update the apigee-validate utility on the Management Server:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-validate update
    2. If you are currently using Edge 4.16.01: install the apigee-validate utility on the Management Server:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-validate install

      Note: If you have installed the apigee-validate utility on a Message Processor node when installing 4.16.01, you can update it by using the following command on that node:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-validate update

      However, as of 4.16.05 and later, Apigee recommends that you install and run the apigee-validate utility on the Management Server.
    3. If you are upgrading from 4.16.01: Edit the config file passed to the apigee-validate utility. In the 4.16.01 Edge release, the config file used by apigee-validate required the following properties:
      APIGEE_ADMINPW=sysAdminPword
      MP_POD=gateway
      REGION=dc-1


      In this release, the config file only requires the APIGEE_ADMINPW property. You can remove the other two properties from the file.
  13. Update the apigee-provision utility:
    > /opt/apigee/apigee-service/bin/apigee-service apigee-provision update
  14. Run the update utility on your nodes in the order described below in "Order of machine update" below:
    > /opt/apigee/apigee-setup/bin/update.sh -c component -f configFile

    The only requirement on the config file is that the configuration file must be accessible or readable by the "apigee" user.

    Use the “-c” option to specify the component to update. The list of possible components includes:
    ldap = OpenLDAP
    cs = Cassandra
    zk = Zookeeper
    qpid = qpidd
    ps = postgresql
    edge =All Edge components except Edge UI: Management Server, Message Processor, Router, QPID Server, Postgres Server
    ui = Edge UI
    all = update all components on machine (only use for an Edge aio installation profile or an API BaaS asa installation profile)
    e = ElasticSearch
    b = API BaaS Stack
    p = API BaaS Portal
    ebp = ElasticSearch, API BaaS Stack, and API BaaS Portal on the same node
  15. Test the update by running the apigee-validate utility on the Management Server, as described in Test the install.
  16. If you installed a new Postgres standby node, decommission the node as described above in Decommissioning a Postgres node.

To later rollback the update, use the procedure described in 4.18.01 Rollback Process.

Procedure for updating to 4.18.01 from a local repo

If your Edge nodes are behind a firewall, or in some other way are prohibited from accessing the Apigee repository over the Internet, then you can perform the update from a local repository, or mirror, of the Apigee repo.

After you create a local Edge repository, you have two options for updating Edge from the local repo:

  • Create a .tar file of the repo, copy the .tar file to a node, and then update Edge from the .tar file.
  • Install a webserver on the node with the local repo so that other nodes can access it. Apigee provides the Nginx webserver for you to use, or you can use your own webserver.

To update from a local 4.18.01 repo:

  1. If you are currently using Postgres master-standby replication, install a new Postgres standby node as described above in Installing a new Postgres standby node.
  2. Create a local 4.18.01 repo as described in "Create a local Apigee repository" at Install the Edge apigee-setup utility.
    Note: If you already have an existing 4.16.01 or 4.16.05 repo, you can add the 4.18.01 repo to it as described in "Update a local Apigee repository" at Install the Edge apigee-setup utility.
  3. To install apigee-service from a .tar file:
    1. On the node with the local repo, use the following command to package the local repo into a single .tar file named /opt/apigee/data/apigee-mirror/apigee-4.18.01.tar.gz:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-mirror package
    2. Copy the .tar file to the node where you want to update Edge. For example, copy it to the /tmp directory on the new node.
    3. On the new node, untar the file to the /tmp directory:
      > tar -xzf apigee-4.18.01.tar.gz

      This command creates a new directory, named repos, in the directory containing the .tar file. For example /tmp/repos.
    4. Install the Edge apigee-service utility and dependencies from /tmp/repos:
      > sudo bash /tmp/repos/bootstrap_4.18.01.sh apigeeprotocol="file://" apigeerepobasepath=/tmp/repos

      Notice that you include the path to the repos directory in this command.
  4. To install apigee-service using the Nginx webserver:
    1. Configure the Nginx web server as described in "Install from the repo using the Nginx webserver" at Install the Edge apigee-setup utility.
    2. On the remote node, download the Edge bootstrap_4.18.01.sh file to /tmp/bootstrap_4.18.01.sh:
      > /usr/bin/curl http://uName:pWord@remoteRepo:3939/bootstrap_4.18.01.sh -o /tmp/bootstrap_4.18.01.sh

      where uName:pWord are the username and password you set above for the repo, and remoteRepo is the IP address or DNS name of the repo node.
    3. On the remote node, install the Edge apigee-service utility and dependencies:
      > sudo bash /tmp/bootstrap_4.18.01.sh apigeerepohost=remoteRepo:3939 apigeeuser=uName apigeepassword=pWord apigeeprotocol=http://

      where uName:pWord are the repo username and password.
  5. Use apigee-service to update the apigee-setup utility:
    1. If you installed 4.16.01 by upgrading Edge version 4.15.07.0x, you must install the apigee-setup utility:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup install

      This command installs the update.sh utility in /opt/apigee/apigee-setup/bin.

      If you already installed the apigee-setup utility, then update it:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup update
    2. If you installed 4.16.01 directly, meaning you did not perform an upgrade from 4.15.07.0x, you must update the apigee-setup utility:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup update

      This update to apigee-service installs the update.sh utility in /opt/apigee/apigee-setup/bin.
    3. If you installed 4.16.05 directly or by update, you must update the apigee-setup utility:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup update

      This update to apigee-service installs the update.sh utility in /opt/apigee/apigee-setup/bin.
  6. Depending on your current version of Edge, you must either install or update the apigee-validate utility on the Management Server.
    1. If you are currently using Edge 4.16.05: update the apigee-validate utility on the Management Server:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-validate update
    2. If you are currently using Edge 4.16.01: install the apigee-validate utility on the Management Server:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-validate install

      Note: If you have installed the apigee-validate utility on a Message Processor node when installing 4.16.01, you can update it by using the following command on that node:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-validate update

      However, as of 4.16.05 and later, Apigee recommends that you install and run the apigee-validate utility on the Management Server.
    3. If you are upgrading from 4.16.01: Edit the config file passed to the apigee-validate utility. In the 4.16.01 Edge release, the config file used by apigee-validate required the following properties:
      APIGEE_ADMINPW=sysAdminPword
      MP_POD=gateway
      REGION=dc-1


      In this release, the config file only requires the APIGEE_ADMINPW property. You can remove the other two properties from the file.
  7. Update the apigee-provision utility:
    > /opt/apigee/apigee-service/bin/apigee-service apigee-provision update
  8. Run the update utility on your nodes in the order described below in "Order of machine update" below:
    > /opt/apigee/apigee-setup/bin/update.sh -c component -f configFile

    The only requirement on the config file is that the configuration file must be accessible or readable by the "apigee" user.

    Use the “-c” option to specify the component to update. The list of possible components includes:
    ldap = OpenLDAP
    cs = Cassandra
    zk = Zookeeper
    qpid = qpidd
    ps = postgresql
    edge =All Edge components except Edge UI: Management Server, Message Processor, Router, QPID Server, Postgres Server
    ui = Edge UI
    all = update all components on machine (only use for an Edge aio installation profile or an API BaaS asa installation profile)
    e = ElasticSearch
    b = API BaaS Stack
    p = API BaaS Portal
    ebp = ElasticSearch, API BaaS Stack, and API BaaS Portal on the same node
  9. Test the update by running the apigee-validate utility on the Management Server, as described in Test the install.
  10. If you installed a new Postgres standby node, decommission the node as described above in Decommissioning a Postgres node.

To later rollback the update, use the procedure described in 4.18.01 Rollback Process.

Order of machine update

The order that you update the machines in an Edge installation is important. The most important considerations to an update are:

  • You must update all Cassandra and ZooKeeper nodes before you update any other nodes.
  • For any machine with multiple Edge components (Management Server, Message Processor, Router, QPID Server but not Postgres Server), use the "-c edge" option to update them all at the same time.
  • If a step specifies that it should be performed on multiple machines, perform it in the specified machine order.
  • There is no separate step to update Monetization. It is updated when you specify the "-c edge" option.

For a 1-host standalone installation

  1. Set SMTPMAILFROM in your configuration file if you have enabled SMTP on Edge. This parameter has the form:
    SMTPMAILFROM="My Company <myco@company.com>"
  2. If updating from 4.16.01, downgrade Zookeeper:
    > yum downgrade apigee-zookeeper
  3. Update Cassandra and ZooKeeper:
    > /opt/apigee/apigee-setup/bin/update.sh -c cs,zk -f configFile
  4. Set the following iptables rule:
    > sudo iptables -A INPUT -p tcp --destination-port 5672 ! -s `hostname` -i eth0 -j DROP
  5. Check the Qpid message queue:
    > qpid-stat -q

    Continue to check the queue until the count in the "msg" column is 0. You cannot upgrade Qpid until it has processed all messages.
  6. Update qpidd:
    > /opt/apigee/apigee-setup/bin/update.sh -c qpid -f configFile
  7. Flush iptables:
    > sudo iptables -F
  8. Update LDAP:
    > /opt/apigee/apigee-setup/bin/update.sh -c ldap -f configFile
  9. Stop Postgres Server, Qpid server, and PostgreSQL:
    > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
    > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
    > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
  10. Update postgresql:
    > /opt/apigee/apigee-setup/bin/update.sh -c ps -f configFile
  11. Update the Postgres database:
    > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
  12. Update the remaining Edge components:
    > /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile
  13. Update Edge UI:
    > /opt/apigee/apigee-setup/bin/update.sh -c ui -f configFile

For a 2-host standalone installation

See Installation Topologies for the list of Edge topologies and node numbers.

  1. Set SMTPMAILFROM in your configuration file if you have enabled SMTP on Edge. This parameter has the form:
    SMTPMAILFROM="My Company <myco@company.com>"
  2. If updating from 4.16.01, downgrade Zookeeper on machine 1:
    > yum downgrade apigee-zookeeper
  3. Update Cassandra and ZooKeeper on machine 1:
    > /opt/apigee/apigee-setup/bin/update.sh -c cs,zk -f configFile
  4. Set the following iptables rule on machine 2:
    > sudo iptables -A INPUT -p tcp --destination-port 5672 ! -s `hostname` -i eth0 -j DROP
  5. Check the Qpid message queue on machine 2:
    > qpid-stat -q

    Continue to check the queue until the count in the "msg" column is 0. You cannot upgrade Qpid until it has processed all messages.
  6. Update qpidd on machine 2:
    > /opt/apigee/apigee-setup/bin/update.sh -c qpid -f configFile
  7. Flush iptables on machine 2:
    > sudo iptables -F
  8. Update LDAP on machine 1:
    > /opt/apigee/apigee-setup/bin/update.sh -c ldap -f configFile
  9. Update Edge components on machine 1:
    > /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile
  10. Update UI on machine 1:
    > /opt/apigee/apigee-setup/bin/update.sh -c ui -f configFile
  11. Update postgresql on machine 2:
    1. Stop Postgres Server, Qpid server, and postgresql:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
      > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
    2. Update postgresql:
      > /opt/apigee/apigee-setup/bin/update.sh -c ps -f configFile
    3. Update the Postgres database:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    4. Update Edge components on machine 2:
      > /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile

For a 5-host clustered installation

See Installation Topologies for the list of Edge topologies and node numbers.

  1. Set SMTPMAILFROM in your configuration file if you have enabled SMTP on Edge. This parameter has the form:
    SMTPMAILFROM="My Company <myco@company.com>"
  2. Ensure that you have installed a new Postgres standby node as described above in Installing a new Postgres standby node.
  3. If updating from 4.16.01, downgrade Zookeeper on machine 1, 2, and 3:
    > yum downgrade apigee-zookeeper
  4. Update Cassandra and ZooKeeper on machine 1, 2, and 3:
    > /opt/apigee/apigee-setup/bin/update.sh -c cs,zk -f configFile
  5. Set the following iptables rule on machine 4:
    > sudo iptables -A INPUT -p tcp --destination-port 5672 ! -s `hostname` -i eth0 -j DROP
  6. Check the Qpid message queue on machine 4:
    > qpid-stat -q

    Continue to check the queue until the count in the "msg" column is 0. You cannot upgrade Qpid until it has processed all messages.
  7. Update qpidd on machine 4:
    > /opt/apigee/apigee-setup/bin/update.sh -c qpid -f configFile
  8. Flush iptables on machine 4:
    > sudo iptables -F
  9. Repeat steps 5 through 8 on machine 5.
  10. Update LDAP on machine 1:
    > /opt/apigee/apigee-setup/bin/update.sh -c ldap -f configFile
  11. Update Edge components on machine 1, 2, 3:
    > /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile
  12. Update UI on machine 1:
    > /opt/apigee/apigee-setup/bin/update.sh -c ui -f configFile
  13. Update machines 4 and 5:
    1. Stop Postgres server and Qpid server on machine 4:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
      > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
    2. Stop Postgres server, Qpid server, and postgresql on machine 5:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
      > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
    3. Stop Postgres server and postgresql on the new standby node that you added for rollback:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
    4. Update postgresql on machines 4:
      > /opt/apigee/apigee-setup/bin/update.sh -c ps -f configFile
    5. Update the Postgres database on machine 4 (Postgres master only):
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    6. Update postgresql on machines 5:
      > /opt/apigee/apigee-setup/bin/update.sh -c ps -f configFile
    7. Start Postgres server and Qpid server on machines 4 and 5:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server start
      > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server start
    8. Configure Postgres as a standby node by running the following commands on machine 5:
      > cd /opt/apigee/data/apigee-postgresql/pgdata
      > rm -rf *
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f
      configFile
    9. Verify the replication status by issuing the following scripts on both servers. The system should display identical results on both servers to ensure a successful replication:

      On the machine 4, the master node, run:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master

      Validate that it says it is the master.

      On machine 5, the standby node:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby

      Validate that it says it is the standby.
  14. Update Edge components on machine 4, 5:
    > /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile
  15. Ensure that you decommission the new standby node by using the procedure above in Decommissioning a Postgres node.

For a 9-host clustered installation

See Installation Topologies for the list of Edge topologies and node numbers.

  1. Set SMTPMAILFROM in your configuration file if you have enabled SMTP on Edge. This parameter has the form:
    SMTPMAILFROM="My Company <myco@company.com>"
  2. Ensure that you have installed a new Postgres standby node as described above in Installing a new Postgres standby node.
  3. If updating from 4.16.01, downgrade Zookeeper on macine 1, 2, and 3:
    > yum downgrade apigee-zookeeper
  4. Update Cassandra and ZooKeeper on machine 1, 2, and 3:
    > /opt/apigee/apigee-setup/bin/update.sh -c cs,zk -f configFile
  5. Set the following iptables rule on machine 6:
    > sudo iptables -A INPUT -p tcp --destination-port 5672 ! -s `hostname` -i eth0 -j DROP
  6. Check the Qpid message queue on machine 6:
    > qpid-stat -q

    Continue to check the queue until the count in the "msg" column is 0. You cannot upgrade Qpid until it has processed all messages.
  7. Update qpidd on machine 6:
    > /opt/apigee/apigee-setup/bin/update.sh -c qpid -f configFile
  8. Flush iptables on machine 6:
    > sudo iptables -F
  9. Repeat steps 5 through 8 on machine 7.
  10. Update LDAP on machine 1:
    > /opt/apigee/apigee-setup/bin/update.sh -c ldap -f configFile
  11. Update Edge components on machine 6, 7, 1, 4, and 5 in that order:
    > /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile
  12. Update UI on machine 1:
    > /opt/apigee/apigee-setup/bin/update.sh -c ui -f configFile
  13. Update machines 8 and 9:
    1. Stop Postgres server on machine 8:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
    2. Stop Postgres server and postgresql on machine 9:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
    3. Stop Qpid server on machines 6 and 7:
      > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
    4. Stop Postgres server and postgresql on the new standby node that you added for rollback:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
    5. Update postgresql on machines 8:
      > /opt/apigee/apigee-setup/bin/update.sh -c ps -f configFile
    6. Update the Postgres database on machine 8 (Postgres master only):
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    7. Update postgresql on machines 9:
      > /opt/apigee/apigee-setup/bin/update.sh -c ps -f configFile
    8. Start Postgres server server on machines 8 and 9:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server start
    9. Start Qpid server server on machines 6 and 7:
      > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server start
    10. Configure Postgres as a standby node by running the following commands on machine 9:
      > cd /opt/apigee/data/apigee-postgresql/pgdata
      > rm -rf *
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f
      configFile
    11. Verify the replication status by issuing the following scripts on both servers. The system should display identical results on both servers to ensure a successful replication:
      On the machine 8, the master node, run:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master

      Validate that it says it is the master.

      On machine 9, the standby node:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby

      Validate that it says it is the standby.
  14. Update Edge components on machine 8 and 9:
    > /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile
  15. Ensure that you decommission the new standby node by using the procedure above in Decommissioning a Postgres node.

For a 13-host clustered installation

See Installation Topologies for the list of Edge topologies and node numbers.

  1. Set SMTPMAILFROM in your configuration file if you have enabled SMTP on Edge. This parameter has the form:
    SMTPMAILFROM="My Company <myco@company.com>"
  2. Ensure that you have installed a new Postgres standby node as described above in Installing a new Postgres standby node.
  3. If updating from 4.16.01, downgrade Zookeeper on macine 1, 2, and 3:
    > yum downgrade apigee-zookeeper
  4. Update Cassandra and ZooKeeper on machine 1, 2, and 3:
    > /opt/apigee/apigee-setup/bin/update.sh -c cs,zk -f configFile
  5. Set the following iptables rule on machine 12:
    > sudo iptables -A INPUT -p tcp --destination-port 5672 ! -s `hostname` -i eth0 -j DROP
  6. Check the Qpid message queue on machine 12:
    > qpid-stat -q

    Continue to check the queue until the count in the "msg" column is 0. You cannot upgrade Qpid until it has processed all messages.
  7. Update qpidd on machine 12:
    > /opt/apigee/apigee-setup/bin/update.sh -c qpid -f configFile
  8. Flush iptables on machine 12:
    > sudo iptables -F
  9. Repeat steps 5 through 8 on machine 13.
  10. Update LDAP on machine 4 and 5:
    > /opt/apigee/apigee-setup/bin/update.sh -c ldap -f configFile
  11. Update Edge components on machine 12, 13, 6, 7, 10, and 11 in that order:
    > /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile
  12. Update UI on machine 6 and 7:
    > /opt/apigee/apigee-setup/bin/update.sh -c ui -f configFile
  13. Update machines 8 and 9:
    1. Stop Postgres server on machine 8:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
    2. Stop Postgres server and postgresql on machine 9:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
    3. Stop Qpid server on machines 12 and 13:
      > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
    4. Stop Postgres server and postgresql on the new standby node that you added for rollback:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
    5. Update postgresql on machines 8:
      > /opt/apigee/apigee-setup/bin/update.sh -c ps -f configFile
    6. Update the Postgres database on machine 8 (Postgres master only):
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    7. Update postgresql on machines 9:
      > /opt/apigee/apigee-setup/bin/update.sh -c ps -f configFile
    8. Start Postgres server on machines 8 and 9:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server start
    9. Start Qpid server server on machines 12 and 13:
      > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server start
    10. Configure Postgres as a standby node by running the following commands on machine 9:
      > cd /opt/apigee/data/apigee-postgresql/pgdata
      > rm -rf *
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f
      configFile
    11. Verify the replication status by issuing the following scripts on both servers. The system should display identical results on both servers to ensure a successful replication:
      On the machine 8, the master node, run:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master

      Validate that it says it is the master.

      On machine 9, the standby node:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby

      Validate that it says it is the standby.
  14. Update Edge components on machine 8 and 9:
    > /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile
  15. Ensure that you decommission the new standby node by using the procedure above in Decommissioning a Postgres node.

For a 12-host clustered installation

See Installation Topologies for the list of Edge topologies and node numbers.

  1. Set SMTPMAILFROM in your configuration file if you have enabled SMTP on Edge. This parameter has the form:
    SMTPMAILFROM="My Company <myco@company.com>"
  2. Ensure that you have installed a new Postgres standby node as described above in Installing a new Postgres standby node.
  3. Update Cassandra and ZooKeeper:
    1. If updating from 4.16.01, downgrade Zookeeper on macine 1, 2, and 3 in Data Center 1:
      > yum downgrade apigee-zookeeper
    2. On machines 1, 2 and 3 in Data Center 1:
      > /opt/apigee/apigee-setup/bin/update.sh -c cs,zk -f configFile
    3. If updating from 4.16.01, downgrade Zookeeper on macine 7, 8, and 9 in Data Center 2:
      > yum downgrade apigee-zookeeper
    4. On machines 7, 8, and 9 in Data Center 2
      > /opt/apigee/apigee-setup/bin/update.sh -c cs,zk -f configFile
  4. Update qpidd:
    1. Machines 4, 5 in Data Center 1
      1. Set the following iptables rule on machine 4:
        > sudo iptables -A INPUT -p tcp --destination-port 5672 ! -s `hostname` -i eth0 -j DROP
      2. Check the Qpid message queue on machine 4:
        > qpid-stat -q

        Continue to check the queue until the count in the "msg" column is 0. You cannot upgrade Qpid until it has processed all messages.
      3. Update qpidd on machine 4:
        > /opt/apigee/apigee-setup/bin/update.sh -c qpid -f configFile
      4. Flush iptables on machine 4:
        > sudo iptables -F
      5. Repeat steps 1 through 4 on machine 5.
    2. Machines 10, 11 in Data Center 2
      1. Set the following iptables rule on machine 10:
        > sudo iptables -A INPUT -p tcp --destination-port 5672 ! -s `hostname` -i eth0 -j DROP
      2. Check the Qpid message queue on machine 10:
        > qpid-stat -q

        Continue to check the queue until the count in the "msg" column is 0. You cannot upgrade Qpid until it has processed all messages.
      3. Update qpidd on machine 10:
        > /opt/apigee/apigee-setup/bin/update.sh -c qpid -f configFile
      4. Flush iptables on machine 10:
        > sudo iptables -F
      5. Repeat steps 1 through 4 on machine 11.
  5. Update LDAP:
    1. Machines 1 in Data Center 1
      > /opt/apigee/apigee-setup/bin/update.sh -c ldap -f configFile
    2. Machines 7 in Data Center 2
      > /opt/apigee/apigee-setup/bin/update.sh -c ldap -f configFile
  6. Update Edge components:
    1. Machines 4, 5, 1, 2, 3 in Data Center 1
      > /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile
    2. Machines 10, 11, 7, 8, 9 in Data Center 2
      > /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile
  7. Update UI:
    1. Machine 1 in Data Center 1:
      > /opt/apigee/apigee-setup/bin/update.sh -c ui -f configFile
    2. Machine 7 in Data Center 2:
      > /opt/apigee/apigee-setup/bin/update.sh -c ui -f configFile
  8. Update machine 6 in Data Center 1 and 12 in Data Center 2:
    1. Stop Postgres server on machine 6:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
    2. Stop Postgres server and postgresql on machine 12:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
    3. Stop Qpid server on machines 4, 5, 10, and 11:
      > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
    4. Stop Postgres server and postgresql on the new standby node that you added for rollback:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
    5. Update postgresql on machines 6:
      > /opt/apigee/apigee-setup/bin/update.sh -c ps -f configFile
    6. Update the Postgres database on machine 6 (Postgres master only):
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    7. Update postgresql on machines 12:
      > /opt/apigee/apigee-setup/bin/update.sh -c ps -f configFile
    8. Start Postgres server server on machines 6 and 12:
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server start
    9. Start Qpid server server on machines 4, 5, 10, and 11:
      > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server start
    10. Configure Postgres as a standby node by running the following commands on machine 12:
      > cd /opt/apigee/data/apigee-postgresql/pgdata
      > rm -rf *
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f
      configFile
    11. Verify the replication status by issuing the following scripts on both servers. The system should display identical results on both servers to ensure a successful replication:
      On the machine 6, the master node, run:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master

      Validate that it says it is the master.

      On machine 12, the standby node:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby

      Validate that it says it is the standby.
  9. Update Edge components on machine 6 and 12:
    > /opt/apigee/apigee-setup/bin/update.sh -c edge -f configFile
  10. Ensure that you decommission the new standby node by using the procedure above in Decommissioning a Postgres node.

For a 7-host or 10-host API BaaS installation

For a non-standard installation

If you have a non-standard installation, then update Edge components in the following order:

  1. ZooKeeper
  2. Cassandra
  3. qpidd
  4. LDAP
  5. Edge, meaning the "-c edge" profile on all nodes in the order: nodes with Qpid server but not the Postgres server, Management Server, Message Processor, and Router.
    Note: If the node has both Qpid server and Postgres server installed, run the "-c edge" profile step as part of step 8.
  6. Edge UI
  7. postgresql on the Postgres master, including upgrade.
  8. postgresql on the Postgres standby.
  9. Edge, meaning the "-c edge" profile on all combined Qpid and Postgres nodes, or on any standalone Postgres nodes.